From 606b7b17c6b5eccae9950eeb11d30e63e544b49d Mon Sep 17 00:00:00 2001 From: Ian Bull Date: Fri, 13 Sep 2024 02:38:45 -0700 Subject: [PATCH] refactor(runtime): align error messages (#25563) Aligns the error messages in the runtime folder to be in-line with the Deno style guide. https://github.com/denoland/deno/issues/25269 --- runtime/js/10_permissions.js | 8 ++--- runtime/js/40_process.js | 26 ++++++++-------- runtime/js/99_main.js | 12 ++++---- tests/unit/command_test.ts | 56 ++++++++++++++++++++++++++++------ tests/unit/permissions_test.ts | 4 +-- 5 files changed, 71 insertions(+), 35 deletions(-) diff --git a/runtime/js/10_permissions.js b/runtime/js/10_permissions.js index ff5abc01d1..ef31358687 100644 --- a/runtime/js/10_permissions.js +++ b/runtime/js/10_permissions.js @@ -95,7 +95,7 @@ class PermissionStatus extends EventTarget { */ constructor(status = null, key = null) { if (key != illegalConstructorKey) { - throw new TypeError("Illegal constructor."); + throw new TypeError("Illegal constructor"); } super(); this.#status = status; @@ -194,7 +194,7 @@ function formDescriptor(desc) { class Permissions { constructor(key = null) { if (key != illegalConstructorKey) { - throw new TypeError("Illegal constructor."); + throw new TypeError("Illegal constructor"); } } @@ -209,7 +209,7 @@ class Permissions { querySync(desc) { if (!isValidDescriptor(desc)) { throw new TypeError( - `The provided value "${desc?.name}" is not a valid permission name.`, + `The provided value "${desc?.name}" is not a valid permission name`, ); } @@ -230,7 +230,7 @@ class Permissions { revokeSync(desc) { if (!isValidDescriptor(desc)) { throw new TypeError( - `The provided value "${desc?.name}" is not a valid permission name.`, + `The provided value "${desc?.name}" is not a valid permission name`, ); } diff --git a/runtime/js/40_process.js b/runtime/js/40_process.js index ac94119165..2592c5c464 100644 --- a/runtime/js/40_process.js +++ b/runtime/js/40_process.js @@ -101,7 +101,7 @@ class Process { async output() { if (!this.stdout) { - throw new TypeError("stdout was not piped"); + throw new TypeError("Cannot collect output: 'stdout' is not piped"); } try { return await readAll(this.stdout); @@ -112,7 +112,7 @@ class Process { async stderrOutput() { if (!this.stderr) { - throw new TypeError("stderr was not piped"); + throw new TypeError("Cannot collect output: 'stderr' is not piped"); } try { return await readAll(this.stderr); @@ -241,7 +241,7 @@ class ChildProcess { #stdin = null; get stdin() { if (this.#stdin == null) { - throw new TypeError("stdin is not piped"); + throw new TypeError("Cannot get 'stdin': 'stdin' is not piped"); } return this.#stdin; } @@ -249,7 +249,7 @@ class ChildProcess { #stdout = null; get stdout() { if (this.#stdout == null) { - throw new TypeError("stdout is not piped"); + throw new TypeError("Cannot get 'stdout': 'stdout' is not piped"); } return this.#stdout; } @@ -257,7 +257,7 @@ class ChildProcess { #stderr = null; get stderr() { if (this.#stderr == null) { - throw new TypeError("stderr is not piped"); + throw new TypeError("Cannot get 'stderr': 'stderr' is not piped"); } return this.#stderr; } @@ -273,7 +273,7 @@ class ChildProcess { extraPipeRids, } = null) { if (key !== illegalConstructorKey) { - throw new TypeError("Illegal constructor."); + throw new TypeError("Illegal constructor"); } this.#rid = rid; @@ -313,12 +313,12 @@ class ChildProcess { async output() { if (this.#stdout?.locked) { throw new TypeError( - "Can't collect output because stdout is locked", + "Cannot collect output: 'stdout' is locked", ); } if (this.#stderr?.locked) { throw new TypeError( - "Can't collect output because stderr is locked", + "Cannot collect output: 'stderr' is locked", ); } @@ -334,13 +334,13 @@ class ChildProcess { signal: status.signal, get stdout() { if (stdout == null) { - throw new TypeError("stdout is not piped"); + throw new TypeError("Cannot get 'stdout': 'stdout' is not piped"); } return stdout; }, get stderr() { if (stderr == null) { - throw new TypeError("stderr is not piped"); + throw new TypeError("Cannot get 'stderr': 'stderr' is not piped"); } return stderr; }, @@ -349,7 +349,7 @@ class ChildProcess { kill(signo = "SIGTERM") { if (this.#waitComplete) { - throw new TypeError("Child process has already terminated."); + throw new TypeError("Child process has already terminated"); } op_spawn_kill(this.#rid, signo); } @@ -428,13 +428,13 @@ function spawnSync(command, { signal: result.status.signal, get stdout() { if (result.stdout == null) { - throw new TypeError("stdout is not piped"); + throw new TypeError("Cannot get 'stdout': 'stdout' is not piped"); } return result.stdout; }, get stderr() { if (result.stderr == null) { - throw new TypeError("stderr is not piped"); + throw new TypeError("Cannot get 'stderr': 'stderr' is not piped"); } return result.stderr; }, diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 0496da9e7c..f447a9eefd 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -88,7 +88,7 @@ import { import { SymbolDispose, SymbolMetadata } from "ext:deno_web/00_infra.js"; // deno-lint-ignore prefer-primordials if (Symbol.metadata) { - throw "V8 supports Symbol.metadata now, no need to shim it!"; + throw "V8 supports Symbol.metadata now, no need to shim it"; } ObjectDefineProperties(Symbol, { dispose: { @@ -230,7 +230,7 @@ let loadedMainWorkerScript = false; function importScripts(...urls) { if (op_worker_get_type() === "module") { - throw new TypeError("Can't import scripts in a module worker."); + throw new TypeError("Cannot import scripts in a module worker"); } const baseUrl = location.getLocationHref(); @@ -239,7 +239,7 @@ function importScripts(...urls) { return new url.URL(scriptUrl, baseUrl ?? undefined).href; } catch { throw new DOMException( - "Failed to parse URL.", + `Failed to parse URL: ${scriptUrl}`, "SyntaxError", ); } @@ -722,7 +722,7 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) { return jupyterNs; } throw new Error( - "Deno.jupyter is only available in `deno jupyter` subcommand.", + "Deno.jupyter is only available in `deno jupyter` subcommand", ); }, set(val) { @@ -751,7 +751,7 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) { // https://github.com/tc39/proposal-temporal/pull/2914 // https://github.com/tc39/proposal-temporal/pull/2925 if (typeof globalThis.Temporal.Instant.fromEpochSeconds === "undefined") { - throw "V8 removes obsoleted Temporal API now, no need to delete them!"; + throw "V8 removes obsoleted Temporal API now, no need to delete them"; } delete globalThis.Temporal.Instant.fromEpochSeconds; delete globalThis.Temporal.Instant.fromEpochMicroseconds; @@ -960,7 +960,7 @@ function bootstrapWorkerRuntime( // https://github.com/tc39/proposal-temporal/pull/2914 // https://github.com/tc39/proposal-temporal/pull/2925 if (typeof globalThis.Temporal.Instant.fromEpochSeconds === "undefined") { - throw "V8 removes obsoleted Temporal API now, no need to delete them!"; + throw "V8 removes obsoleted Temporal API now, no need to delete them"; } delete globalThis.Temporal.Instant.fromEpochSeconds; delete globalThis.Temporal.Instant.fromEpochMicroseconds; diff --git a/tests/unit/command_test.ts b/tests/unit/command_test.ts index 0a7891493d..523d20cf35 100644 --- a/tests/unit/command_test.ts +++ b/tests/unit/command_test.ts @@ -73,8 +73,16 @@ Deno.test( }); const child = command.spawn(); - assertThrows(() => child.stdout, TypeError, "stdout is not piped"); - assertThrows(() => child.stderr, TypeError, "stderr is not piped"); + assertThrows( + () => child.stdout, + TypeError, + "Cannot get 'stdout': 'stdout' is not piped", + ); + assertThrows( + () => child.stderr, + TypeError, + "Cannot get 'stderr': 'stderr' is not piped", + ); const msg = new TextEncoder().encode("hello"); const writer = child.stdin.getWriter(); @@ -99,9 +107,21 @@ Deno.test( }); const child = command.spawn(); - assertThrows(() => child.stdin, TypeError, "stdin is not piped"); - assertThrows(() => child.stdout, TypeError, "stdout is not piped"); - assertThrows(() => child.stderr, TypeError, "stderr is not piped"); + assertThrows( + () => child.stdin, + TypeError, + "Cannot get 'stdin': 'stdin' is not piped", + ); + assertThrows( + () => child.stdout, + TypeError, + "Cannot get 'stdout': 'stdout' is not piped", + ); + assertThrows( + () => child.stderr, + TypeError, + "Cannot get 'stderr': 'stderr' is not piped", + ); await child.status; }, @@ -120,8 +140,16 @@ Deno.test( }); const child = command.spawn(); - assertThrows(() => child.stdin, TypeError, "stdin is not piped"); - assertThrows(() => child.stderr, TypeError, "stderr is not piped"); + assertThrows( + () => child.stdin, + TypeError, + "Cannot get 'stdin': 'stdin' is not piped", + ); + assertThrows( + () => child.stderr, + TypeError, + "Cannot get 'stderr': 'stderr' is not piped", + ); const readable = child.stdout.pipeThrough(new TextDecoderStream()); const reader = readable.getReader(); @@ -154,8 +182,16 @@ Deno.test( }); const child = command.spawn(); - assertThrows(() => child.stdin, TypeError, "stdin is not piped"); - assertThrows(() => child.stdout, TypeError, "stdout is not piped"); + assertThrows( + () => child.stdin, + TypeError, + "Cannot get 'stdin': 'stdin' is not piped", + ); + assertThrows( + () => child.stdout, + TypeError, + "Cannot get 'stdout': 'stdout' is not piped", + ); const readable = child.stderr.pipeThrough(new TextDecoderStream()); const reader = readable.getReader(); @@ -955,7 +991,7 @@ Deno.test( assertThrows( () => child.kill(), TypeError, - "Child process has already terminated.", + "Child process has already terminated", ); }, ); diff --git a/tests/unit/permissions_test.ts b/tests/unit/permissions_test.ts index e18b0c8f20..82524d556c 100644 --- a/tests/unit/permissions_test.ts +++ b/tests/unit/permissions_test.ts @@ -120,7 +120,7 @@ Deno.test(function permissionQueryForReadReturnsSameStatusSync() { }); Deno.test(function permissionsIllegalConstructor() { - assertThrows(() => new Deno.Permissions(), TypeError, "Illegal constructor."); + assertThrows(() => new Deno.Permissions(), TypeError, "Illegal constructor"); assertEquals(Deno.Permissions.length, 0); }); @@ -128,7 +128,7 @@ Deno.test(function permissionStatusIllegalConstructor() { assertThrows( () => new Deno.PermissionStatus(), TypeError, - "Illegal constructor.", + "Illegal constructor", ); assertEquals(Deno.PermissionStatus.length, 0); });