summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-03-07 11:55:52 -0300
committerEuAndreh <eu@euandre.org>2024-03-07 11:55:52 -0300
commitb9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61 (patch)
treebcf00983d5760a2d97539b807a348b886ec63349
parenttests/js/hero.mjs: Better names for pipes and sockets created by tests (diff)
downloadpapod-b9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61.tar.gz
papod-b9b7e4c3a04f012b5d2e8d4f1393128c25cb0c61.tar.xz
src/hero.mjs: makePipeReader() now returns a function for closing it
-rw-r--r--src/hero.mjs46
-rw-r--r--tests/js/hero.mjs4
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();
}));
});