mirror of
https://github.com/denoland/deno.git
synced 2025-01-11 08:33:43 -05:00
fix(ext/node): process.argv0 (#20925)
Fixes https://github.com/denoland/deno/issues/20924
This commit is contained in:
parent
7561f6ecea
commit
5095af7801
2 changed files with 34 additions and 3 deletions
|
@ -258,6 +258,23 @@ Deno.test({
|
|||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "process.argv0",
|
||||
fn() {
|
||||
assertEquals(typeof process.argv0, "string");
|
||||
assert(
|
||||
process.argv0.match(/[^/\\]*deno[^/\\]*$/),
|
||||
"deno included in the file name of argv[0]",
|
||||
);
|
||||
// Setting should be a noop
|
||||
process.argv0 = "foobar";
|
||||
assert(
|
||||
process.argv0.match(/[^/\\]*deno[^/\\]*$/),
|
||||
"deno included in the file name of argv[0]",
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "process.execArgv",
|
||||
fn() {
|
||||
|
|
|
@ -45,6 +45,9 @@ import { isWindows } from "ext:deno_node/_util/os.ts";
|
|||
import * as io from "ext:deno_io/12_io.js";
|
||||
import { Command } from "ext:runtime/40_process.js";
|
||||
|
||||
let argv0Getter = () => "";
|
||||
export let argv0 = "deno";
|
||||
|
||||
// TODO(kt3k): This should be set at start up time
|
||||
export let arch = "";
|
||||
|
||||
|
@ -408,6 +411,15 @@ class Process extends EventEmitter {
|
|||
*/
|
||||
argv = argv;
|
||||
|
||||
get argv0() {
|
||||
if (!argv0) {
|
||||
argv0 = argv0Getter();
|
||||
}
|
||||
return argv0;
|
||||
}
|
||||
|
||||
set argv0(_val) {}
|
||||
|
||||
/** https://nodejs.org/api/process.html#process_process_chdir_directory */
|
||||
chdir = chdir;
|
||||
|
||||
|
@ -851,23 +863,25 @@ function synchronizeListeners() {
|
|||
// Should be called only once, in `runtime/js/99_main.js` when the runtime is
|
||||
// bootstrapped.
|
||||
internals.__bootstrapNodeProcess = function (
|
||||
argv0: string | undefined,
|
||||
argv0Val: string | undefined,
|
||||
args: string[],
|
||||
denoVersions: Record<string, string>,
|
||||
) {
|
||||
// Overwrites the 1st item with getter.
|
||||
if (typeof argv0 === "string") {
|
||||
if (typeof argv0Val === "string") {
|
||||
Object.defineProperty(argv, "0", {
|
||||
get: () => {
|
||||
return argv0;
|
||||
return argv0Val;
|
||||
},
|
||||
});
|
||||
argv0Getter = () => argv0Val;
|
||||
} else {
|
||||
Object.defineProperty(argv, "0", {
|
||||
get: () => {
|
||||
return Deno.execPath();
|
||||
},
|
||||
});
|
||||
argv0Getter = () => Deno.execPath();
|
||||
}
|
||||
|
||||
// Overwrites the 2st item with getter.
|
||||
|
|
Loading…
Reference in a new issue