haikuwebkit/Websites/perf.webkit.org/server-tests/resources/mock-subprocess.js

63 lines
1.7 KiB
JavaScript

const MockSubprocess = {
execute: function (command)
{
const invocation = {command};
invocation.promise = new Promise((resolve, reject) => {
invocation.resolve = resolve;
invocation.reject = reject;
});
if (this._waitingInvocation) {
this._waitingInvocationResolver();
this._waitingInvocation = null;
this._waitingInvocationResolver = null;
}
this.invocations.push(invocation);
return invocation.promise;
},
resetAndWaitForInvocation: function ()
{
this.reset();
return this.waitForInvocation();
},
waitForInvocation: function ()
{
if (!this._waitingInvocation) {
this._waitingInvocation = new Promise(function (resolve, reject) {
MockSubprocess._waitingInvocationResolver = resolve;
});
}
return this._waitingInvocation;
},
inject: function ()
{
const originalSubprocess = global.Subprocess;
beforeEach(function () {
MockSubprocess.reset();
originalSubprocess = global.Subprocess;
global.Subprocess = MockSubprocess;
});
afterEach(function () {
global.Subprocess = originalSubprocess;
});
return MockSubprocess.invocations ;
},
reset: function ()
{
MockSubprocess.invocations.length = 0;
MockSubprocess._waitingInvocation = null;
MockSubprocess._waitingInvocationResolver = null;
},
_waitingInvocation: null,
_waitingInvocationResolver: null,
invocations: [],
};
if (typeof module != 'undefined')
module.exports.MockSubprocess = MockSubprocess;