66 lines
2.6 KiB
TypeScript
66 lines
2.6 KiB
TypeScript
// @vitest-environment node
|
|
import { existsSync, mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { createRequire } from 'node:module';
|
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
type AfterPackTestHooks = {
|
|
cleanupNativePlatformPackages: (nodeModulesDir: string, platform: string, arch: string) => number;
|
|
cleanupNodeModulesRuntimeJunk: (nodeModulesDir: string, platform: string, arch: string) => number;
|
|
};
|
|
|
|
const afterPack = require('../../scripts/after-pack.cjs') as { __test?: AfterPackTestHooks };
|
|
|
|
describe('after-pack cleanup helpers', () => {
|
|
const tempRoots: string[] = [];
|
|
|
|
afterEach(() => {
|
|
for (const root of tempRoots.splice(0)) {
|
|
rmSync(root, { recursive: true, force: true });
|
|
}
|
|
});
|
|
|
|
function makeTempNodeModules(): string {
|
|
const root = mkdtempSync(join(tmpdir(), 'clawx-after-pack-'));
|
|
tempRoots.push(root);
|
|
const nodeModules = join(root, 'node_modules');
|
|
mkdirSync(nodeModules, { recursive: true });
|
|
return nodeModules;
|
|
}
|
|
|
|
function makePackage(dir: string): void {
|
|
mkdirSync(dir, { recursive: true });
|
|
writeFileSync(join(dir, 'package.json'), '{"version":"1.0.0"}\n', 'utf8');
|
|
}
|
|
|
|
it('keeps both mac Codex native packages for universal builds', () => {
|
|
const nodeModules = makeTempNodeModules();
|
|
makePackage(join(nodeModules, '@openai', 'codex-darwin-arm64'));
|
|
makePackage(join(nodeModules, '@openai', 'codex-darwin-x64'));
|
|
makePackage(join(nodeModules, '@openai', 'codex-linux-x64'));
|
|
|
|
afterPack.__test!.cleanupNativePlatformPackages(nodeModules, 'darwin', 'universal');
|
|
|
|
expect(existsSync(join(nodeModules, '@openai', 'codex-darwin-arm64'))).toBe(true);
|
|
expect(existsSync(join(nodeModules, '@openai', 'codex-darwin-x64'))).toBe(true);
|
|
expect(existsSync(join(nodeModules, '@openai', 'codex-linux-x64'))).toBe(false);
|
|
});
|
|
|
|
it('keeps both mac tree-sitter-bash prebuilds for universal builds', () => {
|
|
const nodeModules = makeTempNodeModules();
|
|
const prebuilds = join(nodeModules, 'tree-sitter-bash', 'prebuilds');
|
|
mkdirSync(join(prebuilds, 'darwin-arm64'), { recursive: true });
|
|
mkdirSync(join(prebuilds, 'darwin-x64'), { recursive: true });
|
|
mkdirSync(join(prebuilds, 'linux-x64'), { recursive: true });
|
|
|
|
afterPack.__test!.cleanupNodeModulesRuntimeJunk(nodeModules, 'darwin', 'universal');
|
|
|
|
expect(existsSync(join(prebuilds, 'darwin-arm64'))).toBe(true);
|
|
expect(existsSync(join(prebuilds, 'darwin-x64'))).toBe(true);
|
|
expect(existsSync(join(prebuilds, 'linux-x64'))).toBe(false);
|
|
});
|
|
});
|