зеркало из https://github.com/mozilla/gecko-dev.git
88 строки
2.7 KiB
JavaScript
88 строки
2.7 KiB
JavaScript
// This test checks that the interaction between NodeServer.execute defined in
|
|
// httpd.js and the node server that we're interacting with defined in
|
|
// moz-http2.js is working properly.
|
|
/* global my_defined_var */
|
|
|
|
"use strict";
|
|
|
|
add_task(async function test_execute() {
|
|
function f() {
|
|
return "bla";
|
|
}
|
|
let id = await NodeServer.fork();
|
|
equal(await NodeServer.execute(id, `"hello"`), "hello");
|
|
equal(await NodeServer.execute(id, `(() => "hello")()`), "hello");
|
|
equal(await NodeServer.execute(id, `my_defined_var = 1;`), 1);
|
|
equal(await NodeServer.execute(id, `(() => my_defined_var)()`), 1);
|
|
equal(await NodeServer.execute(id, `my_defined_var`), 1);
|
|
|
|
await NodeServer.execute(id, `not_defined_var`)
|
|
.then(() => {
|
|
ok(false, "should have thrown");
|
|
})
|
|
.catch(e => {
|
|
equal(e.message, "ReferenceError: not_defined_var is not defined");
|
|
ok(
|
|
e.stack.includes("moz-http2-child.js"),
|
|
`stack should be coming from moz-http2-child.js - ${e.stack}`
|
|
);
|
|
});
|
|
await NodeServer.execute("definitely_wrong_id", `"hello"`)
|
|
.then(() => {
|
|
ok(false, "should have thrown");
|
|
})
|
|
.catch(e => {
|
|
equal(e.message, "Error: could not find id");
|
|
ok(
|
|
e.stack.includes("moz-http2.js"),
|
|
`stack should be coming from moz-http2.js - ${e.stack}`
|
|
);
|
|
});
|
|
|
|
// Defines f in the context of the node server.
|
|
// The implementation of NodeServer.execute prepends `functionName =` to the
|
|
// body of the function we pass so it gets attached to the global context
|
|
// in the server.
|
|
equal(await NodeServer.execute(id, f), undefined);
|
|
equal(await NodeServer.execute(id, `f()`), "bla");
|
|
|
|
class myClass {
|
|
static doStuff() {
|
|
return my_defined_var;
|
|
}
|
|
}
|
|
|
|
equal(await NodeServer.execute(id, myClass), undefined);
|
|
equal(await NodeServer.execute(id, `myClass.doStuff()`), 1);
|
|
|
|
equal(await NodeServer.kill(id), undefined);
|
|
await NodeServer.execute(id, `f()`)
|
|
.then(() => ok(false, "should throw"))
|
|
.catch(e => equal(e.message, "Error: could not find id"));
|
|
id = await NodeServer.fork();
|
|
// Check that a child process dying during a call throws an error.
|
|
await NodeServer.execute(id, `process.exit()`)
|
|
.then(() => ok(false, "should throw"))
|
|
.catch(e =>
|
|
equal(e.message, "child process exit closing code: 0 signal: null")
|
|
);
|
|
|
|
id = await NodeServer.fork();
|
|
equal(
|
|
await NodeServer.execute(
|
|
id,
|
|
`setTimeout(function() { sendBackResponse(undefined) }, 0); 2`
|
|
),
|
|
2
|
|
);
|
|
await new Promise(resolve => do_timeout(10, resolve));
|
|
await NodeServer.kill(id)
|
|
.then(() => ok(false, "should throw"))
|
|
.catch(e =>
|
|
equal(
|
|
e.message,
|
|
`forked process without handler sent: {"error":"","errorStack":""}\n`
|
|
)
|
|
);
|
|
});
|