@abdwhb-png/pi-test-harness 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @abdwhb-png/pi-test-harness
2
2
 
3
+ ## 0.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Load extensions in Pi's shipped loader configuration, and move the supported Pi line to 0.85.
8
+
9
+ Path-loaded extensions (`extensions: [...]`) could fail with `Cannot access 'x' before initialization` when the test runner was Bun. Pi builds its jiti options from how Pi itself is running, and the branch an in-process harness lands on left jiti's native import fast-path at its default — enabled when Bun is detected, off under Node. Under Bun that path handed Pi a factory for an entrypoint whose module body had not finished evaluating, so any extension using a module-level `await import(...)` threw a TDZ error instead of loading. The harness now pins the choice Pi's shipped runtimes make (`tryNative: false`) around extension evaluation, so loading behaves the same under vitest and `bun test`.
10
+
11
+ Also in this change:
12
+
13
+ - The supported Pi line is now `^0.85.0` (`devDependencies` locked to 0.85.1), replacing `^0.84.0`.
14
+ - New path-loaded extension coverage: a top-level-await fixture, static-import and plain-factory controls, and a failing-implementation case. It runs under vitest (`__tests__/extension-loading.test.ts`) and under Bun (`npm run test:bun`), with a CI job for the Bun side.
15
+ - The packed-consumer smoke now installs peers declared in `package.json` instead of a hardcoded Pi version.
16
+
17
+ ### Patch Changes
18
+
19
+ - Upgrade the harness to Pi 0.84 and keep runtime API-key initialization offline through Pi's native synchronization path.
20
+ - Clear all open dependency advisories, and take vitest to 5. The suite needed no configuration change for vitest 5.
21
+
3
22
  ## 0.7.0
4
23
 
5
24
  ### Major Changes
package/dist/sandbox.d.ts CHANGED
@@ -23,5 +23,35 @@ import type { SandboxOptions, SandboxResult } from "./types.js";
23
23
  * @internal
24
24
  */
25
25
  export declare function _resolveExecutable(command: string, platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string;
26
+ /**
27
+ * How to launch a resolved command, without Node's deprecated shell form.
28
+ *
29
+ * **Why**: on Windows a `.cmd`/`.bat` is not an executable image — it needs a
30
+ * terminal. Since the CVE-2024-27980 fix, child_process refuses to launch one
31
+ * with `shell: false` and fails with `EINVAL`, so resolving `sfw` to `sfw.CMD`
32
+ * was necessary but not sufficient.
33
+ *
34
+ * Node documents three ways to launch it: `exec()`, `{ shell: true }`, or
35
+ * spawning `cmd.exe` with the script as an argument. The shell option is
36
+ * deprecated as a *runtime* warning in Node 24 (DEP0190) because an argument
37
+ * array passed that way is only space-joined, never escaped. This takes the
38
+ * third route — what `exec()` does internally — so the argument array reaches the
39
+ * child intact and no deprecated form is used.
40
+ *
41
+ * Real binaries (`.exe`, or a path with no shim extension) spawn directly and
42
+ * stay shell-free on every platform.
43
+ *
44
+ * Known limitation, unchanged from the shell form: cmd.exe applies its own
45
+ * parsing to the arguments that follow the script, so an argument containing
46
+ * spaces has to survive it. Only the script path is guaranteed, because Node
47
+ * quotes an argument that contains spaces when it builds the command line.
48
+ *
49
+ * Exported for unit testing — not part of the public API contract.
50
+ * @internal
51
+ */
52
+ export declare function _spawnTarget(resolved: string, args: string[], platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): {
53
+ command: string;
54
+ args: string[];
55
+ };
26
56
  export declare function verifySandboxInstall(options: SandboxOptions): Promise<SandboxResult>;
27
57
  //# sourceMappingURL=sandbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CA0BR;AAwED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC,CA2LxB"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CA0BR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAUrC;AAyED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC,CA2LxB"}
package/dist/sandbox.js CHANGED
@@ -61,14 +61,51 @@ export function _resolveExecutable(command, platform = process.platform, env = p
61
61
  }
62
62
  return command;
63
63
  }
