| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { test } from 'node:test'
- import assert from 'node:assert/strict'
- import { run as impactRun } from '../../src/commands/impact.js'
- import { run as gotoRun } from '../../src/commands/goto-chapter.js'
- import { makeGitBook, chapter } from '../state-machine/_helper.js'
- test('impact 命令:输出影响分析 JSON', async () => {
- const { ctx, cleanup } = await makeGitBook({
- 'book.yaml': 'spec_version: "7.0"\n书名: 测\n已发布到章: 0\n',
- '定稿/正文/0001-起.md': chapter(1, '林晚得到玉佩。'),
- })
- try {
- const r = await impactRun(['玉佩'], {}, ctx)
- assert.equal(r.ok, true)
- const out = JSON.parse(r.output)
- assert.deepEqual(out.未发布, [1])
- } finally {
- await cleanup()
- }
- })
- test('goto-chapter 命令:不带 --confirm 只展示影响', async () => {
- const { ctx, cleanup } = await makeGitBook(
- { 'book.yaml': 'spec_version: "7.0"\n书名: 测\n' },
- {
- commits: [
- { message: 'ch(1): 起', files: { '定稿/正文/0001-起.md': chapter(1) } },
- { message: 'ch(2): 承', files: { '定稿/正文/0002-承.md': chapter(2) } },
- ],
- }
- )
- try {
- const r = await gotoRun(['1'], {}, ctx)
- assert.equal(r.ok, true)
- assert.match(r.output, /丢弃|ch\(2\)/)
- } finally {
- await cleanup()
- }
- })
- test('goto-chapter 命令:非数字章号 → ok=false', async () => {
- const { ctx, cleanup } = await makeGitBook({ 'book.yaml': '书名: 测\n' })
- try {
- const r = await gotoRun(['abc'], {}, ctx)
- assert.equal(r.ok, false)
- } finally {
- await cleanup()
- }
- })
|