mirror of
https://github.com/Heretek-AI/Strata.git
synced 2026-11-10 10:31:26 -10:00
17 lines
1.2 KiB
JavaScript
17 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
/** Enumerate test files explicitly so npm test works without shell glob expansion. */
|
|
import {readdirSync} from 'node:fs';
|
|
import {spawn} from 'node:child_process';
|
|
import {resolve} from 'node:path';
|
|
const root=resolve(import.meta.dirname,'..');
|
|
const files=readdirSync(resolve(root,'tests')).filter(name=>name.endsWith('.test.mjs')).sort().map(name=>resolve(root,'tests',name));
|
|
/* Every test file runs against scratch copies of the per-user places the host writes to (the owner's real profile is never touched). */
|
|
import {mkdtempSync} from 'node:fs';
|
|
import {tmpdir} from 'node:os';
|
|
import {join} from 'node:path';
|
|
const scratch=mkdtempSync(join(tmpdir(),'strata-host-suite-profile-'));
|
|
const env={...process.env,STRATA_SETTINGS_FILE:join(scratch,'app-settings.json'),STRATA_COMPONENTS_DIR:join(scratch,'components'),LOCALAPPDATA:join(scratch,'Local'),APPDATA:join(scratch,'Roaming'),XDG_DATA_HOME:join(scratch,'xdg-data'),XDG_STATE_HOME:join(scratch,'xdg-state'),XDG_CONFIG_HOME:join(scratch,'xdg-config')};
|
|
const child=spawn(process.execPath,['--test',...files],{cwd:root,stdio:'inherit',env});
|
|
child.on('error',error=>{console.error(error.message);process.exitCode=1;});
|
|
child.on('exit',(code,signal)=>{process.exitCode=code??(signal?1:0);});
|