diff options
Diffstat (limited to 'test/bun.js/repro_631.test.js')
| -rw-r--r-- | test/bun.js/repro_631.test.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/bun.js/repro_631.test.js b/test/bun.js/repro_631.test.js new file mode 100644 index 000000000..b418306dd --- /dev/null +++ b/test/bun.js/repro_631.test.js @@ -0,0 +1,38 @@ +import { expect, it } from "bun:test"; +import { bunExe } from "./bunExe.ts"; +import { bunEnv } from "./bunEnv.ts"; +import { mkdirSync, rmSync, writeFileSync, readFileSync } from "fs"; + +it("JSON strings escaped properly", async () => { + const testDir = import.meta.dir + "/repro_631/"; + + // Clean up from prior runs if necessary + rmSync(testDir, { recursive: true }); + + // Create a directory with our test package file + mkdirSync(testDir); + writeFileSync(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 + }); + console.log(stderr.toString()); + expect(exitCode).toBe(0); + + const packageContents = readFileSync(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 }); +}) |
