// @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); }); });