40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { expect } from "vitest";
|
|
|
|
import { parseJavaScriptSource } from "../../../src/domain/javascript/javascriptSourceParser.js";
|
|
import { processTest } from "../../support/process/processFixture.js";
|
|
|
|
for (const source of [
|
|
"return;",
|
|
"void new.target;",
|
|
"var await = 1; return;",
|
|
"with ({ value: 1 }) { void value; } void new.target;",
|
|
]) {
|
|
processTest(
|
|
`accepts Node CommonJS syntax while retaining module errors: ${source}`,
|
|
async ({ processes }) => {
|
|
const commonjs = await processes.run(
|
|
process.execPath,
|
|
["--check", "--input-type=commonjs"],
|
|
{ input: source, timeoutMs: 5_000 },
|
|
);
|
|
expect(commonjs.exitCode).toBe(0);
|
|
const module = await processes.run(
|
|
process.execPath,
|
|
["--check", "--input-type=module"],
|
|
{ input: source, timeoutMs: 5_000 },
|
|
);
|
|
expect(module.exitCode).not.toBe(0);
|
|
|
|
const parsed = parseJavaScriptSource(source, "main.cjs");
|
|
expect(parsed).not.toBeNull();
|
|
expect(parsed?.errors).toEqual([]);
|
|
expect(
|
|
parseJavaScriptSource(source, "main.mjs")?.errors.length,
|
|
).toBeGreaterThan(0);
|
|
expect(
|
|
parseJavaScriptSource(source, "main.mts")?.errors.length,
|
|
).toBeGreaterThan(0);
|
|
},
|
|
);
|
|
}
|