41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { spawn } from '@malept/cross-spawn-promise';
|
|
import * as fs from 'fs-extra';
|
|
import * as path from 'path';
|
|
|
|
import { makeUniversalApp } from '../src/index';
|
|
|
|
const appsPath = path.resolve(__dirname, 'fixtures', 'apps');
|
|
|
|
async function ensureUniversal(app: string) {
|
|
const exe = path.resolve(app, 'Contents', 'MacOS', 'Electron');
|
|
const result = await spawn(exe);
|
|
expect(result).toContain('arm64');
|
|
const result2 = await spawn('arch', ['-x86_64', exe]);
|
|
expect(result2).toContain('x64');
|
|
}
|
|
|
|
describe('makeUniversalApp', () => {
|
|
it('should correctly merge two identical asars', async () => {
|
|
const out = path.resolve(appsPath, 'MergedAsar.app');
|
|
await makeUniversalApp({
|
|
x64AppPath: path.resolve(appsPath, 'X64Asar.app'),
|
|
arm64AppPath: path.resolve(appsPath, 'Asar.app'),
|
|
outAppPath: out,
|
|
});
|
|
await ensureUniversal(out);
|
|
// Only a single asar as they were identical
|
|
expect(
|
|
(await fs.readdir(path.resolve(out, 'Contents', 'Resources'))).filter((p) =>
|
|
p.endsWith('asar'),
|
|
),
|
|
).toEqual(['app.asar']);
|
|
}, 60000);
|
|
|
|
// TODO: Add tests for
|
|
// * different asar files
|
|
// * identical app dirs
|
|
// * different app dirs
|
|
// * different app dirs with different macho files
|
|
// * identical app dirs with universal macho files
|
|
});
|