#36 Phase 1 Testing: init workspace — 生成 monorepo 骨架 #46

Closed
opened 2026-05-07 13:15:37 +00:00 by xingyue · 1 comment
Owner

验证目标

uncaged-workflow init workspace my-workflows 在当前目录下创建一个可用的 bun monorepo 骨架。

前置条件

cd ~/Code/workflow && bun install && bun run build

测试步骤

  • Step 1: CLI help 显示 init 子命令

    cd ~/Code/workflow && bun run packages/cli-workflow/src/cli.ts 2>&1
    

    预期: usage 输出中包含 init workspaceinit template

  • Step 2: 创建 workspace

    cd /tmp && rm -rf test-init && mkdir test-init && cd test-init
    bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init workspace my-workflows
    

    预期: 创建 my-workflows/ 目录,exit code 0

  • Step 3: 验证生成的文件结构

    cd /tmp/test-init/my-workflows
    ls -la package.json biome.json tsconfig.json AGENTS.md README.md
    ls -la workflows/package.json
    ls -d templates/
    

    预期: 所有文件和目录存在

  • Step 4: package.json 是合法的 bun workspace

    cd /tmp/test-init/my-workflows
    cat package.json | python3 -c "import sys,json; d=json.load(sys.stdin); assert d['workspaces'], 'no workspaces'; print('OK:', d['workspaces'])"
    

    预期: workspaces 包含 templates/*workflows

  • Step 5: bun install 成功

    cd /tmp/test-init/my-workflows && bun install
    

    预期: exit code 0,无错误

  • Step 6: workflows/package.json 有正确的 dependencies

    cat /tmp/test-init/my-workflows/workflows/package.json | python3 -c "
    import sys,json; d=json.load(sys.stdin)
    assert d.get('type') == 'module', 'not module'
    deps = d.get('dependencies', {})
    assert '@uncaged/workflow' in deps, 'missing @uncaged/workflow'
    assert 'zod' in deps, 'missing zod'
    print('OK')
    "
    

    预期: OK

  • Step 7: 重复创建报错

    cd /tmp/test-init && bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init workspace my-workflows 2>&1
    

    预期: 报错提示目录已存在,exit code 1

  • Step 8: 有对应的单元测试

    cd ~/Code/workflow && bun test packages/cli-workflow/__tests__/init 2>&1
    

    预期: 测试通过

验证完成标准

所有 checkbox 打勾
bun run check 无 lint 错误
既有测试不 break:bun test

Ref: #36

## 验证目标 `uncaged-workflow init workspace my-workflows` 在当前目录下创建一个可用的 bun monorepo 骨架。 ## 前置条件 ```bash cd ~/Code/workflow && bun install && bun run build ``` ## 测试步骤 - [ ] **Step 1: CLI help 显示 init 子命令** ```bash cd ~/Code/workflow && bun run packages/cli-workflow/src/cli.ts 2>&1 ``` **预期:** usage 输出中包含 `init workspace` 和 `init template` - [ ] **Step 2: 创建 workspace** ```bash cd /tmp && rm -rf test-init && mkdir test-init && cd test-init bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init workspace my-workflows ``` **预期:** 创建 `my-workflows/` 目录,exit code 0 - [ ] **Step 3: 验证生成的文件结构** ```bash cd /tmp/test-init/my-workflows ls -la package.json biome.json tsconfig.json AGENTS.md README.md ls -la workflows/package.json ls -d templates/ ``` **预期:** 所有文件和目录存在 - [ ] **Step 4: package.json 是合法的 bun workspace** ```bash cd /tmp/test-init/my-workflows cat package.json | python3 -c "import sys,json; d=json.load(sys.stdin); assert d['workspaces'], 'no workspaces'; print('OK:', d['workspaces'])" ``` **预期:** workspaces 包含 `templates/*` 和 `workflows` - [ ] **Step 5: bun install 成功** ```bash cd /tmp/test-init/my-workflows && bun install ``` **预期:** exit code 0,无错误 - [ ] **Step 6: workflows/package.json 有正确的 dependencies** ```bash cat /tmp/test-init/my-workflows/workflows/package.json | python3 -c " import sys,json; d=json.load(sys.stdin) assert d.get('type') == 'module', 'not module' deps = d.get('dependencies', {}) assert '@uncaged/workflow' in deps, 'missing @uncaged/workflow' assert 'zod' in deps, 'missing zod' print('OK') " ``` **预期:** OK - [ ] **Step 7: 重复创建报错** ```bash cd /tmp/test-init && bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init workspace my-workflows 2>&1 ``` **预期:** 报错提示目录已存在,exit code 1 - [ ] **Step 8: 有对应的单元测试** ```bash cd ~/Code/workflow && bun test packages/cli-workflow/__tests__/init 2>&1 ``` **预期:** 测试通过 ## 验证完成标准 ✅ 所有 checkbox 打勾 ✅ `bun run check` 无 lint 错误 ✅ 既有测试不 break:`bun test` Ref: #36
Author
Owner

#36 Phase 1 — init workspace

#36 Phase 1 — init workspace ✅
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#46