@cyclonedx/cdxgen
Version:
Creates CycloneDX Software Bill of Materials (SBOM) from source or container image
35 lines (31 loc) • 1.07 kB
JavaScript
import { assert, describe, it } from "poku";
import { parseJsonLike, stripJsonComments } from "./jsonLike.js";
describe("jsonLike", () => {
it("preserves escaped quotes while stripping comments", () => {
const parsedMessage = 'escaped quote: " // not a comment';
const rawMessage = String.raw`escaped quote: \" // not a comment`;
const raw = String.raw`{
"message": "escaped quote: \" // not a comment",
// trailing comment
"enabled": true
}`;
const stripped = stripJsonComments(raw);
assert.ok(stripped.includes(rawMessage));
assert.ok(!stripped.includes("trailing comment"));
assert.deepStrictEqual(parseJsonLike(raw), {
enabled: true,
message: parsedMessage,
});
});
it("preserves comment markers after escaped backslashes inside strings", () => {
const raw = `{
"path": "C:\\\\\\\\temp\\\\\\\\file // keep",
/* block comment */
"count": 1
}`;
assert.deepStrictEqual(parseJsonLike(raw), {
count: 1,
path: "C:\\\\temp\\\\file // keep",
});
});
});