diff --git a/typescript/packages/common-builder/deno.json b/typescript/packages/common-builder/deno.json index e951f20b23..c04292618f 100644 --- a/typescript/packages/common-builder/deno.json +++ b/typescript/packages/common-builder/deno.json @@ -2,6 +2,6 @@ "name": "@commontools/builder", "exports": "./src/index.ts", "tasks": { - "build": "../scripts/build.ts" + "test": "deno test" } } diff --git a/typescript/packages/common-charm/deno.json b/typescript/packages/common-charm/deno.json index c840a54939..b3994ebe57 100644 --- a/typescript/packages/common-charm/deno.json +++ b/typescript/packages/common-charm/deno.json @@ -1,4 +1,7 @@ { "name": "@commontools/charm", + "tasks": { + "test": "deno test" + }, "exports": "./src/index.ts" } diff --git a/typescript/packages/common-cli/deno.json b/typescript/packages/common-cli/deno.json index 3eb919c7e0..13e8dc015e 100644 --- a/typescript/packages/common-cli/deno.json +++ b/typescript/packages/common-cli/deno.json @@ -1,6 +1,7 @@ { "tasks": { "start": "deno run --allow-read --allow-env --allow-net main.ts", - "memtest": "deno run --allow-read --allow-env --allow-net memory_test.ts" + "memtest": "deno run --allow-read --allow-env --allow-net memory_test.ts", + "test": "deno test" } } diff --git a/typescript/packages/common-html/deno.json b/typescript/packages/common-html/deno.json index e63db76d32..4d06ce5dbe 100644 --- a/typescript/packages/common-html/deno.json +++ b/typescript/packages/common-html/deno.json @@ -2,6 +2,6 @@ "name": "@commontools/html", "exports": "./src/index.ts", "tasks": { - "test-browser": "../scripts/test-browser.ts test-browser/**/*.ts" + "test": "deno test" } } diff --git a/typescript/packages/common-os-ui/deno.json b/typescript/packages/common-os-ui/deno.json index 474d93b69e..556eb84ea6 100644 --- a/typescript/packages/common-os-ui/deno.json +++ b/typescript/packages/common-os-ui/deno.json @@ -1,5 +1,8 @@ { "name": "@commontools/os-ui", + "tasks": { + "test": "deno test" + }, "exports": "./src/index.ts", "imports": { "@codemirror/lang-css": "npm:@codemirror/lang-css@^6.3.1", diff --git a/typescript/packages/common-runner/deno.json b/typescript/packages/common-runner/deno.json index 46e87bde92..854ce70872 100644 --- a/typescript/packages/common-runner/deno.json +++ b/typescript/packages/common-runner/deno.json @@ -1,4 +1,7 @@ { "name": "@commontools/runner", + "tasks": { + "test": "deno test" + }, "exports": "./src/index.ts" } diff --git a/typescript/packages/common-runner/src/runner.ts b/typescript/packages/common-runner/src/runner.ts index 058a7642ff..36e2c3d686 100644 --- a/typescript/packages/common-runner/src/runner.ts +++ b/typescript/packages/common-runner/src/runner.ts @@ -199,7 +199,7 @@ export function run( const internal = { ...(deepCopy(defaults) as { internal: any })?.internal, - ...recipe.initial?.internal, + ...(recipe.initial as { internal: any } | void)?.internal, ...processCell.get()?.internal, }; diff --git a/typescript/packages/common-ui/deno.json b/typescript/packages/common-ui/deno.json index b379f3d019..d5029be1d4 100644 --- a/typescript/packages/common-ui/deno.json +++ b/typescript/packages/common-ui/deno.json @@ -1,6 +1,9 @@ { "name": "@commontools/ui", "exports": "./src/index.ts", + "tasks": { + "test": "echo 'No tests to run.'" + }, "imports": { "@shoelace-style/shoelace": "npm:@shoelace-style/shoelace@^2.19.1" } diff --git a/typescript/packages/deno.json b/typescript/packages/deno.json index 8b46c0dd94..82e155792c 100644 --- a/typescript/packages/deno.json +++ b/typescript/packages/deno.json @@ -16,7 +16,7 @@ "./toolshed" ], "tasks": { - "test-all": "./scripts/test-all.sh" + "test-all": "./scripts/test-all.ts" }, "compilerOptions": { "jsx": "react-jsxdev", diff --git a/typescript/packages/jumble/deno.json b/typescript/packages/jumble/deno.json index 91e986478a..5497336334 100644 --- a/typescript/packages/jumble/deno.json +++ b/typescript/packages/jumble/deno.json @@ -2,7 +2,8 @@ "tasks": { "dev": "deno run -A --node-modules-dir=auto npm:vite", "build": "deno run -A --node-modules-dir=auto npm:vite build", - "preview": "deno run -A --node-modules-dir=auto npm:vite preview" + "preview": "deno run -A --node-modules-dir=auto npm:vite preview", + "test": "echo 'No tests to run.'" }, "imports": { "@/": "./src/", diff --git a/typescript/packages/llm-client/deno.json b/typescript/packages/llm-client/deno.json index 7bd1ff210e..ec9325004c 100644 --- a/typescript/packages/llm-client/deno.json +++ b/typescript/packages/llm-client/deno.json @@ -1,4 +1,7 @@ { "name": "@commontools/llm-client", + "tasks": { + "test": "echo 'No tests to run.'" + }, "exports": "./src/index.ts" } diff --git a/typescript/packages/scripts/test-all.sh b/typescript/packages/scripts/test-all.sh deleted file mode 100755 index da58b1d81f..0000000000 --- a/typescript/packages/scripts/test-all.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash - -cd common-builder -deno test -cd - - -cd common-charm -deno test -cd - - -# DISABLED until tests pass (memory_test.ts) -# cd common-cli -# deno test -# cd - - -# DISABLED until we get jsx in tests working -#cd common-html -#deno test -#cd - - -# DISABLED until we get browser tests working -# cd common-identity -# deno task test-browser -# cd - - -# DISABLED until we get browser tests working -# cd common-iframe-sandbox -# deno task test-browser -# cd - - -cd common-memory -deno task test -cd - - -cd common-os-ui -deno test -cd - - -# DISABLED due to redis dependency, handled in different CI flow -# cd toolshed -# deno task test -# cd - diff --git a/typescript/packages/scripts/test-all.ts b/typescript/packages/scripts/test-all.ts new file mode 100755 index 0000000000..dc90b36f40 --- /dev/null +++ b/typescript/packages/scripts/test-all.ts @@ -0,0 +1,55 @@ +#!/usr/bin/env -S deno run --allow-read --allow-run +import * as path from "jsr:@std/path"; + +const decoder = new TextDecoder(); +const workspaceCwd = Deno.cwd(); +const manifest = JSON.parse(await Deno.readTextFile("./deno.json")); +const members: string[] = manifest.workspace; + +const DISABLED = [ + "common-cli", // Disabled until `memory_test.ts` passes + "common-html", // Disabled until we get tests and jsx in tests passing + "common-identity", // Disabled until we have web test runner + "common-iframe-sandbox", // Disabled until we have web test runner + "deno-vite-plugin", // Do not test vendored code + "toolshed", // Requires extra configuration to run (e.g. redis) +]; + +let success = true; +for (const memberPath of members) { + // Convert "./common-memory" to "common-memory" + const packageName = memberPath.substring(2); + if (DISABLED.includes(packageName)) { + continue; + } + console.log(`Testing ${packageName}...`); + const packagePath = path.join(workspaceCwd, packageName); + if (!await testPackage(packagePath)) { + success = false; + } +} + +if (success) { + console.log("All tests passing!"); +} else { + console.error("One or more tests failed."); + Deno.exit(1); +} + +async function testPackage(packagePath: string): Promise { + const result = await new Deno.Command(Deno.execPath(), { + args: ["task", "test"], + cwd: packagePath, + stdout: "piped", + }).output(); + + const stdout = decoder.decode(result.stdout); + if (stdout) { + console.log(stdout); + } + const stderr = decoder.decode(result.stderr); + if (stderr) { + console.error(stderr); + } + return result.success; +}