0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00

feat: Support file URLs in Deno.run for executable (#6994)

This commit is contained in:
Nayeem Rahman 2020-08-12 19:20:34 +01:00 committed by GitHub
parent 452693256c
commit 18ec1290af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 2 deletions

View file

@ -1896,7 +1896,7 @@ declare namespace Deno {
export interface RunOptions {
/** Arguments to pass. Note, the first element needs to be a path to the
* binary */
cmd: string[];
cmd: string[] | [URL, ...string[]];
cwd?: string;
env?: {
[key: string]: string;

View file

@ -5,7 +5,7 @@
const { close } = window.__bootstrap.resources;
const { readAll } = window.__bootstrap.buffer;
const { sendSync, sendAsync } = window.__bootstrap.dispatchJson;
const { assert } = window.__bootstrap.util;
const { assert, pathFromURL } = window.__bootstrap.util;
function opKill(pid, signo) {
sendSync("op_kill", { pid, signo });
@ -98,6 +98,9 @@
stderr = "inherit",
stdin = "inherit",
}) {
if (cmd[0] != null) {
cmd[0] = pathFromURL(cmd[0]);
}
const res = opRun({
cmd: cmd.map(String),
cwd,

View file

@ -26,6 +26,29 @@ unitTest({ perms: { run: true } }, async function runSuccess(): Promise<void> {
p.stdout.close();
p.close();
});
unitTest({ perms: { run: true } }, async function runUrl(): Promise<void> {
const q = Deno.run({
cmd: ["python", "-c", "import sys; print sys.executable"],
stdout: "piped",
});
await q.status();
const pythonPath = new TextDecoder().decode(await q.output()).trim();
q.close();
const p = Deno.run({
cmd: [new URL(`file:///${pythonPath}`), "-c", "print('hello world')"],
stdout: "piped",
stderr: "null",
});
const status = await p.status();
assertEquals(status.success, true);
assertEquals(status.code, 0);
assertEquals(status.signal, undefined);
p.stdout.close();
p.close();
});
unitTest({ perms: { run: true } }, async function runStdinRid0(): Promise<
void
> {