diff options
author | EuAndreh <eu@euandre.org> | 2024-03-07 11:55:52 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-03-07 11:55:52 -0300 |
commit | b9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61 (patch) | |
tree | bcf00983d5760a2d97539b807a348b886ec63349 | |
parent | tests/js/hero.mjs: Better names for pipes and sockets created by tests (diff) | |
download | papod-b9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61.tar.gz papod-b9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61.tar.xz |
src/hero.mjs: makePipeReader() now returns a function for closing it
-rw-r--r-- | src/hero.mjs | 46 | ||||
-rw-r--r-- | tests/js/hero.mjs | 4 |
2 files changed, 26 insertions, 24 deletions
diff --git a/src/hero.mjs b/src/hero.mjs index 451198d..ed105cd 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -355,6 +355,9 @@ export const makePipeReaderFn = ({ } = {}) => path => { mkfifo(path); fs.createReadStream(path, "UTF-8").on("data", makeLineEmitter(lineFn)); + return () => + new Promise((resolve, reject) => + fs.createWriteStream(path).end().close(resolve)); }; export const makePipeReader = makePipeReaderFn(); @@ -374,26 +377,29 @@ export const buildRoutes = (routes, globalInterceptors = []) => {} ); -export const promisifyServer = (name, serverHandle, socket, pipe) => ({ - ref: serverHandle, - listen: util.promisify((...args) => { - assert.equal(typeof socket, "string"); - assert.equal(typeof pipe, "string"); - - configLogger({ name }); - - rmIf(pipe); - makePipeReader(pipe); - - rmIf(socket); - return serverHandle.listen(socket, ...args) - }), - close: util.promisify((...args) => { - fs.createWriteStream(pipe).end(); - return serverHandle.close(...args); - }), - events: serverHandle, -}); +export const promisifyServer = (name, serverHandle, socket, pipe) => { + let closePipeFn = null; + return { + ref: serverHandle, + listen: util.promisify((...args) => { + assert.equal(typeof socket, "string"); + assert.equal(typeof pipe, "string"); + + configLogger({ name }); + + rmIf(pipe); + closePipeFn = makePipeReader(pipe); + + rmIf(socket); + return serverHandle.listen(socket, ...args) + }), + close: util.promisify(async (...args) => { + await closePipeFn(); + return serverHandle.close(...args); + }), + events: serverHandle, + }; +}; export const buildServer = ({ name, diff --git a/tests/js/hero.mjs b/tests/js/hero.mjs index 3bed524..f01ced8 100644 --- a/tests/js/hero.mjs +++ b/tests/js/hero.mjs @@ -1426,10 +1426,6 @@ const test_makePipeReaderFn = async t => { "second", "third", ]); - assert.deepEqual(logs, [ - { message: "pipe closed, reopening" }, - { message: "pipe closed, NOT reopening" }, - ]); resolve(); })); }); |