30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
|
|
// The isolation suite reads the fixtures of registered modules only (template lesson core-2): a module folder
|
|
// kept in the repository but not registered must not fail it.
|
|
|
|
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"
|
|
import { tmpdir } from "node:os"
|
|
import { join } from "node:path"
|
|
import { afterEach, expect, it } from "vitest"
|
|
import { isolationFilesOf } from "./support/module-isolations.js"
|
|
|
|
const made: string[] = []
|
|
afterEach(() => {
|
|
for (const dir of made.splice(0)) rmSync(dir, { recursive: true, force: true })
|
|
})
|
|
|
|
function modulesWith(layout: Record<string, boolean>): string {
|
|
const dir = mkdtempSync(join(tmpdir(), "isolation-modules-"))
|
|
made.push(dir)
|
|
for (const [id, hasFixtures] of Object.entries(layout)) {
|
|
mkdirSync(join(dir, id, "__tests__"), { recursive: true })
|
|
if (hasFixtures) writeFileSync(join(dir, id, "__tests__", "isolation.ts"), "export const isolation = {}\n")
|
|
}
|
|
return dir
|
|
}
|
|
|
|
it("reads the fixtures of the registered modules and skips a held module's", () => {
|
|
const dir = modulesWith({ widgets: true, held: true, plain: false })
|
|
expect(isolationFilesOf(dir, ["widgets", "plain"])).toEqual([join(dir, "widgets", "__tests__", "isolation.ts")])
|
|
})
|