Skip to content

Commit db9a73f

Browse files
authored
Merge pull request #81 from AllanOricil/vitest-setup
feat: enable async start/stop server
2 parents c20dbdc + 2514932 commit db9a73f

File tree

1 file changed

+47
-29
lines changed

1 file changed

+47
-29
lines changed

index.js

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -394,37 +394,55 @@ class NodeTestHelper extends EventEmitter {
394394
return request(this._httpAdmin);
395395
}
396396

397-
startServer(done) {
398-
this._app = express();
399-
const server = stoppable(http.createServer((req, res) => {
400-
this._app(req, res);
401-
}), 0);
402-
403-
this._RED.init(server,{
404-
logging:{console:{level:'off'}}
405-
});
406-
server.listen(this._listenPort, this._address);
407-
server.on('listening', () => {
408-
this._port = server.address().port;
409-
// internal API
410-
this._comms.start();
411-
done();
412-
});
413-
this._server = server;
397+
async startServer(done) {
398+
try {
399+
await new Promise((resolve, reject) => {
400+
this._app = express();
401+
const server = stoppable(
402+
http.createServer((req, res) => this._app(req, res)),
403+
0
404+
);
405+
406+
this._RED.init(server, {
407+
logging: { console: { level: 'off' } },
408+
});
409+
410+
server.listen(this._listenPort, this._address);
411+
412+
server.on('listening', () => {
413+
this._port = server.address().port;
414+
this._comms.start();
415+
this._server = server;
416+
resolve();
417+
});
418+
419+
server.on('error', reject);
420+
});
421+
422+
if (done) done();
423+
} catch (err) {
424+
if (done) done(err);
425+
else throw err;
426+
}
414427
}
415-
416-
//TODO consider saving TCP handshake/server reinit on start/stop/start sequences
417-
stopServer(done) {
418-
if (this._server) {
419-
try {
420-
// internal API
421-
this._comms.stop();
422-
this._server.stop(done);
423-
} catch (e) {
424-
done();
428+
429+
async stopServer(done) {
430+
try {
431+
if (this._server) {
432+
await new Promise((resolve, reject) => {
433+
this._comms.stop();
434+
435+
this._server.stop((err) => {
436+
if (err) reject(err);
437+
else resolve();
438+
});
439+
});
425440
}
426-
} else {
427-
done();
441+
442+
if (done) done();
443+
} catch (err) {
444+
if (done) done(err);
445+
else throw err;
428446
}
429447
}
430448

0 commit comments

Comments
 (0)