From 941635473d107af6848ea0812694680c46c41935 Mon Sep 17 00:00:00 2001 From: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:48:04 -0400 Subject: [PATCH] test: add `util.stripVTControlCharacters` test PR-URL: https://github.com/nodejs/node/pull/54865 Refs: https://github.com/chalk/ansi-regex/pull/58 Reviewed-By: Ruben Bridgewater Reviewed-By: Marco Ippolito Reviewed-By: Moshe Atlow Reviewed-By: James M Snell --- .../test-util-stripvtcontrolcharacters.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/parallel/test-util-stripvtcontrolcharacters.js diff --git a/test/parallel/test-util-stripvtcontrolcharacters.js b/test/parallel/test-util-stripvtcontrolcharacters.js new file mode 100644 index 00000000000..a33d18d26db --- /dev/null +++ b/test/parallel/test-util-stripvtcontrolcharacters.js @@ -0,0 +1,28 @@ +'use strict'; + +require('../common'); +const util = require('util'); +const { test } = require('node:test'); + +// Ref: https://github.com/chalk/ansi-regex/blob/main/test.js +const tests = [ + // [before, expected] + ['\u001B[0m\u001B[4m\u001B[42m\u001B[31mfoo\u001B[39m\u001B[49m\u001B[24mfoo\u001B[0m', 'foofoo'], // Basic ANSI + ['\u001B[0;33;49;3;9;4mbar\u001B[0m', 'bar'], // Advanced colors + ['foo\u001B[0gbar', 'foobar'], // Clear tabs + ['foo\u001B[Kbar', 'foobar'], // Clear line + ['foo\u001B[2Jbar', 'foobar'], // Clear screen +]; + +for (const ST of ['\u0007', '\u001B\u005C', '\u009C']) { + tests.push( + [`\u001B]8;;mailto:no-replay@mail.com${ST}mail\u001B]8;;${ST}`, 'mail'], + [`\u001B]8;k=v;https://example-a.com/?a_b=1&c=2#tit%20le${ST}click\u001B]8;;${ST}`, 'click'], + ); +} + +test('util.stripVTControlCharacters', (t) => { + for (const [before, expected] of tests) { + t.assert.strictEqual(util.stripVTControlCharacters(before), expected); + } +});