diff options
| author | 2023-02-10 19:05:32 -0800 | |
|---|---|---|
| committer | 2023-02-10 19:05:32 -0800 | |
| commit | c208c4e3197920ae4bf78463cc91014ede8dd951 (patch) | |
| tree | 4fdeac0536a2417e3a2f4af0c62fa65e62177e0f /test/bun.js/repro_631.test.js | |
| parent | 10650cced26da994c29ac482674f010523d365c2 (diff) | |
| download | bun-c208c4e3197920ae4bf78463cc91014ede8dd951.tar.gz bun-c208c4e3197920ae4bf78463cc91014ede8dd951.tar.zst bun-c208c4e3197920ae4bf78463cc91014ede8dd951.zip | |
Fix #631: bun add throwing JSON lexer bug (#2041)
* add double-backslash to list of control chars
* update test
* stderr as string
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 }); +}) |