64
+ /**
65
+ * How to launch a resolved command, without Node's deprecated shell form.
66
+ *
67
+ * **Why**: on Windows a `.cmd`/`.bat` is not an executable image — it needs a
68
+ * terminal. Since the CVE-2024-27980 fix, child_process refuses to launch one
69
+ * with `shell: false` and fails with `EINVAL`, so resolving `sfw` to `sfw.CMD`
70
+ * was necessary but not sufficient.
71
+ *
72
+ * Node documents three ways to launch it: `exec()`, `{ shell: true }`, or
73
+ * spawning `cmd.exe` with the script as an argument. The shell option is
74
+ * deprecated as a *runtime* warning in Node 24 (DEP0190) because an argument
75
+ * array passed that way is only space-joined, never escaped. This takes the
76
+ * third route — what `exec()` does internally — so the argument array reaches the
77
+ * child intact and no deprecated form is used.
78
+ *
79
+ * Real binaries (`.exe`, or a path with no shim extension) spawn directly and
80
+ * stay shell-free on every platform.
81
+ *
82
+ * Known limitation, unchanged from the shell form: cmd.exe applies its own
83
+ * parsing to the arguments that follow the script, so an argument containing
84
+ * spaces has to survive it. Only the script path is guaranteed, because Node
85
+ * quotes an argument that contains spaces when it builds the command line.
86
+ *
87
+ * Exported for unit testing — not part of the public API contract.
88
+ * @internal
89
+ */
90
+ export function _spawnTarget(resolved, args, platform = process.platform, env = process.env) {
91
+ if (platform !== "win32" || !/\.(cmd|bat)$/i.test(resolved)) {
92
+ return { command: resolved, args };
93
+ }
94
+ // `/d` skips AutoRun scripts, `/s` keeps cmd's parsing of the rest as-is.
95
+ return {
96
+ command: env.ComSpec ?? "cmd.exe",
97
+ args: ["/d", "/s", "/c", resolved, ...args],
98
+ };
99
+ }
64
100
  /**
65
101
  * Run a command via execFileSync with safe string conversion for the full
66
102
  * command line in the error message.
67
103
  */
68
104
  function run(args, cwd, label) {
69
105
  const [cmd, ...cmdArgs] = args;
106
+ const target = _spawnTarget(_resolveExecutable(cmd), cmdArgs);
70
107
  try {
71
- return execFileSync(_resolveExecutable(cmd), cmdArgs, {
108
+ return execFileSync(target.command, target.args, {
72
109
  cwd,
73
110
  encoding: "utf-8",
74
111
  stdio: ["pipe", "pipe", "pipe"],
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abdwhb-png/pi-test-harness",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Test harness for pi extensions — in-process session testing, package install verification, and subprocess mocking",
5
5
  "author": "Abdullah Alblushi (fork)",
6
6
  "license": "MIT",
package/src/sandbox.ts CHANGED
@@ -72,14 +72,58 @@ export function _resolveExecutable(
72
72
  return command;
73
73
  }
74
74
 
75
+ /**
76
+ * How to launch a resolved command, without Node's deprecated shell form.
77
+ *
78
+ * **Why**: on Windows a `.cmd`/`.bat` is not an executable image — it needs a
79
+ * terminal. Since the CVE-2024-27980 fix, child_process refuses to launch one
80
+ * with `shell: false` and fails with `EINVAL`, so resolving `sfw` to `sfw.CMD`
81
+ * was necessary but not sufficient.
82
+ *
83
+ * Node documents three ways to launch it: `exec()`, `{ shell: true }`, or
84
+ * spawning `cmd.exe` with the script as an argument. The shell option is
85
+ * deprecated as a *runtime* warning in Node 24 (DEP0190) because an argument
86
+ * array passed that way is only space-joined, never escaped. This takes the
87
+ * third route — what `exec()` does internally — so the argument array reaches the
88
+ * child intact and no deprecated form is used.
89
+ *
90
+ * Real binaries (`.exe`, or a path with no shim extension) spawn directly and
91
+ * stay shell-free on every platform.
92
+ *
93
+ * Known limitation, unchanged from the shell form: cmd.exe applies its own
94
+ * parsing to the arguments that follow the script, so an argument containing
95
+ * spaces has to survive it. Only the script path is guaranteed, because Node
96
+ * quotes an argument that contains spaces when it builds the command line.
97
+ *
98
+ * Exported for unit testing — not part of the public API contract.
99
+ * @internal
100
+ */
101
+ export function _spawnTarget(
102
+ resolved: string,
103
+ args: string[],
104
+ platform: NodeJS.Platform = process.platform,
105
+ env: NodeJS.ProcessEnv = process.env,
106
+ ): { command: string; args: string[] } {
107
+ if (platform !== "win32" || !/\.(cmd|bat)$/i.test(resolved)) {
108
+ return { command: resolved, args };
109
+ }
110
+
111
+ // `/d` skips AutoRun scripts, `/s` keeps cmd's parsing of the rest as-is.
112
+ return {
113
+ command: env.ComSpec ?? "cmd.exe",
114
+ args: ["/d", "/s", "/c", resolved, ...args],
115
+ };
116
+ }
117
+
75
118
  /**
76
119
  * Run a command via execFileSync with safe string conversion for the full
77
120
  * command line in the error message.
78
121
  */
79
122
  function run(args: string[], cwd: string, label: string): string {
80
123
  const [cmd, ...cmdArgs] = args;
124
+ const target = _spawnTarget(_resolveExecutable(cmd), cmdArgs);
81
125
  try {
82
- return execFileSync(_resolveExecutable(cmd), cmdArgs, {
126
+ return execFileSync(target.command, target.args, {
83
127
  cwd,
84
128
  encoding: "utf-8",
85
129
  stdio: ["pipe", "pipe", "pipe"],