Files
scriptc/packages/runtime/test/number.test.ts
Chris Tate 177d025452 Harden sandbox gate across host platforms
- Retain representative Darwin kqueue coverage in the default gate.
- Schedule native runtime tests by host and make Linux clang invocations portable.
- Resolve canonical OCI manifest digests for direct and indexed images.
2026-07-28 17:48:17 -05:00

28 lines
1.1 KiB
TypeScript

import { execFile } from "node:child_process";
import { mkdir } from "node:fs/promises";
import { join } from "node:path";
import { promisify } from "node:util";
import { expect, test } from "vitest";
const execFileAsync = promisify(execFile);
const testDir = import.meta.dirname;
// Compiles and runs the C-side oracle test against the committed case file
// (generated once from Node via gen-number-cases.mjs — see that file to
// regenerate or fuzz).
test("scr_f64_to_str matches Node String(x) on committed oracle cases", async () => {
const buildDir = join(testDir, "build");
await mkdir(buildDir, { recursive: true });
const bin = join(buildDir, "test_number");
await execFileAsync("clang", [
"-std=c11", "-O2", "-Wall", "-Wextra",
...(process.platform === "linux" ? ["-D_GNU_SOURCE"] : []),
"-o", bin,
join(testDir, "test_number.c"),
join(testDir, "../src/scr_number.c"),
...(process.platform === "linux" ? ["-lm"] : []),
]);
const { stderr } = await execFileAsync(bin, [join(testDir, "number-cases.txt")]);
expect(stderr.trim()).toMatch(/^(\d+)\/\1 cases passed$/);
});