summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/process.ts17
-rw-r--r--js/process_test.ts11
2 files changed, 27 insertions, 1 deletions
diff --git a/js/process.ts b/js/process.ts
index bf75b6b32..8ce83477a 100644
--- a/js/process.ts
+++ b/js/process.ts
@@ -83,7 +83,7 @@ export class Process {
}
/** Buffer the stdout and return it as Uint8Array after EOF.
- * You must have set stdout to "piped" in when creating the process.
+ * You must set stdout to "piped" when creating the process.
* This calls close() on stdout after its done.
*/
async output(): Promise<Uint8Array> {
@@ -97,6 +97,21 @@ export class Process {
}
}
+ /** Buffer the stderr and return it as Uint8Array after EOF.
+ * You must set stderr to "piped" when creating the process.
+ * This calls close() on stderr after its done.
+ */
+ async stderrOutput(): Promise<Uint8Array> {
+ if (!this.stderr) {
+ throw new Error("Process.stderrOutput: stderr is undefined");
+ }
+ try {
+ return await readAll(this.stderr);
+ } finally {
+ this.stderr.close();
+ }
+ }
+
close(): void {
close(this.rid);
}
diff --git a/js/process_test.ts b/js/process_test.ts
index b442f0092..051841ffe 100644
--- a/js/process_test.ts
+++ b/js/process_test.ts
@@ -187,6 +187,17 @@ testPerm({ run: true }, async function runOutput() {
p.close();
});
+testPerm({ run: true }, async function runStderrOutput() {
+ const p = run({
+ args: ["python", "-c", "import sys; sys.stderr.write('error')"],
+ stderr: "piped"
+ });
+ const error = await p.stderrOutput();
+ const s = new TextDecoder().decode(error);
+ assertEquals(s, "error");
+ p.close();
+});
+
testPerm({ run: true }, async function runEnv() {
const p = run({
args: [