()
| 42 | } |
| 43 | |
| 44 | async function createFixture(): Promise<TestFixture> { |
| 45 | const muxRoot = await fs.mkdtemp(path.join(os.tmpdir(), "mux-worktree-archive-snapshot-")); |
| 46 | const srcBaseDir = path.join(muxRoot, "src"); |
| 47 | const projectPath = path.join(muxRoot, "project"); |
| 48 | const workspaceName = "feature-snapshot"; |
| 49 | const workspacePath = path.join(srcBaseDir, "project", workspaceName); |
| 50 | const workspaceId = "ws-snapshot"; |
| 51 | |
| 52 | await fs.mkdir(projectPath, { recursive: true }); |
| 53 | runGit(projectPath, ["init", "-b", "main"]); |
| 54 | await fs.writeFile(path.join(projectPath, "tracked.txt"), "base\n", "utf-8"); |
| 55 | runGit(projectPath, ["add", "tracked.txt"]); |
| 56 | runGit(projectPath, ["commit", "-m", "base"]); |
| 57 | const baseSha = runGit(projectPath, ["rev-parse", "HEAD"]); |
| 58 | |
| 59 | await fs.mkdir(path.dirname(workspacePath), { recursive: true }); |
| 60 | runGit(projectPath, ["worktree", "add", "-b", workspaceName, workspacePath, "main"]); |
| 61 | |
| 62 | const config = new Config(muxRoot); |
| 63 | await config.editConfig((cfg) => { |
| 64 | cfg.projects.set(projectPath, { |
| 65 | trusted: false, |
| 66 | workspaces: [ |
| 67 | { |
| 68 | path: workspacePath, |
| 69 | id: workspaceId, |
| 70 | name: workspaceName, |
| 71 | runtimeConfig: { type: "worktree", srcBaseDir }, |
| 72 | taskTrunkBranch: "main", |
| 73 | taskBaseCommitSha: baseSha, |
| 74 | }, |
| 75 | ], |
| 76 | }); |
| 77 | return cfg; |
| 78 | }); |
| 79 | |
| 80 | const metadata: WorkspaceMetadata = { |
| 81 | id: workspaceId, |
| 82 | name: workspaceName, |
| 83 | projectName: "project", |
| 84 | projectPath, |
| 85 | runtimeConfig: { type: "worktree", srcBaseDir }, |
| 86 | }; |
| 87 | |
| 88 | return { |
| 89 | muxRoot, |
| 90 | projectPath, |
| 91 | workspacePath, |
| 92 | workspaceId, |
| 93 | workspaceName, |
| 94 | baseSha, |
| 95 | metadata, |
| 96 | config, |
| 97 | service: new WorktreeArchiveSnapshotService(config), |
| 98 | }; |
| 99 | } |
| 100 | |
| 101 | async function makeWorkspaceDirty(fixture: TestFixture): Promise<void> { |
no test coverage detected