diff --git a/lib/internal/test_runner/tap_stream.js b/lib/internal/test_runner/tap_stream.js index 3abd7ed5560664..a5834ee46f2014 100644 --- a/lib/internal/test_runner/tap_stream.js +++ b/lib/internal/test_runner/tap_stream.js @@ -131,9 +131,15 @@ class TapStream extends Readable { // In certain places, # and \ need to be escaped as \# and \\. function tapEscape(input) { - return StringPrototypeReplaceAll( - StringPrototypeReplaceAll(input, '\\', '\\\\'), '#', '\\#' - ); + let result = StringPrototypeReplaceAll(input, '\\', '\\\\'); + result = StringPrototypeReplaceAll(result, '#', '\\#'); + result = StringPrototypeReplaceAll(result, '\b', '\\b'); + result = StringPrototypeReplaceAll(result, '\f', '\\f'); + result = StringPrototypeReplaceAll(result, '\t', '\\t'); + result = StringPrototypeReplaceAll(result, '\n', '\\n'); + result = StringPrototypeReplaceAll(result, '\r', '\\r'); + result = StringPrototypeReplaceAll(result, '\v', '\\v'); + return result; } function jsToYaml(indent, name, value) { diff --git a/test/message/test_runner_output.js b/test/message/test_runner_output.js index 2a71cd3e16e143..47087303a715ed 100644 --- a/test/message/test_runner_output.js +++ b/test/message/test_runner_output.js @@ -213,7 +213,7 @@ test('test with a name and options provided', { skip: true }); test({ skip: true }, function functionAndOptions() {}); // A test whose description needs to be escaped. -test('escaped description \\ # \\#\\'); +test('escaped description \\ # \\#\\ \n \t \f \v \b \r'); // A test whose skip message needs to be escaped. test('escaped skip message', { skip: '#skip' }); diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out index 96d977b21c5b1a..14479c773bbc86 100644 --- a/test/message/test_runner_output.out +++ b/test/message/test_runner_output.out @@ -127,9 +127,9 @@ not ok 13 - async assertion fail failureType: 'testCodeFailure' error: |- Expected values to be strictly equal: - + true !== false - + code: 'ERR_ASSERTION' expected: false actual: true @@ -353,8 +353,8 @@ ok 36 - functionAndOptions # SKIP --- duration_ms: * ... -# Subtest: escaped description \\ \# \\\#\\ -ok 37 - escaped description \\ \# \\\#\\ +# Subtest: escaped description \\ \# \\\#\\ \n \t \f \v \b \r +ok 37 - escaped description \\ \# \\\#\\ \n \t \f \v \b \r --- duration_ms: * ...