summaryrefslogtreecommitdiff
path: root/cli/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit')
-rw-r--r--cli/tests/unit/chown_test.ts20
-rw-r--r--cli/tests/unit/flock_test.ts33
-rw-r--r--cli/tests/unit/http_test.ts148
-rw-r--r--cli/tests/unit/os_test.ts20
-rw-r--r--cli/tests/unit/remove_test.ts15
-rw-r--r--cli/tests/unit/signal_test.ts9
-rw-r--r--cli/tests/unit/test_util.ts10
-rw-r--r--cli/tests/unit/tls_test.ts16
-rw-r--r--cli/tests/unit/tty_color_test.ts8
9 files changed, 127 insertions, 152 deletions
diff --git a/cli/tests/unit/chown_test.ts b/cli/tests/unit/chown_test.ts
index 7a282d68b..b9d40f525 100644
--- a/cli/tests/unit/chown_test.ts
+++ b/cli/tests/unit/chown_test.ts
@@ -5,21 +5,17 @@ import { assertEquals, assertRejects, assertThrows } from "./test_util.ts";
async function getUidAndGid(): Promise<{ uid: number; gid: number }> {
// get the user ID and group ID of the current process
- const uidProc = Deno.run({
- stdout: "piped",
- cmd: ["id", "-u"],
+ const uidProc = await Deno.spawn("id", {
+ args: ["-u"],
});
- const gidProc = Deno.run({
- stdout: "piped",
- cmd: ["id", "-g"],
+ const gidProc = await Deno.spawn("id", {
+ args: ["-g"],
});
- assertEquals((await uidProc.status()).code, 0);
- assertEquals((await gidProc.status()).code, 0);
- const uid = parseInt(new TextDecoder("utf-8").decode(await uidProc.output()));
- uidProc.close();
- const gid = parseInt(new TextDecoder("utf-8").decode(await gidProc.output()));
- gidProc.close();
+ assertEquals(uidProc.status.code, 0);
+ assertEquals(gidProc.status.code, 0);
+ const uid = parseInt(new TextDecoder("utf-8").decode(uidProc.stdout));
+ const gid = parseInt(new TextDecoder("utf-8").decode(gidProc.stdout));
return { uid, gid };
}
diff --git a/cli/tests/unit/flock_test.ts b/cli/tests/unit/flock_test.ts
index 8ebda3f6c..3c73d0481 100644
--- a/cli/tests/unit/flock_test.ts
+++ b/cli/tests/unit/flock_test.ts
@@ -1,6 +1,5 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
import { assertEquals } from "./test_util.ts";
-import { readAll } from "../../../test_util/std/io/util.ts";
Deno.test(
{ permissions: { read: true, run: true, hrtime: true } },
@@ -103,8 +102,8 @@ async function checkFirstBlocksSecond(opts: {
const secondPsTimes = await secondProcess.getTimes();
return firstPsTimes.exitTime < secondPsTimes.enterTime;
} finally {
- firstProcess.close();
- secondProcess.close();
+ await firstProcess.close();
+ await secondProcess.close();
}
}
@@ -149,14 +148,21 @@ function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) {
console.log(JSON.stringify({ enterTime, exitTime }));
`;
- const process = Deno.run({
- cmd: [Deno.execPath(), "eval", "--unstable", scriptText],
- stdout: "piped",
+ const process = Deno.spawnChild(Deno.execPath(), {
+ args: ["eval", "--unstable", scriptText],
stdin: "piped",
});
- const waitSignal = () => process.stdout.read(new Uint8Array(1));
- const signal = () => process.stdin.write(new Uint8Array(1));
+ const waitSignal = async () => {
+ const reader = process.stdout.getReader({ mode: "byob" });
+ await reader.read(new Uint8Array(1));
+ reader.releaseLock();
+ };
+ const signal = async () => {
+ const writer = process.stdin.getWriter();
+ await writer.write(new Uint8Array(1));
+ writer.releaseLock();
+ };
return {
async waitStartup() {
@@ -174,17 +180,16 @@ function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) {
await waitSignal();
},
getTimes: async () => {
- const outputBytes = await readAll(process.stdout);
- const text = new TextDecoder().decode(outputBytes);
+ const { stdout } = await process.output();
+ const text = new TextDecoder().decode(stdout);
return JSON.parse(text) as {
enterTime: number;
exitTime: number;
};
},
- close: () => {
- process.stdout.close();
- process.stdin.close();
- process.close();
+ close: async () => {
+ await process.status;
+ await process.stdin.close();
},
};
}
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts
index 2a4b7df01..779f11e56 100644
--- a/cli/tests/unit/http_test.ts
+++ b/cli/tests/unit/http_test.ts
@@ -1165,11 +1165,13 @@ Deno.test(
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = ["curl", "-X", "DELETE", url];
- const proc = Deno.run({ cmd, stdout: "null", stderr: "null" });
- const status = await proc.status();
+ const args = ["-X", "DELETE", url];
+ const { status } = await Deno.spawn("curl", {
+ args,
+ stdout: "null",
+ stderr: "null",
+ });
assert(status.success);
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1277,8 +1279,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1287,13 +1288,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(output.includes("content-encoding: gzip\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1327,8 +1329,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"--request",
"GET",
"--url",
@@ -1336,10 +1337,10 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const proc = Deno.spawnChild("curl", { args, stderr: "null" });
+ const status = await proc.status;
assert(status.success);
- const stdout = proc.stdout!.readable
+ const stdout = proc.stdout
.pipeThrough(new DecompressionStream("gzip"))
.pipeThrough(new TextDecoderStream());
let body = "";
@@ -1347,7 +1348,6 @@ Deno.test({
body += chunk;
}
assertEquals(JSON.parse(body), data);
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1382,8 +1382,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1392,13 +1391,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output()).toLocaleLowerCase();
+ const output = decoder.decode(stdout).toLocaleLowerCase();
assert(output.includes("vary: accept-encoding\r\n"));
assert(!output.includes("content-encoding: "));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1436,8 +1436,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1446,13 +1445,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip;q=0.8, br;q=1.0, *;q=0.1",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(output.includes("content-encoding: br\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1487,8 +1487,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1497,13 +1496,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding, Accept\r\n"));
assert(output.includes("content-encoding: gzip\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1541,7 +1541,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
+ const args = [
"curl",
"-i",
"--request",
@@ -1551,16 +1551,17 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(
output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"),
);
assert(output.includes("content-encoding: gzip\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1598,8 +1599,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1608,16 +1608,17 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(
output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"),
);
assert(output.includes("content-encoding: gzip\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1655,8 +1656,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1665,13 +1665,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(!output.includes("content-encoding: "));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1709,8 +1710,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1719,13 +1719,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(!output.includes("content-encoding: "));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1768,7 +1769,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
+ const args = [
"curl",
"-i",
"--request",
@@ -1778,13 +1779,14 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(output.includes("content-encoding: gzip\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1827,8 +1829,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"--request",
"GET",
"--url",
@@ -1836,10 +1837,10 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const proc = Deno.spawnChild("curl", { args, stderr: "null" });
+ const status = await proc.status;
assert(status.success);
- const stdout = proc.stdout.readable
+ const stdout = proc.stdout
.pipeThrough(new DecompressionStream("gzip"))
.pipeThrough(new TextDecoderStream());
let body = "";
@@ -1847,7 +1848,6 @@ Deno.test({
body += chunk;
}
assertEquals(JSON.parse(body), data);
- proc.close();
}
await Promise.all([server(), client()]);
@@ -1892,8 +1892,7 @@ Deno.test({
async function client() {
const url = `http://${hostname}:${port}/`;
- const cmd = [
- "curl",
+ const args = [
"-i",
"--request",
"GET",
@@ -1902,16 +1901,17 @@ Deno.test({
"--header",
"Accept-Encoding: gzip, deflate, br",
];
- const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" });
- const status = await proc.status();
+ const { status, stdout } = await Deno.spawn("curl", {
+ args,
+ stderr: "null",
+ });
assert(status.success);
- const output = decoder.decode(await proc.output());
+ const output = decoder.decode(stdout);
assert(output.includes("vary: Accept-Encoding\r\n"));
assert(output.includes("content-encoding: gzip\r\n"));
// Ensure the content-length header is updated.
assert(!output.includes(`content-length: ${contentLength}\r\n`));
assert(output.includes("content-length: 72\r\n"));
- proc.close();
}
await Promise.all([server(), client()]);
diff --git a/cli/tests/unit/os_test.ts b/cli/tests/unit/os_test.ts
index a469c8c9f..6ed1126f1 100644
--- a/cli/tests/unit/os_test.ts
+++ b/cli/tests/unit/os_test.ts
@@ -74,19 +74,14 @@ Deno.test(
console.log(
${JSON.stringify(Object.keys(expectedEnv))}.map(k => Deno.env.get(k))
)`;
- const proc = Deno.run({
- cmd: [Deno.execPath(), "eval", src],
+ const { status, stdout } = await Deno.spawn(Deno.execPath(), {
+ args: ["eval", src],
env: { ...inputEnv, NO_COLOR: "1" },
- stdout: "piped",
});
- const status = await proc.status();
assertEquals(status.success, true);
const expectedValues = Object.values(expectedEnv);
- const actualValues = JSON.parse(
- new TextDecoder().decode(await proc.output()),
- );
+ const actualValues = JSON.parse(new TextDecoder().decode(stdout));
assertEquals(actualValues, expectedValues);
- proc.close();
};
assertEquals(Deno.env.get("path"), Deno.env.get("PATH"));
@@ -133,16 +128,13 @@ Deno.test(
{ permissions: { run: true, read: true } },
async function osPpidIsEqualToPidOfParentProcess() {
const decoder = new TextDecoder();
- const process = Deno.run({
- cmd: [Deno.execPath(), "eval", "-p", "--unstable", "Deno.ppid"],
- stdout: "piped",
+ const { stdout } = await Deno.spawn(Deno.execPath(), {
+ args: ["eval", "-p", "--unstable", "Deno.ppid"],
env: { NO_COLOR: "true" },
});
- const output = await process.output();
- process.close();
const expected = Deno.pid;
- const actual = parseInt(decoder.decode(output));
+ const actual = parseInt(decoder.decode(stdout));
assertEquals(actual, expected);
},
);
diff --git a/cli/tests/unit/remove_test.ts b/cli/tests/unit/remove_test.ts
index 04e50f39d..365cc4e45 100644
--- a/cli/tests/unit/remove_test.ts
+++ b/cli/tests/unit/remove_test.ts
@@ -262,13 +262,12 @@ if (Deno.build.os === "windows") {
Deno.test(
{ permissions: { run: true, write: true, read: true } },
async function removeFileSymlink() {
- const symlink = Deno.run({
- cmd: ["cmd", "/c", "mklink", "file_link", "bar"],
+ const { status } = await Deno.spawn("cmd", {
+ args: ["/c", "mklink", "file_link", "bar"],
stdout: "null",
});
- assert(await symlink.status());
- symlink.close();
+ assert(status.success);
await Deno.remove("file_link");
await assertRejects(async () => {
await Deno.lstat("file_link");
@@ -279,14 +278,12 @@ if (Deno.build.os === "windows") {
Deno.test(
{ permissions: { run: true, write: true, read: true } },
async function removeDirSymlink() {
- const symlink = Deno.run({
- cmd: ["cmd", "/c", "mklink", "/d", "dir_link", "bar"],
+ const { status } = await Deno.spawn("cmd", {
+ args: ["/c", "mklink", "/d", "dir_link", "bar"],
stdout: "null",
});
- assert(await symlink.status());
- symlink.close();
-
+ assert(status.success);
await Deno.remove("dir_link");
await assertRejects(async () => {
await Deno.lstat("dir_link");
diff --git a/cli/tests/unit/signal_test.ts b/cli/tests/unit/signal_test.ts
index 12c5046a5..4ff4d38e1 100644
--- a/cli/tests/unit/signal_test.ts
+++ b/cli/tests/unit/signal_test.ts
@@ -173,17 +173,14 @@ Deno.test(
permissions: { run: true, read: true },
},
async function canExitWhileListeningToSignal() {
- const p = Deno.run({
- cmd: [
- Deno.execPath(),
+ const { status } = await Deno.spawn(Deno.execPath(), {
+ args: [
"eval",
"--unstable",
"Deno.addSignalListener('SIGIO', () => {})",
],
});
- const res = await p.status();
- assertEquals(res.code, 0);
- p.close();
+ assertEquals(status.code, 0);
},
);
diff --git a/cli/tests/unit/test_util.ts b/cli/tests/unit/test_util.ts
index 36ef8c0e7..18965fdab 100644
--- a/cli/tests/unit/test_util.ts
+++ b/cli/tests/unit/test_util.ts
@@ -31,17 +31,13 @@ export function pathToAbsoluteFileUrl(path: string): URL {
const decoder = new TextDecoder();
export async function execCode(code: string): Promise<[number, string]> {
- const p = Deno.run({
- cmd: [
- Deno.execPath(),
+ const { status, stdout } = await Deno.spawn(Deno.execPath(), {
+ args: [
"eval",
"--unstable",
"--no-check",
code,
],
- stdout: "piped",
});
- const [status, output] = await Promise.all([p.status(), p.output()]);
- p.close();
- return [status.code, decoder.decode(output)];
+ return [status.code, decoder.decode(stdout)];
}
diff --git a/cli/tests/unit/tls_test.ts b/cli/tests/unit/tls_test.ts
index 05eced64e..c9f22b75b 100644
--- a/cli/tests/unit/tls_test.ts
+++ b/cli/tests/unit/tls_test.ts
@@ -1019,20 +1019,14 @@ function createHttpsListener(port: number): Deno.Listener {
}
async function curl(url: string): Promise<string> {
- const curl = Deno.run({
- cmd: ["curl", "--insecure", url],
- stdout: "piped",
+ const { status, stdout } = await Deno.spawn("curl", {
+ args: ["--insecure", url],
});
- try {
- const [status, output] = await Promise.all([curl.status(), curl.output()]);
- if (!status.success) {
- throw new Error(`curl ${url} failed: ${status.code}`);
- }
- return new TextDecoder().decode(output);
- } finally {
- curl.close();
+ if (!status.success) {
+ throw new Error(`curl ${url} failed: ${status.code}`);
}
+ return new TextDecoder().decode(stdout);
}
Deno.test(
diff --git a/cli/tests/unit/tty_color_test.ts b/cli/tests/unit/tty_color_test.ts
index c10c9ff1e..feb4dd470 100644
--- a/cli/tests/unit/tty_color_test.ts
+++ b/cli/tests/unit/tty_color_test.ts
@@ -6,12 +6,10 @@ import { assertEquals } from "./test_util.ts";
Deno.test(
{ permissions: { run: true, read: true } },
async function noColorIfNotTty() {
- const p = Deno.run({
- cmd: [Deno.execPath(), "eval", "console.log(1)"],
- stdout: "piped",
+ const { stdout } = await Deno.spawn(Deno.execPath(), {
+ args: ["eval", "console.log(1)"],
});
- const output = new TextDecoder().decode(await p.output());
+ const output = new TextDecoder().decode(stdout);
assertEquals(output, "1\n");
- p.close();
},
);