@sk8metal/michi-cli 0.5.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/CHANGELOG.md +136 -1
  2. package/README.md +2 -1
  3. package/dist/scripts/config/config-schema.d.ts +35 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +56 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  8. package/dist/scripts/confluence-sync.js +15 -2
  9. package/dist/scripts/confluence-sync.js.map +1 -1
  10. package/dist/scripts/github-actions-client.d.ts +79 -0
  11. package/dist/scripts/github-actions-client.d.ts.map +1 -0
  12. package/dist/scripts/github-actions-client.js +182 -0
  13. package/dist/scripts/github-actions-client.js.map +1 -0
  14. package/dist/scripts/health-check-service.d.ts +46 -0
  15. package/dist/scripts/health-check-service.d.ts.map +1 -0
  16. package/dist/scripts/health-check-service.js +114 -0
  17. package/dist/scripts/health-check-service.js.map +1 -0
  18. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
  19. package/dist/scripts/markdown-to-confluence.js +25 -3
  20. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  21. package/dist/scripts/mermaid-converter.d.ts +24 -0
  22. package/dist/scripts/mermaid-converter.d.ts.map +1 -0
  23. package/dist/scripts/mermaid-converter.js +49 -0
  24. package/dist/scripts/mermaid-converter.js.map +1 -0
  25. package/dist/scripts/template/multi-repo-renderer.d.ts +67 -0
  26. package/dist/scripts/template/multi-repo-renderer.d.ts.map +1 -0
  27. package/dist/scripts/template/multi-repo-renderer.js +123 -0
  28. package/dist/scripts/template/multi-repo-renderer.js.map +1 -0
  29. package/dist/scripts/template/renderer.d.ts +4 -0
  30. package/dist/scripts/template/renderer.d.ts.map +1 -1
  31. package/dist/scripts/template/renderer.js.map +1 -1
  32. package/dist/scripts/test-execution-generator.d.ts.map +1 -1
  33. package/dist/scripts/test-execution-generator.js +94 -11
  34. package/dist/scripts/test-execution-generator.js.map +1 -1
  35. package/dist/scripts/test-script-runner.d.ts +33 -0
  36. package/dist/scripts/test-script-runner.d.ts.map +1 -0
  37. package/dist/scripts/test-script-runner.js +77 -0
  38. package/dist/scripts/test-script-runner.js.map +1 -0
  39. package/dist/scripts/utils/config-loader.d.ts +21 -1
  40. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  41. package/dist/scripts/utils/config-loader.js +149 -3
  42. package/dist/scripts/utils/config-loader.js.map +1 -1
  43. package/dist/scripts/utils/multi-repo-validator.d.ts +30 -0
  44. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -0
  45. package/dist/scripts/utils/multi-repo-validator.js +105 -0
  46. package/dist/scripts/utils/multi-repo-validator.js.map +1 -0
  47. package/dist/scripts/utils/spec-archiver.d.ts +38 -0
  48. package/dist/scripts/utils/spec-archiver.d.ts.map +1 -0
  49. package/dist/scripts/utils/spec-archiver.js +210 -0
  50. package/dist/scripts/utils/spec-archiver.js.map +1 -0
  51. package/dist/scripts/utils/spec-updater.d.ts +4 -0
  52. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  53. package/dist/scripts/utils/spec-updater.js.map +1 -1
  54. package/dist/src/cli.d.ts.map +1 -1
  55. package/dist/src/cli.js +262 -14
  56. package/dist/src/cli.js.map +1 -1
  57. package/dist/src/commands/multi-repo-add-repo.d.ts +26 -0
  58. package/dist/src/commands/multi-repo-add-repo.d.ts.map +1 -0
  59. package/dist/src/commands/multi-repo-add-repo.js +56 -0
  60. package/dist/src/commands/multi-repo-add-repo.js.map +1 -0
  61. package/dist/src/commands/multi-repo-ci-status.d.ts +46 -0
  62. package/dist/src/commands/multi-repo-ci-status.d.ts.map +1 -0
  63. package/dist/src/commands/multi-repo-ci-status.js +285 -0
  64. package/dist/src/commands/multi-repo-ci-status.js.map +1 -0
  65. package/dist/src/commands/multi-repo-confluence-sync.d.ts +45 -0
  66. package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +1 -0
  67. package/dist/src/commands/multi-repo-confluence-sync.js +135 -0
  68. package/dist/src/commands/multi-repo-confluence-sync.js.map +1 -0
  69. package/dist/src/commands/multi-repo-init.d.ts +26 -0
  70. package/dist/src/commands/multi-repo-init.d.ts.map +1 -0
  71. package/dist/src/commands/multi-repo-init.js +101 -0
  72. package/dist/src/commands/multi-repo-init.js.map +1 -0
  73. package/dist/src/commands/multi-repo-list.d.ts +28 -0
  74. package/dist/src/commands/multi-repo-list.d.ts.map +1 -0
  75. package/dist/src/commands/multi-repo-list.js +38 -0
  76. package/dist/src/commands/multi-repo-list.js.map +1 -0
  77. package/dist/src/commands/multi-repo-test.d.ts +56 -0
  78. package/dist/src/commands/multi-repo-test.d.ts.map +1 -0
  79. package/dist/src/commands/multi-repo-test.js +70 -0
  80. package/dist/src/commands/multi-repo-test.js.map +1 -0
  81. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  82. package/dist/src/commands/setup-existing.js +30 -8
  83. package/dist/src/commands/setup-existing.js.map +1 -1
  84. package/dist/src/commands/spec-archive.d.ts +17 -0
  85. package/dist/src/commands/spec-archive.d.ts.map +1 -0
  86. package/dist/src/commands/spec-archive.js +40 -0
  87. package/dist/src/commands/spec-archive.js.map +1 -0
  88. package/dist/src/commands/spec-list.d.ts +15 -0
  89. package/dist/src/commands/spec-list.d.ts.map +1 -0
  90. package/dist/src/commands/spec-list.js +55 -0
  91. package/dist/src/commands/spec-list.js.map +1 -0
  92. package/docs/user-guide/guides/multi-repo-guide.md +591 -0
  93. package/docs/user-guide/guides/multi-repo-migration-guide.md +516 -0
  94. package/docs/user-guide/reference/multi-repo-api.md +771 -0
  95. package/docs/user-guide/reference/quick-reference.md +22 -37
  96. package/package.json +1 -4
  97. package/scripts/__tests__/config-loader-multi-repo.test.ts +342 -0
  98. package/scripts/__tests__/github-actions-client.test.ts +543 -0
  99. package/scripts/__tests__/health-check-service.test.ts +142 -0
  100. package/scripts/__tests__/markdown-to-confluence.test.ts +262 -0
  101. package/scripts/__tests__/mermaid-converter.test.ts +236 -0
  102. package/scripts/__tests__/multi-repo-config-schema.test.ts +335 -0
  103. package/scripts/__tests__/multi-repo-validator.test.ts +524 -0
  104. package/scripts/__tests__/spec-archiver.test.ts +512 -0
  105. package/scripts/__tests__/test-script-runner.test.ts +217 -0
  106. package/scripts/config/config-schema.ts +64 -0
  107. package/scripts/confluence-sync.ts +16 -2
  108. package/scripts/github-actions-client.ts +258 -0
  109. package/scripts/health-check-service.ts +171 -0
  110. package/scripts/markdown-to-confluence.ts +37 -6
  111. package/scripts/mermaid-converter.ts +56 -0
  112. package/scripts/template/__tests__/multi-repo-renderer.test.ts +261 -0
  113. package/scripts/template/multi-repo-renderer.ts +172 -0
  114. package/scripts/template/renderer.ts +5 -0
  115. package/scripts/test-execution-generator.ts +104 -11
  116. package/scripts/test-script-runner.ts +130 -0
  117. package/scripts/utils/__tests__/config-validator.test.ts +104 -6
  118. package/scripts/utils/__tests__/multi-repo-validator.test.ts +335 -0
  119. package/scripts/utils/config-loader.ts +197 -3
  120. package/scripts/utils/multi-repo-validator.ts +141 -0
  121. package/scripts/utils/spec-archiver.ts +260 -0
  122. package/scripts/utils/spec-updater.ts +4 -0
  123. package/templates/claude/agents/pr-size-monitor/AGENT.md +330 -0
  124. package/templates/claude/commands/michi/spec-impl.md +208 -35
  125. package/templates/claude-agent/agents/doc-reviewer.md +176 -0
  126. package/templates/claude-agent/rules/doc-review-rules.md +98 -0
  127. package/templates/claude-agent/rules/doc-review.md +91 -0
  128. package/templates/multi-repo/docs/ci-status.md +51 -0
  129. package/templates/multi-repo/docs/release-notes.md +99 -0
  130. package/templates/multi-repo/overview/architecture.md +102 -0
  131. package/templates/multi-repo/overview/requirements.md +68 -0
  132. package/templates/multi-repo/overview/sequence.md +79 -0
  133. package/templates/multi-repo/steering/multi-repo.md +74 -0
  134. package/templates/multi-repo/tests/strategy.md +89 -0
  135. package/dist/scripts/__tests__/create-project.test.d.ts +0 -2
  136. package/dist/scripts/__tests__/create-project.test.d.ts.map +0 -1
  137. package/dist/scripts/__tests__/create-project.test.js +0 -243
  138. package/dist/scripts/__tests__/create-project.test.js.map +0 -1
  139. package/dist/scripts/__tests__/jira-transitions.test.d.ts +0 -5
  140. package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +0 -1
  141. package/dist/scripts/__tests__/jira-transitions.test.js +0 -172
  142. package/dist/scripts/__tests__/jira-transitions.test.js.map +0 -1
  143. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts +0 -2
  144. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts.map +0 -1
  145. package/dist/scripts/__tests__/multi-project-estimate.test.js +0 -118
  146. package/dist/scripts/__tests__/multi-project-estimate.test.js.map +0 -1
  147. package/dist/scripts/__tests__/setup-existing-project.test.d.ts +0 -2
  148. package/dist/scripts/__tests__/setup-existing-project.test.d.ts.map +0 -1
  149. package/dist/scripts/__tests__/setup-existing-project.test.js +0 -208
  150. package/dist/scripts/__tests__/setup-existing-project.test.js.map +0 -1
  151. package/dist/scripts/__tests__/setup-interactive.test.d.ts +0 -2
  152. package/dist/scripts/__tests__/setup-interactive.test.d.ts.map +0 -1
  153. package/dist/scripts/__tests__/setup-interactive.test.js +0 -166
  154. package/dist/scripts/__tests__/setup-interactive.test.js.map +0 -1
  155. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +0 -5
  156. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +0 -1
  157. package/dist/scripts/__tests__/spec-impl-workflow.test.js +0 -323
  158. package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +0 -1
  159. package/dist/scripts/__tests__/spec-loader.test.d.ts +0 -5
  160. package/dist/scripts/__tests__/spec-loader.test.d.ts.map +0 -1
  161. package/dist/scripts/__tests__/spec-loader.test.js +0 -153
  162. package/dist/scripts/__tests__/spec-loader.test.js.map +0 -1
  163. package/dist/scripts/__tests__/validate-phase.test.d.ts +0 -5
  164. package/dist/scripts/__tests__/validate-phase.test.d.ts.map +0 -1
  165. package/dist/scripts/__tests__/validate-phase.test.js +0 -249
  166. package/dist/scripts/__tests__/validate-phase.test.js.map +0 -1
  167. package/dist/scripts/constants/__tests__/environments.test.d.ts +0 -2
  168. package/dist/scripts/constants/__tests__/environments.test.d.ts.map +0 -1
  169. package/dist/scripts/constants/__tests__/environments.test.js +0 -125
  170. package/dist/scripts/constants/__tests__/environments.test.js.map +0 -1
  171. package/dist/scripts/constants/__tests__/languages.test.d.ts +0 -2
  172. package/dist/scripts/constants/__tests__/languages.test.d.ts.map +0 -1
  173. package/dist/scripts/constants/__tests__/languages.test.js +0 -82
  174. package/dist/scripts/constants/__tests__/languages.test.js.map +0 -1
  175. package/dist/scripts/create-project.d.ts +0 -16
  176. package/dist/scripts/create-project.d.ts.map +0 -1
  177. package/dist/scripts/create-project.js +0 -334
  178. package/dist/scripts/create-project.js.map +0 -1
  179. package/dist/scripts/list-projects.d.ts +0 -7
  180. package/dist/scripts/list-projects.d.ts.map +0 -1
  181. package/dist/scripts/list-projects.js +0 -88
  182. package/dist/scripts/list-projects.js.map +0 -1
  183. package/dist/scripts/template/__tests__/renderer.test.d.ts +0 -2
  184. package/dist/scripts/template/__tests__/renderer.test.d.ts.map +0 -1
  185. package/dist/scripts/template/__tests__/renderer.test.js +0 -165
  186. package/dist/scripts/template/__tests__/renderer.test.js.map +0 -1
  187. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +0 -5
  188. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +0 -1
  189. package/dist/scripts/utils/__tests__/aidlc-parser.test.js +0 -315
  190. package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +0 -1
  191. package/dist/scripts/utils/__tests__/business-days.test.d.ts +0 -5
  192. package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +0 -1
  193. package/dist/scripts/utils/__tests__/business-days.test.js +0 -171
  194. package/dist/scripts/utils/__tests__/business-days.test.js.map +0 -1
  195. package/dist/scripts/utils/__tests__/config-loader.test.d.ts +0 -5
  196. package/dist/scripts/utils/__tests__/config-loader.test.d.ts.map +0 -1
  197. package/dist/scripts/utils/__tests__/config-loader.test.js +0 -314
  198. package/dist/scripts/utils/__tests__/config-loader.test.js.map +0 -1
  199. package/dist/scripts/utils/__tests__/config-validator.test.d.ts +0 -5
  200. package/dist/scripts/utils/__tests__/config-validator.test.d.ts.map +0 -1
  201. package/dist/scripts/utils/__tests__/config-validator.test.js +0 -396
  202. package/dist/scripts/utils/__tests__/config-validator.test.js.map +0 -1
  203. package/dist/scripts/utils/__tests__/env-config.test.d.ts +0 -5
  204. package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +0 -1
  205. package/dist/scripts/utils/__tests__/env-config.test.js +0 -216
  206. package/dist/scripts/utils/__tests__/env-config.test.js.map +0 -1
  207. package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts +0 -5
  208. package/dist/scripts/utils/__tests__/feature-name-validator.test.d.ts.map +0 -1
  209. package/dist/scripts/utils/__tests__/feature-name-validator.test.js +0 -106
  210. package/dist/scripts/utils/__tests__/feature-name-validator.test.js.map +0 -1
  211. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +0 -5
  212. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +0 -1
  213. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +0 -202
  214. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +0 -1
  215. package/dist/scripts/utils/__tests__/project-meta.test.d.ts +0 -6
  216. package/dist/scripts/utils/__tests__/project-meta.test.d.ts.map +0 -1
  217. package/dist/scripts/utils/__tests__/project-meta.test.js +0 -154
  218. package/dist/scripts/utils/__tests__/project-meta.test.js.map +0 -1
  219. package/dist/scripts/utils/__tests__/security-validator.test.d.ts +0 -6
  220. package/dist/scripts/utils/__tests__/security-validator.test.d.ts.map +0 -1
  221. package/dist/scripts/utils/__tests__/security-validator.test.js +0 -219
  222. package/dist/scripts/utils/__tests__/security-validator.test.js.map +0 -1
  223. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts +0 -5
  224. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts.map +0 -1
  225. package/dist/scripts/utils/__tests__/spec-updater.test.js +0 -158
  226. package/dist/scripts/utils/__tests__/spec-updater.test.js.map +0 -1
  227. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +0 -5
  228. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +0 -1
  229. package/dist/scripts/utils/__tests__/tasks-converter.test.js +0 -500
  230. package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +0 -1
  231. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +0 -5
  232. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +0 -1
  233. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +0 -314
  234. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +0 -1
  235. package/dist/scripts/utils/__tests__/test-runner.test.d.ts +0 -5
  236. package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +0 -1
  237. package/dist/scripts/utils/__tests__/test-runner.test.js +0 -64
  238. package/dist/scripts/utils/__tests__/test-runner.test.js.map +0 -1
  239. package/dist/src/__tests__/cli.test.d.ts +0 -5
  240. package/dist/src/__tests__/cli.test.d.ts.map +0 -1
  241. package/dist/src/__tests__/cli.test.js +0 -58
  242. package/dist/src/__tests__/cli.test.js.map +0 -1
  243. package/dist/src/__tests__/integration/internationalization.test.d.ts +0 -8
  244. package/dist/src/__tests__/integration/internationalization.test.d.ts.map +0 -1
  245. package/dist/src/__tests__/integration/internationalization.test.js +0 -333
  246. package/dist/src/__tests__/integration/internationalization.test.js.map +0 -1
  247. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +0 -5
  248. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +0 -1
  249. package/dist/src/__tests__/integration/setup/claude-agent.test.js +0 -122
  250. package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +0 -1
  251. package/dist/src/__tests__/integration/setup/claude.test.d.ts +0 -5
  252. package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +0 -1
  253. package/dist/src/__tests__/integration/setup/claude.test.js +0 -193
  254. package/dist/src/__tests__/integration/setup/claude.test.js.map +0 -1
  255. package/dist/src/__tests__/integration/setup/cursor.test.d.ts +0 -5
  256. package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +0 -1
  257. package/dist/src/__tests__/integration/setup/cursor.test.js +0 -166
  258. package/dist/src/__tests__/integration/setup/cursor.test.js.map +0 -1
  259. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +0 -32
  260. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +0 -1
  261. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +0 -72
  262. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +0 -1
  263. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +0 -38
  264. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +0 -1
  265. package/dist/src/__tests__/integration/setup/helpers/test-project.js +0 -83
  266. package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +0 -1
  267. package/dist/src/__tests__/integration/setup/init.test.d.ts +0 -5
  268. package/dist/src/__tests__/integration/setup/init.test.d.ts.map +0 -1
  269. package/dist/src/__tests__/integration/setup/init.test.js +0 -352
  270. package/dist/src/__tests__/integration/setup/init.test.js.map +0 -1
  271. package/dist/src/__tests__/integration/setup/validation.test.d.ts +0 -5
  272. package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +0 -1
  273. package/dist/src/__tests__/integration/setup/validation.test.js +0 -301
  274. package/dist/src/__tests__/integration/setup/validation.test.js.map +0 -1
  275. package/dist/src/commands/__tests__/init.test.d.ts +0 -5
  276. package/dist/src/commands/__tests__/init.test.d.ts.map +0 -1
  277. package/dist/src/commands/__tests__/init.test.js +0 -255
  278. package/dist/src/commands/__tests__/init.test.js.map +0 -1
  279. package/dist/src/commands/__tests__/migrate.test.d.ts +0 -5
  280. package/dist/src/commands/__tests__/migrate.test.d.ts.map +0 -1
  281. package/dist/src/commands/__tests__/migrate.test.js +0 -216
  282. package/dist/src/commands/__tests__/migrate.test.js.map +0 -1
  283. package/scripts/create-project.ts +0 -386
  284. package/scripts/list-projects.ts +0 -112
