From a7850d7fe6c52225acd614167495d765ed2385f3 Mon Sep 17 00:00:00 2001 From: Zach Date: Sun, 6 Feb 2022 05:00:06 -0500 Subject: fix(ext/console): fix uncaught TypeError in css styling (#13567) When using css coloring in the console, non-color values should be ignored rather than throw exceptions. Fixes #13469 --- cli/tests/unit/console_test.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'cli') diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts index af42a655b..af78cf49e 100644 --- a/cli/tests/unit/console_test.ts +++ b/cli/tests/unit/console_test.ts @@ -1000,6 +1000,7 @@ Deno.test(function consoleTestWithStyleSpecifier() { }); Deno.test(function consoleParseCssColor() { + assertEquals(parseCssColor("inherit"), null); assertEquals(parseCssColor("black"), [0, 0, 0]); assertEquals(parseCssColor("darkmagenta"), [139, 0, 139]); assertEquals(parseCssColor("slateblue"), [106, 90, 205]); @@ -1019,6 +1020,14 @@ Deno.test(function consoleParseCssColor() { }); Deno.test(function consoleParseCss() { + assertEquals( + parseCss("background-color: inherit"), + { ...DEFAULT_CSS, backgroundColor: "inherit" }, + ); + assertEquals( + parseCss("color: inherit"), + { ...DEFAULT_CSS, color: "inherit" }, + ); assertEquals( parseCss("background-color: red"), { ...DEFAULT_CSS, backgroundColor: "red" }, @@ -1073,10 +1082,22 @@ Deno.test(function consoleParseCss() { }); Deno.test(function consoleCssToAnsi() { + assertEquals( + cssToAnsiEsc({ ...DEFAULT_CSS, backgroundColor: "inherit" }), + "_[49m", + ); + assertEquals( + cssToAnsiEsc({ ...DEFAULT_CSS, backgroundColor: "foo" }), + "_[49m", + ); assertEquals( cssToAnsiEsc({ ...DEFAULT_CSS, backgroundColor: "black" }), "_[40m", ); + assertEquals( + cssToAnsiEsc({ ...DEFAULT_CSS, color: "inherit" }), + "_[39m", + ); assertEquals( cssToAnsiEsc({ ...DEFAULT_CSS, color: "blue" }), "_[34m", @@ -1572,6 +1593,13 @@ Deno.test(function consoleLogShouldNotThrowError() { }); }); +Deno.test(function consoleLogShouldNotThrowErrorWhenInvalidCssColorsAreGiven() { + mockConsole((console, out) => { + console.log("%cfoo", "color: foo; background-color: bar;"); + assertEquals(stripColor(out.toString()), "foo\n"); + }); +}); + // console.log(Invalid Date) test Deno.test(function consoleLogShoultNotThrowErrorWhenInvalidDateIsPassed() { mockConsole((console, out) => { -- cgit v1.2.3