perf: optimize app startup and background lifecycles
This commit is contained in:
35
tests/unit/streaming-zip.test.ts
Normal file
35
tests/unit/streaming-zip.test.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { afterEach, describe, expect, it } from 'vitest';
|
||||
import { writeStoredZip } from '@electron/services/streaming-zip';
|
||||
|
||||
describe('streaming ZIP writer', () => {
|
||||
const temporaryDirectories: string[] = [];
|
||||
|
||||
afterEach(async () => {
|
||||
await Promise.all(temporaryDirectories.splice(0).map((directory) => (
|
||||
rm(directory, { recursive: true, force: true })
|
||||
)));
|
||||
});
|
||||
|
||||
it('writes deterministic stored entries without buffering the archive', async () => {
|
||||
const root = await mkdtemp(join(tmpdir(), 'streaming-zip-test-'));
|
||||
temporaryDirectories.push(root);
|
||||
await mkdir(join(root, 'assets'));
|
||||
await writeFile(join(root, 'index.html'), '<main>ok</main>');
|
||||
await writeFile(join(root, 'assets', '中.js'), 'console.log(1)');
|
||||
const archivePath = join(root, 'build.zip');
|
||||
const result = await writeStoredZip([
|
||||
{ path: 'assets/中.js', source: { filePath: join(root, 'assets', '中.js') } },
|
||||
{ path: 'index.html', source: { filePath: join(root, 'index.html') } },
|
||||
], archivePath);
|
||||
|
||||
const archiveBytes = await readFile(archivePath);
|
||||
expect(archiveBytes.subarray(0, 4).toString('hex')).toBe('504b0304');
|
||||
expect(archiveBytes.includes(Buffer.from('<main>ok</main>'))).toBe(true);
|
||||
expect(archiveBytes.includes(Buffer.from('console.log(1)'))).toBe(true);
|
||||
expect(result.archiveBytes).toBe(archiveBytes.length);
|
||||
expect(result.sha256).toMatch(/^[a-f0-9]{64}$/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user