47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
const { test, describe } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const { CROSS_PLATFORM_TEST_REASON, runCrossPlatformTests } = require('../scripts/run-cross-platform-tests.cjs');
|
|
|
|
describe('run cross-platform tests module', () => {
|
|
test('returns pass reason on zero exit', () => {
|
|
const out = runCrossPlatformTests({}, {
|
|
spawnSync: () => ({ status: 0, stdout: 'ok', stderr: '' }),
|
|
});
|
|
assert.strictEqual(out.ok, true);
|
|
assert.strictEqual(out.reason, CROSS_PLATFORM_TEST_REASON.PASS);
|
|
assert.ok(out.command.includes('--base next'));
|
|
});
|
|
|
|
test('classifies infrastructure failure', () => {
|
|
const out = runCrossPlatformTests({}, {
|
|
spawnSync: () => ({ status: 2, stdout: '', stderr: 'infrastructure failure' }),
|
|
});
|
|
assert.strictEqual(out.ok, false);
|
|
assert.strictEqual(out.reason, CROSS_PLATFORM_TEST_REASON.INFRA_FAILURE);
|
|
});
|
|
|
|
test('classifies test failure from FAIL marker', () => {
|
|
const out = runCrossPlatformTests({}, {
|
|
spawnSync: () => ({ status: 1, stdout: 'linux FAIL 1/2 tests (1 failures)', stderr: '' }),
|
|
});
|
|
assert.strictEqual(out.ok, false);
|
|
assert.strictEqual(out.reason, CROSS_PLATFORM_TEST_REASON.TEST_FAILURE);
|
|
});
|
|
|
|
test('passes options through to command args', () => {
|
|
let cmd = null;
|
|
let args = null;
|
|
runCrossPlatformTests({ base: 'main', head: 'abc123', source: '/tmp/x', targets: 'linux' }, {
|
|
spawnSync: (c, a) => {
|
|
cmd = c;
|
|
args = a;
|
|
return { status: 0, stdout: '', stderr: '' };
|
|
},
|
|
});
|
|
|
|
assert.strictEqual(cmd, 'gsd-test');
|
|
assert.deepStrictEqual(args, ['--targets', 'linux', '--base', 'main', '--head', 'abc123', '--source', '/tmp/x']);
|
|
});
|
|
});
|