aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/repro_631.test.js
blob: 11eba44742f91461252836887156cd0e5436f84c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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, force: true });

  // Create a directory with our test package file
  mkdirSync(testDir, { recursive: true });
  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,
  });
  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 });
});