Summary
Replace the shell-based TypeScript perf-test invocation in tests/perf/run-all.ts with an argument-based child-process API.
The runner currently interpolates each globbed filename into an execSync command string. Although the filename is quoted, shell parsing still makes this unsuitable for paths containing shell metacharacters.
Required changes
- Replace
execSync with an argument-based API such as execFileSync or spawnSync.
- Invoke the TypeScript runner without relying on the Windows shell launcher.
- Pass the normalized perf-test file path as a separate argument.
- Preserve inherited standard input/output/error behavior.
Affected area
Rationale
Avoid shell command construction from filesystem-derived paths and retain cross-platform execution.
Acceptance criteria
- The performance test runner executes each matching
.ts file without constructing a shell command from its path.
- The runner works on Windows and non-Windows environments.
- Child-process output remains inherited.
Backlinks
Requested by: @VariableVince
Summary
Replace the shell-based TypeScript perf-test invocation in
tests/perf/run-all.tswith an argument-based child-process API.The runner currently interpolates each globbed filename into an
execSynccommand string. Although the filename is quoted, shell parsing still makes this unsuitable for paths containing shell metacharacters.Required changes
execSyncwith an argument-based API such asexecFileSyncorspawnSync.Affected area
tests/perf/run-all.tsRationale
Avoid shell command construction from filesystem-derived paths and retain cross-platform execution.
Acceptance criteria
.tsfile without constructing a shell command from its path.Backlinks
Requested by: @VariableVince