Files
bun.sh/test/regression/issue/00631.test.ts
2024-05-14 20:19:35 -07:00

40 lines
1.3 KiB
TypeScript

import { expect, it } from "bun:test";
import { bunExe, bunEnv, tmpdirSync } from "../../harness.js";
import { mkdirSync, rmSync, writeFileSync, readFileSync } from "fs";
import { join } from "path";
it("JSON strings escaped properly", async () => {
const testDir = tmpdirSync();
// Clean up from prior runs if necessary
rmSync(testDir, { recursive: true, force: true });
// Create a directory with our test package file
mkdirSync(testDir, { recursive: true });
writeFileSync(join(testDir, "package.json"), String.raw`{"testRegex":"\\a\n\\b\\"}`);
// Attempt to add a package, causing the package file to be parsed, modified,
// written, and reparsed. This verifies that escaped backslashes in JSON
// survive the roundtrip
const { exitCode, stderr } = Bun.spawnSync({
cmd: [bunExe(), "add", "left-pad"],
env: bunEnv,
cwd: testDir,
});
if (exitCode !== 0) {
console.log(stderr.toString("utf8"));
}
expect(exitCode).toBe(0);
const packageContents = readFileSync(join(testDir, "package.json"), { encoding: "utf8" });
expect(packageContents).toBe(String.raw`{
"testRegex": "\\a\n\\b\\",
"dependencies": {
"left-pad": "^1.3.0"
}
}`);
//// If successful clean up test artifacts
rmSync(testDir, { recursive: true });
});