summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/rt/02_console.js6
-rw-r--r--cli/tests/unit/console_test.ts21
2 files changed, 20 insertions, 7 deletions
diff --git a/cli/rt/02_console.js b/cli/rt/02_console.js
index b6f5bc74b..a5e6595b9 100644
--- a/cli/rt/02_console.js
+++ b/cli/rt/02_console.js
@@ -462,7 +462,11 @@
.replace(/\n/g, "\\n")
.replace(/\r/g, "\\r")
.replace(/\t/g, "\\t")
- .replace(/\v/g, "\\v");
+ .replace(/\v/g, "\\v")
+ .replace(
+ /[\x00-\x1f\x7f-\x9f]/g,
+ (c) => "\\x" + c.charCodeAt(0).toString(16).padStart(2, "0"),
+ );
}
// Print strings when they are inside of arrays or objects with quotes
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts
index 42885957a..8b5079a59 100644
--- a/cli/tests/unit/console_test.ts
+++ b/cli/tests/unit/console_test.ts
@@ -94,16 +94,25 @@ unitTest(function consoleTestStringifyComplexObjects(): void {
unitTest(
function consoleTestStringifyComplexObjectsWithEscapedSequences(): void {
assertEquals(
- stringify(["foo\b", "foo\f", "foo\n", "foo\r", "foo\t", "foo\v"]),
- `[ "foo\\b", "foo\\f", "foo\\n", "foo\\r", "foo\\t", "foo\\v" ]`,
+ stringify(
+ ["foo\b", "foo\f", "foo\n", "foo\r", "foo\t", "foo\v", "foo\0"],
+ ),
+ `[
+ "foo\\b", "foo\\f",
+ "foo\\n", "foo\\r",
+ "foo\\t", "foo\\v",
+ "foo\\x00"
+]`,
);
assertEquals(
- stringify({ "foo\b": "bar\n", "bar\r": "baz\t" }),
- `{ foo\\b: "bar\\n", bar\\r: "baz\\t" }`,
+ stringify(
+ { "foo\b": "bar\n", "bar\r": "baz\t", "qux\0": "qux\0" },
+ ),
+ `{ foo\\b: "bar\\n", bar\\r: "baz\\t", qux\\x00: "qux\\x00" }`,
);
assertEquals(
- stringify(new Set(["foo\n", "foo\r"])),
- `Set { "foo\\n", "foo\\r" }`,
+ stringify(new Set(["foo\n", "foo\r", "foo\0"])),
+ `Set { "foo\\n", "foo\\r", "foo\\x00" }`,
);
},
);