Skip to content

Commit

Permalink
chore: run all tests through vitest runner (#439)
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 authored Feb 11, 2025
1 parent 8ecdda4 commit da95d76
Show file tree
Hide file tree
Showing 12 changed files with 114 additions and 89 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm i -g -f corepack && corepack enable
- run: npm i -fg corepack && corepack enable
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
Expand All @@ -24,4 +24,4 @@ jobs:
run: pnpm run lint:fix
- uses: autofix-ci/action@551dded8c6cc8a1054039c8bc0b8b48c51dfc6ef
with:
commit-message: "chore: apply automated lint fixes"
commit-message: "chore: apply automated updates"
4 changes: 1 addition & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: npm i -g -f corepack && corepack enable
- run: npm i -fg corepack && corepack enable
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
Expand All @@ -28,8 +28,6 @@ jobs:
- run: pnpm test:types
- run: pnpm build
- run: pnpm vitest
- run: pnpm test:node
- run: pnpm test:workerd
- name: nightly release
if: |
github.event_name == 'push' &&
Expand Down
11 changes: 4 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,11 @@
"node-ts": "node --disable-warning=ExperimentalWarning --experimental-strip-types",
"dev": "vitest",
"lint": "eslint . && prettier -c src test",
"lint:fix": "pnpm test:node-coverage && automd && eslint --fix . && prettier -w src test",
"lint:fix": "pnpm node-ts ./test/node-coverage.ts && automd && eslint --fix . && prettier -w src test",
"prepack": "pnpm run build",
"release": "pnpm test && changelogen --release --push --publish --prerelease --publishTag rc",
"test": "pnpm lint && pnpm vitest --run && pnpm test:types && pnpm test:node",
"test:node": "node --test --import jiti/register ./test/node/test-*",
"test:node-coverage": "pnpm node-ts test/node-coverage.ts",
"test:node:watch": "node --test --watch --import jiti/register ./test/node/test-*",
"test:types": "tsc --noEmit",
"test:workerd": "node test/workerd/main.mjs"
"test": "pnpm lint && pnpm test:types && pnpm vitest --run",
"test:types": "tsc --noEmit"
},
"dependencies": {
"defu": "^6.1.4",
Expand All @@ -67,6 +63,7 @@
"oxc-transform": "^0.49.0",
"prettier": "^3.5.0",
"rolldown": "1.0.0-beta.3",
"tinyexec": "^0.3.2",
"typescript": "^5.7.3",
"vitest": "^3.0.5",
"workerd": "^1.20250204.0",
Expand Down
3 changes: 3 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 0 additions & 65 deletions test/_utils.ts

This file was deleted.

12 changes: 5 additions & 7 deletions test/env.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,11 @@ describe("defineEnv", () => {
expect(env.alias.foo).toBe("bar");
});

describe("nodeCompat", () => {
it("has aliases for all builtinModules", () => {
const { env } = defineEnv({ nodeCompat: true });
for (const id of builtinModules) {
expect(env.alias[id]).toBeDefined();
}
});
it("has aliases for all builtinModules", () => {
const { env } = defineEnv({ nodeCompat: true });
for (const id of builtinModules) {
expect(env.alias[id]).toBeDefined();
}
});

describe("resolvePath", () => {
Expand Down
3 changes: 0 additions & 3 deletions test/global.ts

This file was deleted.

32 changes: 32 additions & 0 deletions test/node-coverage.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { describe, expect, it } from "vitest";
import { x } from "tinyexec";

describe("node coverage", () => {
it("collect and check", async () => {
const { exitCode, stdout, stderr } = await x(
"node",
[
"--disable-warning=ExperimentalWarning",
"--experimental-strip-types",
"./node-coverage.ts",
"--json",
],
{
nodeOptions: {
cwd: __dirname,
},
},
);
expect(exitCode).toBe(0);
expect(stderr.replaceAll(/\(node:\d+\) /g, "")).toMatchInlineSnapshot(`
"[DEP0040] DeprecationWarning: The \`punycode\` module is deprecated. Please use a userland alternative instead.
(Use \`node --trace-deprecation ...\` to show where the warning was created)
[DEP0025] DeprecationWarning: sys is deprecated. Use util instead.
"
`);
const coverage = JSON.parse(stdout);
for (const mod of coverage) {
expect(mod.unsupportedExports, mod.name).length(0);
}
});
});
6 changes: 5 additions & 1 deletion test/node-coverage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ for (const module of builtinModules) {
if (module.startsWith("_")) {
continue;
}
let unenvMod: string;
try {
const nodeMod = await import(`node:${module}`);
const unenvMod = await import(`../src/runtime/node/${module}.ts`);
Expand Down Expand Up @@ -48,6 +47,11 @@ for (const module of builtinModules) {
}
}

if (process.argv.includes("--json")) {
console.log(JSON.stringify(modulesCoverage, null, 2));
process.exit(0); // eslint-disable-line unicorn/no-process-exit
}

for (const module of modulesCoverage) {
const supported = module.supportedExports.length;
const unsupported = module.unsupportedExports.length;
Expand Down
24 changes: 24 additions & 0 deletions test/node.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { describe, expect, it } from "vitest";
import { x } from "tinyexec";

describe("tests in node", () => {
it("run", async () => {
const { exitCode, stderr, stdout } = await x(
"node",
[
"--disable-warning=ExperimentalWarning",
"--experimental-strip-types",
"--test",
"./node/test-*",
],
{
nodeOptions: {
cwd: __dirname,
},
},
);
expect(exitCode).toBe(0);
expect(stderr).toBe("");
expect(stdout).include("fail 0");
});
});
37 changes: 37 additions & 0 deletions test/workerd.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { describe, expect, it } from "vitest";
import { x } from "tinyexec";

describe("tests in workerd", () => {
it("run", async () => {
const { exitCode, stderr } = await x("node", ["./workerd/main.mjs"], {
nodeOptions: {
cwd: __dirname,
},
});
expect(exitCode).toBe(0);
expect(stderr.replaceAll(/\(node:\d+\) /g, "")).toMatchInlineSnapshot(`
"workerd/server/server.c++:4370: debug: [ TEST ] tests:crypto_getRandomValues
workerd/server/server.c++:4378: debug: [ PASS ] tests:crypto_getRandomValues
workerd/server/server.c++:4370: debug: [ TEST ] tests:unenv_polyfills_buffer
workerd/server/server.c++:4378: debug: [ PASS ] tests:unenv_polyfills_buffer
workerd/server/server.c++:4370: debug: [ TEST ] tests:unenv_polyfills_path
workerd/server/server.c++:4378: debug: [ PASS ] tests:unenv_polyfills_path
workerd/server/server.c++:4370: debug: [ TEST ] tests:url_parse
[DeprecationWarning] [unenv] [node:url] DEP0169: \`url.parse()\` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for \`url.parse()\` vulnerabilities.
workerd/server/server.c++:4378: debug: [ PASS ] tests:url_parse
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_dns
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_dns
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_implements_buffer
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_implements_buffer
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_modules
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_modules
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_net
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_net
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_path
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_path
workerd/server/server.c++:4370: debug: [ TEST ] tests:workerd_timers
workerd/server/server.c++:4378: debug: [ PASS ] tests:workerd_timers
"
`);
});
});
2 changes: 1 addition & 1 deletion test/workerd/main.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { dirname, join } from "node:path";
import { existsSync } from "node:fs";
import { readFile, mkdir, writeFile } from "node:fs/promises";
import { mkdir, writeFile } from "node:fs/promises";
import { spawn } from "node:child_process";
import { createServer } from "node:http";
import { fileURLToPath } from "node:url";
Expand Down

0 comments on commit da95d76

Please sign in to comment.