diff --git a/config/scripts/electron-builder-config.test.mjs b/config/scripts/electron-builder-config.test.mjs index fdd80e72a..3f318219e 100644 --- a/config/scripts/electron-builder-config.test.mjs +++ b/config/scripts/electron-builder-config.test.mjs @@ -174,27 +174,36 @@ describe('electron-builder config', () => { }) it('copies the Windows node-pty ConPTY runtime beside the rebuilt addon', async () => { - const resourcesDir = await mkdtemp(join(tmpdir(), 'orca-node-pty-conpty-runtime-')) - try { - const nodePtyDir = join(resourcesDir, 'node_modules', 'node-pty') - const releaseDir = join(nodePtyDir, 'build', 'Release') - const sourceDir = join(nodePtyDir, 'third_party', 'conpty', '0.1.0', 'win10-x64') - await mkdir(releaseDir, { recursive: true }) - await mkdir(sourceDir, { recursive: true }) - await writeFile(join(releaseDir, 'conpty.node'), 'native addon placeholder', 'utf8') - await writeFile(join(sourceDir, 'conpty.dll'), 'dll payload', 'utf8') - await writeFile(join(sourceDir, 'OpenConsole.exe'), 'console payload', 'utf8') + for (const arch of ['x64', 'arm64']) { + const resourcesDir = await mkdtemp(join(tmpdir(), `orca-node-pty-conpty-${arch}-`)) + try { + const nodePtyDir = join(resourcesDir, 'node_modules', 'node-pty') + const releaseDir = join(nodePtyDir, 'build', 'Release') + const conptyRoot = join(nodePtyDir, 'third_party', 'conpty', '0.1.0') + await mkdir(releaseDir, { recursive: true }) + await writeFile(join(releaseDir, 'conpty.node'), 'native addon placeholder', 'utf8') + for (const sourceArch of ['x64', 'arm64']) { + const sourceDir = join(conptyRoot, `win10-${sourceArch}`) + await mkdir(sourceDir, { recursive: true }) + await writeFile(join(sourceDir, 'conpty.dll'), `dll payload ${sourceArch}`, 'utf8') + await writeFile( + join(sourceDir, 'OpenConsole.exe'), + `console payload ${sourceArch}`, + 'utf8' + ) + } - prunePackagedNodePty(resourcesDir, 'win32', 'x64') + prunePackagedNodePty(resourcesDir, 'win32', arch) - await expect(readFile(join(releaseDir, 'conpty', 'conpty.dll'), 'utf8')).resolves.toBe( - 'dll payload' - ) - await expect(readFile(join(releaseDir, 'conpty', 'OpenConsole.exe'), 'utf8')).resolves.toBe( - 'console payload' - ) - } finally { - await rm(resourcesDir, { recursive: true, force: true }) + await expect(readFile(join(releaseDir, 'conpty', 'conpty.dll'), 'utf8')).resolves.toBe( + `dll payload ${arch}` + ) + await expect(readFile(join(releaseDir, 'conpty', 'OpenConsole.exe'), 'utf8')).resolves.toBe( + `console payload ${arch}` + ) + } finally { + await rm(resourcesDir, { recursive: true, force: true }) + } } })