36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
// @vitest-environment node
|
|
import { readFileSync, writeFileSync, mkdtempSync, rmSync } from 'node:fs';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
import { patchNsisExtractTemplate } from '../../scripts/patch-nsis-extract.mjs';
|
|
|
|
const SAMPLE_MACRO = `!macro extractUsing7za FILE
|
|
Push $OUTDIR
|
|
CopyFiles /SILENT "$PLUGINSDIR\\7z-out\\*" $OUTDIR
|
|
!macroend`;
|
|
|
|
describe('patch-nsis-extract', () => {
|
|
let tempDir = '';
|
|
|
|
afterEach(() => {
|
|
if (tempDir) {
|
|
rmSync(tempDir, { recursive: true, force: true });
|
|
tempDir = '';
|
|
}
|
|
});
|
|
|
|
it('replaces CopyFiles-based extractUsing7za with direct 7z extraction', () => {
|
|
tempDir = mkdtempSync(join(tmpdir(), 'clawx-patch-nsis-'));
|
|
const target = join(tempDir, 'extractAppPackage.nsh');
|
|
writeFileSync(target, `before\n${SAMPLE_MACRO}\nafter`, 'utf8');
|
|
|
|
expect(patchNsisExtractTemplate(target)).toBe(true);
|
|
|
|
const result = readFileSync(target, 'utf8');
|
|
expect(result).toContain('ClawX-patched');
|
|
expect(result).not.toContain('CopyFiles /SILENT');
|
|
expect(patchNsisExtractTemplate(target)).toBe(true);
|
|
});
|
|
});
|