-
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathchild_process.js
More file actions
66 lines (63 loc) · 1.46 KB
/
child_process.js
File metadata and controls
66 lines (63 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { spawnSync } from "node:child_process";
import path from "node:path";
const ROOT_PATH = path.resolve(import.meta.dirname, "..", "..");
const FEATURES_MODULE_PATH = path.join(
ROOT_PATH,
"implementors",
"node",
"features.js",
);
const ASSERT_MODULE_PATH = path.join(
ROOT_PATH,
"implementors",
"node",
"assert.js",
);
const LOAD_ADDON_MODULE_PATH = path.join(
ROOT_PATH,
"implementors",
"node",
"load-addon.js",
);
const GC_MODULE_PATH = path.join(ROOT_PATH, "implementors", "node", "gc.js");
const MUST_CALL_MODULE_PATH = path.join(
ROOT_PATH,
"implementors",
"node",
"must-call.js",
);
const CHILD_PROCESS_MODULE_PATH = path.join(
ROOT_PATH,
"implementors",
"node",
"child_process.js",
);
const spawnTest = (filePath, options = {}) => {
const result = spawnSync(
process.execPath,
[
"--expose-gc",
"--import",
"file://" + FEATURES_MODULE_PATH,
"--import",
"file://" + ASSERT_MODULE_PATH,
"--import",
"file://" + LOAD_ADDON_MODULE_PATH,
"--import",
"file://" + GC_MODULE_PATH,
"--import",
"file://" + MUST_CALL_MODULE_PATH,
"--import",
"file://" + CHILD_PROCESS_MODULE_PATH,
filePath,
],
{ cwd: options.cwd || process.cwd() },
);
return {
status: result.status,
signal: result.signal,
stderr: result.stderr?.toString() ?? "",
stdout: result.stdout?.toString() ?? "",
};
};
Object.assign(globalThis, { spawnTest });