deno/tests/unit_node/console_test.ts
Jake Champion 05bc6360e7
fix(node:console): ensure that the node:console implementation has an implementation for emitWarning in scope (#31263)
Introduces the emitWarning function from the process module to enable
warning capabilities within the console constructor implementation.

This fixes a bug where the `time`, `countReset` and `timeLogImpl`
functions would throw an error due to trying to call `emitWarning`, they
would throw an error for an undefined variable named `emitWarning` or if
a global function had that name` they would call that function, which is
not expected behaviour here.

---------

Signed-off-by: Jake Champion <me@jakechampion.name>
2025-11-13 10:33:50 +01:00

42 lines
1.1 KiB
TypeScript

// Copyright 2018-2025 the Deno authors. MIT license.
import vm from "node:vm";
import { stripAnsiCode } from "@std/fmt/colors";
import { assertStringIncludes } from "@std/assert";
import { Console } from "node:console";
import process from "node:process";
Deno.test(function inspectCrossRealmObjects() {
assertStringIncludes(
stripAnsiCode(
Deno.inspect(vm.runInNewContext(`new Error("This is an error")`)),
),
"Error: This is an error",
);
assertStringIncludes(
stripAnsiCode(
Deno.inspect(
vm.runInNewContext(`new AggregateError([], "This is an error")`),
),
),
"AggregateError: This is an error",
);
assertStringIncludes(
stripAnsiCode(
Deno.inspect(vm.runInNewContext(`new Date("2018-12-10T02:26:59.002Z")`)),
),
"2018-12-10T02:26:59.002Z",
);
});
Deno.test("Console time and count methods don't throw when called with missing labels", () => {
const console = new Console({
stdout: process.stdout,
stderr: process.stderr,
});
console.timeEnd();
console.timeLog();
console.time();
console.countReset();
});