| 180 | }); |
| 181 | |
| 182 | async function createMultiProjectFixture(): Promise<{ |
| 183 | metadata: WorkspaceMetadata; |
| 184 | primaryWorkspaceRepoDir: string; |
| 185 | secondaryWorkspaceRepoDir: string; |
| 186 | }> { |
| 187 | const primaryProjectDir = path.join(tempDir, "primary-project"); |
| 188 | const secondaryProjectDir = path.join(tempDir, "secondary-project"); |
| 189 | const primaryWorkspaceRepoDir = path.join(tempDir, "primary-workspace-repo"); |
| 190 | const secondaryWorkspaceRepoDir = path.join(tempDir, "secondary-workspace-repo"); |
| 191 | |
| 192 | await fs.mkdir(primaryProjectDir, { recursive: true }); |
| 193 | await fs.mkdir(secondaryProjectDir, { recursive: true }); |
| 194 | await fs.mkdir(primaryWorkspaceRepoDir, { recursive: true }); |
| 195 | await fs.mkdir(secondaryWorkspaceRepoDir, { recursive: true }); |
| 196 | await fs.symlink(primaryWorkspaceRepoDir, path.join(workspaceDir, "primary")); |
| 197 | await fs.symlink(secondaryWorkspaceRepoDir, path.join(workspaceDir, "secondary")); |
| 198 | |
| 199 | return { |
| 200 | metadata: { |
| 201 | id: "test-workspace", |
| 202 | name: "test-workspace", |
| 203 | projectName: "primary", |
| 204 | projectPath: primaryProjectDir, |
| 205 | runtimeConfig: DEFAULT_RUNTIME_CONFIG, |
| 206 | projects: [ |
| 207 | { projectName: "primary", projectPath: primaryProjectDir }, |
| 208 | { projectName: "secondary", projectPath: secondaryProjectDir }, |
| 209 | ], |
| 210 | }, |
| 211 | primaryWorkspaceRepoDir, |
| 212 | secondaryWorkspaceRepoDir, |
| 213 | }; |
| 214 | } |
| 215 | |
| 216 | afterEach(async () => { |
| 217 | // Clean up temp directory |