diff --git a/packages/build/src/plugins/ipc.js b/packages/build/src/plugins/ipc.js index 19509b4d49..0dbf6955f2 100644 --- a/packages/build/src/plugins/ipc.js +++ b/packages/build/src/plugins/ipc.js @@ -39,8 +39,8 @@ export const getEventFromChild = async function (childProcess, callId) { throw getChildExitError('Could not receive event from child process because it already exited.') } - const messagePromise = pEvent(childProcess, 'message', { filter: ([actualCallId]) => actualCallId === callId }) - const errorPromise = pEvent(childProcess, 'message', { filter: ([actualCallId]) => actualCallId === 'error' }) + const messagePromise = pEvent(childProcess, 'message', { filter: (data) => data?.[0] === callId }) + const errorPromise = pEvent(childProcess, 'message', { filter: (data) => data?.[0] === 'error' }) const exitPromise = pEvent(childProcess, 'exit', { multiArgs: true }) try { return await Promise.race([getMessage(messagePromise), getError(errorPromise), getExit(exitPromise)]) diff --git a/packages/build/tests/plugins/fixtures/process_send_object/manifest.yml b/packages/build/tests/plugins/fixtures/process_send_object/manifest.yml new file mode 100644 index 0000000000..a3512f0259 --- /dev/null +++ b/packages/build/tests/plugins/fixtures/process_send_object/manifest.yml @@ -0,0 +1,2 @@ +name: test +inputs: [] diff --git a/packages/build/tests/plugins/fixtures/process_send_object/netlify.toml b/packages/build/tests/plugins/fixtures/process_send_object/netlify.toml new file mode 100644 index 0000000000..4b06556c85 --- /dev/null +++ b/packages/build/tests/plugins/fixtures/process_send_object/netlify.toml @@ -0,0 +1,2 @@ +[[plugins]] +package = "./plugin.js" diff --git a/packages/build/tests/plugins/fixtures/process_send_object/plugin.js b/packages/build/tests/plugins/fixtures/process_send_object/plugin.js new file mode 100644 index 0000000000..9a99d0ee52 --- /dev/null +++ b/packages/build/tests/plugins/fixtures/process_send_object/plugin.js @@ -0,0 +1,5 @@ +import process from 'process'; + +export const onPreBuild = function () { + process.send({}); +} diff --git a/packages/build/tests/plugins/tests.js b/packages/build/tests/plugins/tests.js index fdb4d7ffaf..0ddd21e14d 100644 --- a/packages/build/tests/plugins/tests.js +++ b/packages/build/tests/plugins/tests.js @@ -401,3 +401,8 @@ test('Plugins have a pre-populated Blobs context', async (t) => { t.is(netlifyConfig.build.command, `echo ""Hello there""`) }) + +test('Plugins can respond anything to parent process', async (t) => { + const build = await new Fixture('./fixtures/process_send_object').runBuildBinary() + t.true(build.exitCode === 0) +})