mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-30 07:14:39 +08:00
26 lines
1002 B
TypeScript
26 lines
1002 B
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",
|
|
"-o", bin,
|
|
join(testDir, "test_number.c"),
|
|
join(testDir, "../src/scr_number.c"),
|
|
]);
|
|
const { stderr } = await execFileAsync(bin, [join(testDir, "number-cases.txt")]);
|
|
expect(stderr.trim()).toMatch(/^(\d+)\/\1 cases passed$/);
|
|
});
|