#36 Phase 2 Testing: init template — 创建 template package #47

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

验证目标

在已有 workspace 内执行 uncaged-workflow init template <name> 创建一个新的 template package,包含 roles/moderator/index boilerplate。

前置条件

Phase 1 通过,workspace 已创建。

测试步骤

  • Step 1: 创建 template

    cd /tmp/test-init/my-workflows
    bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init template review-pr
    

    预期: 创建 templates/review-pr/ 目录,exit code 0

  • Step 2: 验证文件结构

    cd /tmp/test-init/my-workflows/templates/review-pr
    ls -la package.json tsconfig.json src/roles.ts src/moderator.ts src/index.ts
    

    预期: 所有文件存在

  • Step 3: package.json 合法

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

    预期: OK,name 包含 review-pr

  • Step 4: TypeScript 编译通过

    cd /tmp/test-init/my-workflows && bun install
    cd templates/review-pr && bunx tsc --noEmit
    

    预期: 无 type 错误

  • Step 5: 生成的代码符合规范

    • roles.ts 使用 type 而非 interface
    • ?: optional properties
    • 使用 named exports
    • moderator 是 pure function
    cd /tmp/test-init/my-workflows/templates/review-pr
    # 检查无 interface
    ! grep -n 'interface ' src/*.ts
    # 检查无 ?:
    ! grep -n '?:' src/*.ts
    # 检查无 default export
    ! grep -n 'export default' src/*.ts
    

    预期: 所有 grep 命令无匹配(exit code 1)

  • Step 6: index.ts 导出 WorkflowDefinition

    grep -n 'WorkflowDefinition' /tmp/test-init/my-workflows/templates/review-pr/src/index.ts
    

    预期: 有 WorkflowDefinition 类型引用和导出

  • Step 7: 不在 workspace 目录下执行报错

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

    预期: 报错提示不在 workflow workspace 内,exit code 1

  • Step 8: 重复创建报错

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

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

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

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

    预期: 测试通过

验证完成标准

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

Ref: #36

## 验证目标 在已有 workspace 内执行 `uncaged-workflow init template <name>` 创建一个新的 template package,包含 roles/moderator/index boilerplate。 ## 前置条件 Phase 1 通过,workspace 已创建。 ## 测试步骤 - [ ] **Step 1: 创建 template** ```bash cd /tmp/test-init/my-workflows bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init template review-pr ``` **预期:** 创建 `templates/review-pr/` 目录,exit code 0 - [ ] **Step 2: 验证文件结构** ```bash cd /tmp/test-init/my-workflows/templates/review-pr ls -la package.json tsconfig.json src/roles.ts src/moderator.ts src/index.ts ``` **预期:** 所有文件存在 - [ ] **Step 3: package.json 合法** ```bash cat /tmp/test-init/my-workflows/templates/review-pr/package.json | python3 -c " import sys,json; d=json.load(sys.stdin) assert d.get('type') == 'module' assert '@uncaged/workflow' in d.get('dependencies', {}) assert 'zod' in d.get('dependencies', {}) print('OK:', d['name']) " ``` **预期:** OK,name 包含 review-pr - [ ] **Step 4: TypeScript 编译通过** ```bash cd /tmp/test-init/my-workflows && bun install cd templates/review-pr && bunx tsc --noEmit ``` **预期:** 无 type 错误 - [ ] **Step 5: 生成的代码符合规范** - roles.ts 使用 `type` 而非 `interface` - 无 `?:` optional properties - 使用 named exports - moderator 是 pure function ```bash cd /tmp/test-init/my-workflows/templates/review-pr # 检查无 interface ! grep -n 'interface ' src/*.ts # 检查无 ?: ! grep -n '?:' src/*.ts # 检查无 default export ! grep -n 'export default' src/*.ts ``` **预期:** 所有 grep 命令无匹配(exit code 1) - [ ] **Step 6: index.ts 导出 WorkflowDefinition** ```bash grep -n 'WorkflowDefinition' /tmp/test-init/my-workflows/templates/review-pr/src/index.ts ``` **预期:** 有 WorkflowDefinition 类型引用和导出 - [ ] **Step 7: 不在 workspace 目录下执行报错** ```bash cd /tmp && bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init template foo 2>&1 ``` **预期:** 报错提示不在 workflow workspace 内,exit code 1 - [ ] **Step 8: 重复创建报错** ```bash cd /tmp/test-init/my-workflows && bun run ~/Code/workflow/packages/cli-workflow/src/cli.ts init template review-pr 2>&1 ``` **预期:** 报错提示 template 已存在,exit code 1 - [ ] **Step 9: 有对应的单元测试** ```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 2 — init template

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

No dependencies set.

Reference: uncaged/workflow#47