@@ -1,193 +0,0 @@
1
- /**
2
- * Integration tests for Claude environment setup
3
- */
4
- import { describe, it, beforeEach, afterEach, vi } from 'vitest';
5
- import { join } from 'path';
6
- import { setupExisting } from '../../../commands/setup-existing.js';
7
- import { createTestProject } from './helpers/test-project.js';
8
- import { assertDirectoryExists, assertFileExists, assertDirectoryStructure, assertFileContains } from './helpers/fs-assertions.js';
9
- // Mock readline to auto-confirm prompts
10
- vi.mock('readline', () => ({
11
- createInterface: () => ({
12
- question: (question, callback) => {
13
- callback('y'); // Auto-confirm
14
- },
15
- close: () => { },
16
- }),
17
- }));
18
- describe('Claude Environment Setup', () => {
19
- let testProject;
20
- let originalCwd;
21
- beforeEach(() => {
22
- originalCwd = process.cwd();
23
- testProject = createTestProject({ name: 'claude-test' });
24
- process.chdir(testProject.path);
25
- });
26
- afterEach(() => {
27
- process.chdir(originalCwd);
28
- testProject.destroy();
29
- });
30
- describe('Basic Setup', () => {
31
- it('should create .claude/rules directory', async () => {
32
- await setupExisting({
33
- claude: true,
34
- projectName: 'Test Project',
35
- jiraKey: 'TEST'
36
- });
37
- assertDirectoryExists(join(testProject.path, '.claude'));
38
- assertDirectoryExists(join(testProject.path, '.claude/rules'));
39
- });
40
- it('should create .kiro directory structure', async () => {
41
- await setupExisting({
42
- claude: true,
43
- projectName: 'Test Project',
44
- jiraKey: 'TEST'
45
- });
46
- assertDirectoryStructure(testProject.path, {
47
- '.kiro': 'dir',
48
- '.kiro/settings': 'dir',
49
- '.kiro/settings/templates': 'dir',
50
- '.kiro/steering': 'dir',
51
- '.kiro/specs': 'dir',
52
- });
53
- });
54
- it('should create project.json with correct metadata', async () => {
55
- await setupExisting({
56
- claude: true,
57
- projectName: 'Claude Test',
58
- jiraKey: 'CLAU'
59
- });
60
- const projectJsonPath = join(testProject.path, '.kiro/project.json');
61
- assertFileExists(projectJsonPath);
62
- assertFileContains(projectJsonPath, '"projectName": "Claude Test"');
63
- assertFileContains(projectJsonPath, '"jiraProjectKey": "CLAU"');
64
- });
65
- it('should create .env template', async () => {
66
- await setupExisting({
67
- claude: true,
68
- projectName: 'Test Project',
69
- jiraKey: 'TEST'
70
- });
71
- const envPath = join(testProject.path, '.env');
72
- assertFileExists(envPath);
73
- assertFileContains(envPath, 'JIRA_PROJECT_KEYS=TEST');
74
- });
75
- });
76
- describe('Claude-specific Structure', () => {
77
- it('should have Claude-specific rules structure', async () => {
78
- await setupExisting({
79
- claude: true,
80
- projectName: 'Test Project',
81
- jiraKey: 'TEST'
82
- });
83
- const rulesDir = join(testProject.path, '.claude/rules');
84
- assertDirectoryExists(rulesDir);
85
- });
86
- it('should not create Cursor-specific directories', async () => {
87
- await setupExisting({
88
- claude: true,
89
- projectName: 'Test Project',
90
- jiraKey: 'TEST'
91
- });
92
- const { existsSync } = await import('fs');
93
- const cursorDir = join(testProject.path, '.cursor');
94
- // .cursor directory should not exist for Claude setup
95
- expect(existsSync(cursorDir)).toBe(false);
96
- });
97
- });
98
- describe('Language Support', () => {
99
- it('should support multiple languages', async () => {
100
- await setupExisting({
101
- claude: true,
102
- lang: 'en',
103
- projectName: 'Test Project',
104
- jiraKey: 'TEST'
105
- });
106
- const projectJson = join(testProject.path, '.kiro/project.json');
107
- assertFileContains(projectJson, '"language": "en"');
108
- });
109
- });
110
- describe('Agent Skills Installation', () => {
111
- let originalHome;
112
- let tempHome;
113
- beforeEach(() => {
114
- // Mock HOME environment variable to use a temp directory
115
- originalHome = process.env.HOME;
116
- tempHome = join(testProject.path, '.test-home');
117
- process.env.HOME = tempHome;
118
- });
119
- afterEach(() => {
120
- // Restore original HOME
121
- if (originalHome !== undefined) {
122
- process.env.HOME = originalHome;
123
- }
124
- else {
125
- delete process.env.HOME;
126
- }
127
- });
128
- it('should install skills and agents by default', async () => {
129
- await setupExisting({
130
- claude: true,
131
- projectName: 'Test Project',
132
- jiraKey: 'TEST'
133
- // agentSkills: true (default)
134
- });
135
- // Verify skills directory
136
- const skillsDir = join(tempHome, '.claude/skills');
137
- assertDirectoryExists(skillsDir);
138
- assertDirectoryExists(join(skillsDir, 'design-review'));
139
- assertDirectoryExists(join(skillsDir, 'e2e-first-planning'));
140
- assertDirectoryExists(join(skillsDir, 'oss-license'));
141
- assertDirectoryExists(join(skillsDir, 'stable-version'));
142
- // Verify skill files
143
- assertFileExists(join(skillsDir, 'design-review/SKILL.md'));
144
- assertFileExists(join(skillsDir, 'e2e-first-planning/SKILL.md'));
145
- assertFileExists(join(skillsDir, 'oss-license/SKILL.md'));
146
- assertFileExists(join(skillsDir, 'stable-version/SKILL.md'));
147
- // Verify agents directory
148
- const agentsDir = join(tempHome, '.claude/agents');
149
- assertDirectoryExists(agentsDir);
150
- assertDirectoryExists(join(agentsDir, 'design-reviewer'));
151
- assertDirectoryExists(join(agentsDir, 'e2e-first-planner'));
152
- assertDirectoryExists(join(agentsDir, 'oss-license-checker'));
153
- assertDirectoryExists(join(agentsDir, 'pr-resolver'));
154
- assertDirectoryExists(join(agentsDir, 'stable-version-auditor'));
155
- // Verify agent files
156
- assertFileExists(join(agentsDir, 'design-reviewer/AGENT.md'));
157
- assertFileExists(join(agentsDir, 'e2e-first-planner/AGENT.md'));
158
- assertFileExists(join(agentsDir, 'oss-license-checker/AGENT.md'));
159
- assertFileExists(join(agentsDir, 'pr-resolver/AGENT.md'));
160
- assertFileExists(join(agentsDir, 'stable-version-auditor/AGENT.md'));
161
- });
162
- it('should not install skills and agents when --no-agent-skills is specified', async () => {
163
- await setupExisting({
164
- claude: true,
165
- projectName: 'Test Project',
166
- jiraKey: 'TEST',
167
- agentSkills: false // --no-agent-skills
168
- });
169
- const { existsSync } = await import('fs');
170
- const skillsDir = join(tempHome, '.claude/skills');
171
- const agentsDir = join(tempHome, '.claude/agents');
172
- // Skills and agents should not be installed
173
- expect(existsSync(skillsDir)).toBe(false);
174
- expect(existsSync(agentsDir)).toBe(false);
175
- });
176
- it('should verify PROACTIVELY keyword in agent descriptions', async () => {
177
- await setupExisting({
178
- claude: true,
179
- projectName: 'Test Project',
180
- jiraKey: 'TEST'
181
- // agentSkills: true (default)
182
- });
183
- const agentsDir = join(tempHome, '.claude/agents');
184
- // Check each agent has PROACTIVELY in description
185
- assertFileContains(join(agentsDir, 'design-reviewer/AGENT.md'), 'PROACTIVELY');
186
- assertFileContains(join(agentsDir, 'e2e-first-planner/AGENT.md'), 'PROACTIVELY');
187
- assertFileContains(join(agentsDir, 'oss-license-checker/AGENT.md'), 'PROACTIVELY');
188
- assertFileContains(join(agentsDir, 'pr-resolver/AGENT.md'), 'PROACTIVELY');
189
- assertFileContains(join(agentsDir, 'stable-version-auditor/AGENT.md'), 'PROACTIVELY');
190
- });
191
- });
192
- });
193
- //# sourceMappingURL=claude.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/integration/setup/claude.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Integration tests for Cursor environment setup
3
- */
4
- export {};
5
- //# sourceMappingURL=cursor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.test.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/integration/setup/cursor.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,166 +0,0 @@
1
- /**
2
- * Integration tests for Cursor environment setup
3
- */
4
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
5
- import { join } from 'path';
6
- import { setupExisting } from '../../../commands/setup-existing.js';
7
- import { createTestProject } from './helpers/test-project.js';
8
- import { assertDirectoryExists, assertFileExists, assertDirectoryStructure, assertFileContains, } from './helpers/fs-assertions.js';
9
- // Mock readline to auto-confirm prompts
10
- vi.mock('readline', () => ({
11
- createInterface: () => ({
12
- question: (question, callback) => {
13
- callback('y'); // Auto-confirm
14
- },
15
- close: () => { },
16
- }),
17
- }));
18
- describe('Cursor Environment Setup', () => {
19
- let testProject;
20
- let originalCwd;
21
- beforeEach(() => {
22
- originalCwd = process.cwd();
23
- testProject = createTestProject({ name: 'cursor-test' });
24
- process.chdir(testProject.path);
25
- });
26
- afterEach(() => {
27
- process.chdir(originalCwd);
28
- testProject.destroy();
29
- });
30
- describe('Basic Setup', () => {
31
- it('should create .cursor/rules directory', async () => {
32
- await setupExisting({
33
- cursor: true,
34
- projectName: 'Test Project',
35
- jiraKey: 'TEST',
36
- });
37
- // Assert directory structure
38
- assertDirectoryExists(join(testProject.path, '.cursor'));
39
- assertDirectoryExists(join(testProject.path, '.cursor/rules'));
40
- assertDirectoryExists(join(testProject.path, '.cursor/commands'));
41
- });
42
- it('should create .kiro directory structure', async () => {
43
- await setupExisting({
44
- cursor: true,
45
- projectName: 'Test Project',
46
- jiraKey: 'TEST',
47
- });
48
- assertDirectoryStructure(testProject.path, {
49
- '.kiro': 'dir',
50
- '.kiro/settings': 'dir',
51
- '.kiro/settings/templates': 'dir',
52
- '.kiro/steering': 'dir',
53
- '.kiro/specs': 'dir',
54
- });
55
- });
56
- it('should create project.json with correct metadata', async () => {
57
- await setupExisting({
58
- cursor: true,
59
- projectName: 'Test Project',
60
- jiraKey: 'TEST',
61
- });
62
- const projectJsonPath = join(testProject.path, '.kiro/project.json');
63
- assertFileExists(projectJsonPath);
64
- assertFileContains(projectJsonPath, '"projectName": "Test Project"');
65
- assertFileContains(projectJsonPath, '"jiraProjectKey": "TEST"');
66
- assertFileContains(projectJsonPath, '"language": "ja"');
67
- });
68
- it('should create .env template', async () => {
69
- await setupExisting({
70
- cursor: true,
71
- projectName: 'Test Project',
72
- jiraKey: 'TEST',
73
- });
74
- const envPath = join(testProject.path, '.env');
75
- assertFileExists(envPath);
76
- assertFileContains(envPath, 'ATLASSIAN_URL=');
77
- assertFileContains(envPath, 'JIRA_PROJECT_KEYS=TEST');
78
- });
79
- });
80
- describe('Template Rendering', () => {
81
- it('should render templates with correct placeholders', async () => {
82
- await setupExisting({
83
- cursor: true,
84
- lang: 'ja',
85
- projectName: 'Test Project',
86
- jiraKey: 'TEST',
87
- });
88
- // Check if rules contain language-specific content
89
- const rulesDir = join(testProject.path, '.cursor/rules');
90
- assertDirectoryExists(rulesDir);
91
- // Note: Actual file checks depend on template content
92
- // This is a placeholder for template verification
93
- });
94
- });
95
- describe('Language Support', () => {
96
- it('should support Japanese language (default)', async () => {
97
- await setupExisting({
98
- cursor: true,
99
- projectName: 'テストプロジェクト',
100
- jiraKey: 'TEST',
101
- });
102
- const projectJson = join(testProject.path, '.kiro/project.json');
103
- assertFileContains(projectJson, '"language": "ja"');
104
- });
105
- it('should support English language', async () => {
106
- await setupExisting({
107
- cursor: true,
108
- lang: 'en',
109
- projectName: 'Test Project',
110
- jiraKey: 'TEST',
111
- });
112
- const projectJson = join(testProject.path, '.kiro/project.json');
113
- assertFileContains(projectJson, '"language": "en"');
114
- });
115
- });
116
- describe('Git Integration', () => {
117
- it('should detect Git remote URL', async () => {
118
- await setupExisting({
119
- cursor: true,
120
- projectName: 'Test Project',
121
- jiraKey: 'TEST',
122
- });
123
- const projectJson = join(testProject.path, '.kiro/project.json');
124
- assertFileContains(projectJson, /repository.*github\.com/);
125
- });
126
- it('should handle missing Git remote gracefully', async () => {
127
- // Remove git remote
128
- const { execSync } = await import('child_process');
129
- try {
130
- execSync('git remote remove origin', {
131
- cwd: testProject.path,
132
- stdio: 'ignore',
133
- });
134
- }
135
- catch {
136
- // Ignore if remote doesn't exist
137
- }
138
- await setupExisting({
139
- cursor: true,
140
- projectName: 'Test Project',
141
- jiraKey: 'TEST',
142
- });
143
- const projectJson = join(testProject.path, '.kiro/project.json');
144
- assertFileExists(projectJson);
145
- // Should have placeholder URL
146
- assertFileContains(projectJson, /"repository":/);
147
- });
148
- });
149
- describe('Error Handling', () => {
150
- it('should show warning if not in Git repository', async () => {
151
- // Remove .git directory
152
- const { rmSync } = await import('fs');
153
- const gitPath = join(testProject.path, '.git');
154
- rmSync(gitPath, { recursive: true, force: true });
155
- // Should not throw, but continue with warning
156
- await setupExisting({
157
- cursor: true,
158
- projectName: 'Test Project',
159
- jiraKey: 'TEST',
160
- });
161
- // If we reach here, the test passes
162
- expect(true).toBe(true);
163
- });
164
- });
165
- });
166
- //# sourceMappingURL=cursor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/integration/setup/cursor.test.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * File system assertion helpers for tests
3
- */
4
- /**
5
- * Assert that a file exists
6
- */
7
- export declare function assertFileExists(filePath: string, message?: string): void;
8
- /**
9
- * Assert that a file does not exist
10
- */
11
- export declare function assertFileNotExists(filePath: string, message?: string): void;
12
- /**
13
- * Assert that a directory exists
14
- */
15
- export declare function assertDirectoryExists(dirPath: string, message?: string): void;
16
- /**
17
- * Assert that a directory does not exist
18
- */
19
- export declare function assertDirectoryNotExists(dirPath: string, message?: string): void;
20
- /**
21
- * Assert that a directory contains specific files
22
- */
23
- export declare function assertDirectoryContains(dirPath: string, expectedFiles: string[], message?: string): void;
24
- /**
25
- * Assert that a file contains specific content
26
- */
27
- export declare function assertFileContains(filePath: string, expectedContent: string | RegExp, message?: string): void;
28
- /**
29
- * Assert directory structure matches expected structure
30
- */
31
- export declare function assertDirectoryStructure(basePath: string, expectedStructure: Record<string, 'file' | 'dir'>): void;
32
- //# sourceMappingURL=fs-assertions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-assertions.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/integration/setup/helpers/fs-assertions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAK5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAW7E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAKhF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,GAChD,IAAI,CAUN"}
@@ -1,72 +0,0 @@
1
- /**
2
- * File system assertion helpers for tests
3
- */
4
- import { existsSync, statSync, readdirSync, readFileSync } from 'fs';
5
- import { join } from 'path';
6
- import { expect } from 'vitest';
7
- /**
8
- * Assert that a file exists
9
- */
10
- export function assertFileExists(filePath, message) {
11
- expect(existsSync(filePath), message || `Expected file to exist: ${filePath}`).toBe(true);
12
- }
13
- /**
14
- * Assert that a file does not exist
15
- */
16
- export function assertFileNotExists(filePath, message) {
17
- expect(existsSync(filePath), message || `Expected file to not exist: ${filePath}`).toBe(false);
18
- }
19
- /**
20
- * Assert that a directory exists
21
- */
22
- export function assertDirectoryExists(dirPath, message) {
23
- const exists = existsSync(dirPath);
24
- expect(exists, message || `Expected directory to exist: ${dirPath}`).toBe(true);
25
- if (exists) {
26
- const stats = statSync(dirPath);
27
- expect(stats.isDirectory(), `Expected ${dirPath} to be a directory`).toBe(true);
28
- }
29
- }
30
- /**
31
- * Assert that a directory does not exist
32
- */
33
- export function assertDirectoryNotExists(dirPath, message) {
34
- expect(existsSync(dirPath), message || `Expected directory to not exist: ${dirPath}`).toBe(false);
35
- }
36
- /**
37
- * Assert that a directory contains specific files
38
- */
39
- export function assertDirectoryContains(dirPath, expectedFiles, message) {
40
- assertDirectoryExists(dirPath);
41
- const files = readdirSync(dirPath);
42
- const missingFiles = expectedFiles.filter(f => !files.includes(f));
43
- expect(missingFiles, message || `Expected directory ${dirPath} to contain files: ${expectedFiles.join(', ')}`).toEqual([]);
44
- }
45
- /**
46
- * Assert that a file contains specific content
47
- */
48
- export function assertFileContains(filePath, expectedContent, message) {
49
- assertFileExists(filePath);
50
- const content = readFileSync(filePath, 'utf-8');
51
- if (typeof expectedContent === 'string') {
52
- expect(content.includes(expectedContent), message || `Expected file ${filePath} to contain: ${expectedContent}`).toBe(true);
53
- }
54
- else {
55
- expect(expectedContent.test(content), message || `Expected file ${filePath} to match pattern: ${expectedContent}`).toBe(true);
56
- }
57
- }
58
- /**
59
- * Assert directory structure matches expected structure
60
- */
61
- export function assertDirectoryStructure(basePath, expectedStructure) {
62
- for (const [path, type] of Object.entries(expectedStructure)) {
63
- const fullPath = join(basePath, path);
64
- if (type === 'file') {
65
- assertFileExists(fullPath, `Expected file at ${path}`);
66
- }
67
- else if (type === 'dir') {
68
- assertDirectoryExists(fullPath, `Expected directory at ${path}`);
69
- }
70
- }
71
- }
72
- //# sourceMappingURL=fs-assertions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-assertions.js","sourceRoot":"","sources":["../../../../../../src/__tests__/integration/setup/helpers/fs-assertions.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Test helper for creating temporary test projects
3
- */
4
- export interface TestProjectOptions {
5
- /** Project name (used for directory name) */
6
- name?: string;
7
- /** Initialize as Git repository */
8
- initGit?: boolean;
9
- /** Create .git/config file */
10
- createGitConfig?: boolean;
11
- }
12
- export declare class TestProject {
13
- readonly path: string;
14
- private readonly cleanup;
15
- constructor(options?: TestProjectOptions);
16
- /**
17
- * Create a file in the test project
18
- */
19
- writeFile(relativePath: string, content: string): void;
20
- /**
21
- * Check if a file exists in the test project
22
- */
23
- hasFile(relativePath: string): boolean;
24
- /**
25
- * Check if a directory exists in the test project
26
- */
27
- hasDirectory(relativePath: string): boolean;
28
- /**
29
- * Clean up the test project
30
- */
31
- destroy(): void;
32
- }
33
- /**
34
- * Create a test project for use in tests
35
- * Automatically cleaned up after test
36
- */
37
- export declare function createTestProject(options?: TestProjectOptions): TestProject;
38
- //# sourceMappingURL=test-project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-project.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/integration/setup/helpers/test-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACtB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,GAAE,kBAAuB;IA+B5C;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAStD;;OAEG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAE/E"}
@@ -1,83 +0,0 @@
1
- /**
2
- * Test helper for creating temporary test projects
3
- */
4
- import { mkdirSync, rmSync, writeFileSync, existsSync } from 'fs';
5
- import { join, dirname } from 'path';
6
- import { tmpdir } from 'os';
7
- import { execSync } from 'child_process';
8
- export class TestProject {
9
- path;
10
- cleanup;
11
- constructor(options = {}) {
12
- const name = options.name || `test-project-${Date.now()}`;
13
- this.path = join(tmpdir(), name);
14
- this.cleanup = true;
15
- // Create project directory
16
- if (existsSync(this.path)) {
17
- rmSync(this.path, { recursive: true, force: true });
18
- }
19
- mkdirSync(this.path, { recursive: true });
20
- // Initialize Git repository if requested
21
- if (options.initGit !== false) {
22
- try {
23
- execSync('git init', { cwd: this.path, stdio: 'ignore' });
24
- if (options.createGitConfig !== false) {
25
- // Create minimal git config
26
- execSync('git config user.name "Test User"', { cwd: this.path, stdio: 'ignore' });
27
- execSync('git config user.email "test@example.com"', { cwd: this.path, stdio: 'ignore' });
28
- // Create a dummy remote URL
29
- const remoteUrl = 'https://github.com/test-org/test-repo.git';
30
- execSync(`git remote add origin ${remoteUrl}`, { cwd: this.path, stdio: 'ignore' });
31
- }
32
- }
33
- catch (error) {
34
- console.warn('Failed to initialize git repository:', error);
35
- }
36
- }
37
- }
38
- /**
39
- * Create a file in the test project
40
- */
41
- writeFile(relativePath, content) {
42
- const filePath = join(this.path, relativePath);
43
- const dir = dirname(filePath);
44
- if (!existsSync(dir)) {
45
- mkdirSync(dir, { recursive: true });
46
- }
47
- writeFileSync(filePath, content, 'utf-8');
48
- }
49
- /**
50
- * Check if a file exists in the test project
51
- */
52
- hasFile(relativePath) {
53
- return existsSync(join(this.path, relativePath));
54
- }
55
- /**
56
- * Check if a directory exists in the test project
57
- */
58
- hasDirectory(relativePath) {
59
- const fullPath = join(this.path, relativePath);
60
- return existsSync(fullPath);
61
- }
62
- /**
63
- * Clean up the test project
64
- */
65
- destroy() {
66
- if (this.cleanup && existsSync(this.path)) {
67
- try {
68
- rmSync(this.path, { recursive: true, force: true });
69
- }
70
- catch (error) {
71
- console.warn(`Failed to clean up test project at ${this.path}:`, error);
72
- }
73
- }
74
- }
75
- }
76
- /**
77
- * Create a test project for use in tests
78
- * Automatically cleaned up after test
79
- */
80
- export function createTestProject(options = {}) {
81
- return new TestProject(options);
82
- }
83
- //# sourceMappingURL=test-project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-project.js","sourceRoot":"","sources":["../../../../../../src/__tests__/integration/setup/helpers/test-project.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Integration tests for michi init command
3
- */
4
- export {};
5
- //# sourceMappingURL=init.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/integration/setup/init.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}