Files
stablyai--orca/config/scripts/electron-builder-native-rebuild.test.mjs
2026-07-13 13:05:33 +08:00

75 lines
2.1 KiB
JavaScript

import { createRequire } from 'node:module'
import { describe, expect, it } from 'vitest'
const require = createRequire(import.meta.url)
const {
buildNativeRebuildArgs,
runElectronBuilderNativeRebuild
} = require('./electron-builder-native-rebuild.cjs')
describe('electron-builder native rebuild hook', () => {
it('passes the target platform and arch to Orca native rebuild script', () => {
expect(
buildNativeRebuildArgs({
platform: { nodeName: 'darwin' },
arch: 'x64'
})
).toEqual([
'config/scripts/rebuild-native-deps.mjs',
'--platform=darwin',
'--arch=x64',
'--force'
])
})
it('returns false so electron-builder skips its optional module rebuild pass', () => {
const calls = []
const result = runElectronBuilderNativeRebuild(
{
platform: { nodeName: 'linux' },
arch: 'arm64'
},
(...args) => calls.push(args)
)
expect(result).toBe(false)
expect(calls).toEqual([
[
process.execPath,
['config/scripts/rebuild-native-deps.mjs', '--platform=linux', '--arch=arm64', '--force'],
expect.objectContaining({ stdio: 'inherit' })
]
])
})
it('builds the native CLI launcher before packaging Windows resources', () => {
const calls = []
const result = runElectronBuilderNativeRebuild(
{
platform: { nodeName: 'win32' },
arch: 'x64'
},
(...args) => calls.push(args)
)
expect(result).toBe(false)
expect(calls).toEqual([
[
process.execPath,
['config/scripts/build-windows-cli-launcher.mjs'],
expect.objectContaining({ stdio: 'inherit' })
],
[
process.execPath,
['config/scripts/rebuild-native-deps.mjs', '--platform=win32', '--arch=x64', '--force'],
expect.objectContaining({ stdio: 'inherit' })
]
])
})
it('rejects incomplete electron-builder contexts', () => {
expect(() => buildNativeRebuildArgs({ arch: 'x64' })).toThrow(/platform/)
expect(() => buildNativeRebuildArgs({ platform: { nodeName: 'linux' } })).toThrow(/arch/)
})
})