mirror of
https://github.com/denoland/deno.git
synced 2025-09-28 13:14:48 +00:00
chore(ext/node): pass v8 flags (--expose-gc
and --expose-externalize-string
) to node test script (#29046)
This commit is contained in:
parent
9ed2fad9ed
commit
a44ed9bbe4
2 changed files with 29 additions and 4 deletions
|
@ -197,7 +197,7 @@ export async function runNodeCompatTestCase(
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Parses the special "Flags:"" syntax in Node.js test files */
|
/** Parses the special "Flags:"" syntax in Node.js test files */
|
||||||
function parseFlags(source: string): string[] {
|
export function parseFlags(source: string): string[] {
|
||||||
const line = /^\/\/ Flags: (.+)$/um.exec(source);
|
const line = /^\/\/ Flags: (.+)$/um.exec(source);
|
||||||
if (line == null) return [];
|
if (line == null) return [];
|
||||||
return line[1].split(" ");
|
return line[1].split(" ");
|
||||||
|
|
|
@ -9,7 +9,12 @@ import { pooledMap } from "@std/async/pool";
|
||||||
import { partition } from "@std/collections/partition";
|
import { partition } from "@std/collections/partition";
|
||||||
import { stripAnsiCode } from "@std/fmt/colors";
|
import { stripAnsiCode } from "@std/fmt/colors";
|
||||||
import { version as nodeVersion } from "./runner/suite/node_version.ts";
|
import { version as nodeVersion } from "./runner/suite/node_version.ts";
|
||||||
import { RUN_ARGS, TEST_ARGS, usesNodeTestModule } from "./common.ts";
|
import {
|
||||||
|
parseFlags,
|
||||||
|
RUN_ARGS,
|
||||||
|
TEST_ARGS,
|
||||||
|
usesNodeTestModule,
|
||||||
|
} from "./common.ts";
|
||||||
|
|
||||||
// The timeout ms for single test execution. If a single test didn't finish in this timeout milliseconds, the test is considered as failure
|
// The timeout ms for single test execution. If a single test didn't finish in this timeout milliseconds, the test is considered as failure
|
||||||
const TIMEOUT = 2000;
|
const TIMEOUT = 2000;
|
||||||
|
@ -224,6 +229,24 @@ type ErrorUnexpected = {
|
||||||
message: string;
|
message: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function getV8Flags(source: string): string[] {
|
||||||
|
const v8Flags = [] as string[];
|
||||||
|
const flags = parseFlags(source);
|
||||||
|
flags.forEach((flag) => {
|
||||||
|
switch (flag) {
|
||||||
|
case "--expose_externalize_string":
|
||||||
|
v8Flags.push("--expose-externalize-string");
|
||||||
|
break;
|
||||||
|
case "--expose-gc":
|
||||||
|
v8Flags.push("--expose-gc");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return v8Flags;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run a single node test file. Retries 3 times on WouldBlock error.
|
* Run a single node test file. Retries 3 times on WouldBlock error.
|
||||||
*
|
*
|
||||||
|
@ -233,11 +256,13 @@ async function runSingle(testPath: string, retry = 0): Promise<SingleResult> {
|
||||||
let cmd: Deno.ChildProcess | undefined;
|
let cmd: Deno.ChildProcess | undefined;
|
||||||
const testPath_ = "tests/node_compat/runner/suite/test/" + testPath;
|
const testPath_ = "tests/node_compat/runner/suite/test/" + testPath;
|
||||||
try {
|
try {
|
||||||
const usesNodeTest = await Deno.readTextFile(testPath_)
|
const source = await Deno.readTextFile(testPath_);
|
||||||
.then(usesNodeTestModule).catch(() => false);
|
const usesNodeTest = usesNodeTestModule(source);
|
||||||
|
const v8Flags = getV8Flags(source);
|
||||||
cmd = new Deno.Command(Deno.execPath(), {
|
cmd = new Deno.Command(Deno.execPath(), {
|
||||||
args: [
|
args: [
|
||||||
...(usesNodeTest ? TEST_ARGS : RUN_ARGS),
|
...(usesNodeTest ? TEST_ARGS : RUN_ARGS),
|
||||||
|
...(v8Flags.length > 0 ? ["--v8-flags=" + v8Flags.join(",")] : []),
|
||||||
testPath_,
|
testPath_,
|
||||||
],
|
],
|
||||||
env: {
|
env: {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue