mirror of
https://github.com/PR0M3TH3AN/TORCH.git
synced 2026-10-28 08:21:53 +00:00
114 lines
5.8 KiB
JavaScript
114 lines
5.8 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { execFileSync } from 'node:child_process';
|
|
import { mkdirSync, mkdtempSync, writeFileSync } from 'node:fs';
|
|
import { tmpdir } from 'node:os';
|
|
import { basename, join } from 'node:path';
|
|
import test from 'node:test';
|
|
import { CheckService } from '../../src/checks/service.mjs';
|
|
import { openControlPlane } from '../../src/control-plane/service.mjs';
|
|
import { analyzeRepository } from '../../src/kernel/analyze.mjs';
|
|
import { proposeDomains } from '../../src/kernel/domains.mjs';
|
|
import { inspectRepository } from '../../src/kernel/git.mjs';
|
|
import { installProject } from '../../src/kernel/install.mjs';
|
|
import { createWorktrees } from '../../src/kernel/worktrees.mjs';
|
|
import { ResourceService } from '../../src/resources/service.mjs';
|
|
|
|
function fixture() {
|
|
const root = mkdtempSync(join(tmpdir(), 'torch-verification-'));
|
|
execFileSync('git', ['init', '-b', 'main', root]);
|
|
execFileSync('git', ['-C', root, 'config', 'user.email', '[email protected]']);
|
|
execFileSync('git', ['-C', root, 'config', 'user.name', 'TORCH Test']);
|
|
writeFileSync(join(root, 'package.json'), `${JSON.stringify({
|
|
name: 'verification-fixture',
|
|
scripts: {
|
|
'verify:pass': 'node -e "process.exit(0)"',
|
|
'verify:fail': 'node -e "process.exit(7)"',
|
|
},
|
|
}, null, 2)}\n`);
|
|
writeFileSync(join(root, 'app.js'), 'export const app = true;\n');
|
|
mkdirSync(join(root, 'test'));
|
|
writeFileSync(join(root, 'test', 'browser.js'), 'export const browserScenario = true;\n');
|
|
writeFileSync(join(root, 'test', 'integration.js'), 'export const integrationScenario = true;\n');
|
|
execFileSync('git', ['-C', root, 'add', '.']);
|
|
execFileSync('git', ['-C', root, 'commit', '-m', 'fixture']);
|
|
let repository = inspectRepository(root);
|
|
const proposal = proposeDomains({ repository, analysis: analyzeRepository(repository) });
|
|
proposal.review = {
|
|
status: 'approved', reviewedAt: '2026-09-27T00:00:00Z', reviewedBy: 'fixture-owner', notes: [],
|
|
};
|
|
const env = { ...process.env, XDG_DATA_HOME: join(tmpdir(), `${basename(root)}-state`) };
|
|
installProject({ repository, proposal, env, projectId: 'verification-fixture' });
|
|
execFileSync('git', ['-C', root, 'add', '.torch']);
|
|
execFileSync('git', ['-C', root, 'commit', '-m', 'install torch']);
|
|
repository = inspectRepository(root);
|
|
createWorktrees({ repository, parentOverride: join(tmpdir(), `${basename(root)}-worktrees`) });
|
|
return {
|
|
root, env, worker: proposal.domains.find((domain) => domain.id !== 'qa').id,
|
|
peer: proposal.domains.find((domain) => domain.id === 'qa').id,
|
|
};
|
|
}
|
|
|
|
test('SCN-exact-sha-checks: clean committed inputs produce exact receipts and failures never become passes', () => {
|
|
const context = fixture();
|
|
const control = openControlPlane({ repositoryRoot: context.root, env: context.env });
|
|
let id = 0;
|
|
const checks = new CheckService({
|
|
repositoryRoot: context.root, controlPlane: control, idFactory: () => `receipt-${++id}`,
|
|
});
|
|
assert.deepEqual(checks.listChecks().map((check) => check.id), ['verify-pass', 'verify-fail']);
|
|
const passed = checks.run({ checkId: 'verify-pass', areaId: context.worker });
|
|
assert.equal(passed.result, 'pass');
|
|
assert.equal(passed.commit.length, 40);
|
|
assert.equal(checks.exactPasses({ commit: passed.commit, requiredChecks: ['verify-pass'] }), true);
|
|
const failed = checks.run({ checkId: 'verify-fail', areaId: context.worker });
|
|
assert.equal(failed.result, 'fail');
|
|
assert.equal(failed.exitStatus, 7);
|
|
assert.equal(checks.exactPasses({ commit: failed.commit, requiredChecks: ['verify-fail'] }), false);
|
|
|
|
const worktree = passed.worktree;
|
|
writeFileSync(join(worktree, 'uncommitted.js'), 'not part of a receipt\n');
|
|
assert.throws(
|
|
() => checks.run({ checkId: 'verify-pass', areaId: context.worker }),
|
|
(error) => error.code === 'CHECK_BLOCKED'
|
|
&& error.details.some((blocker) => blocker.code === 'WORKTREE_DIRTY'),
|
|
);
|
|
assert.equal(control.readAudit({ actorId: context.worker })
|
|
.some((event) => event.operation === 'check.run' && event.entityId === passed.id), true);
|
|
control.close();
|
|
});
|
|
|
|
test('SCN-resource-fifo: one holder, queued peer, cancellation, and stale visibility preserve fair ownership', () => {
|
|
const context = fixture();
|
|
const control = openControlPlane({ repositoryRoot: context.root, env: context.env });
|
|
let nowMs = Date.parse('2026-09-27T12:00:00Z');
|
|
let id = 0;
|
|
const resources = new ResourceService({
|
|
repositoryRoot: context.root, controlPlane: control,
|
|
clock: () => new Date(nowMs), idFactory: () => `resource-${++id}`,
|
|
});
|
|
assert.equal(resources.list().some((resource) => resource.id === 'browser'), true);
|
|
const first = resources.acquire({ resourceId: 'browser', areaId: context.worker });
|
|
assert.equal(first.disposition, 'acquired');
|
|
const waiting = resources.acquire({ resourceId: 'browser', areaId: context.peer });
|
|
assert.equal(waiting.disposition, 'queued');
|
|
assert.equal(waiting.request.position, 1);
|
|
assert.equal(resources.status('browser').leases[0].areaId, context.worker);
|
|
assert.throws(
|
|
() => resources.release({ resourceId: 'browser', areaId: context.peer }),
|
|
(error) => error.code === 'RESOURCE_LEASE_NOT_HELD',
|
|
);
|
|
resources.release({ resourceId: 'browser', areaId: context.worker });
|
|
const promoted = resources.acquire({ resourceId: 'browser', areaId: context.peer });
|
|
assert.equal(promoted.disposition, 'acquired');
|
|
|
|
nowMs += 3_700_000;
|
|
const stale = resources.status('browser').leases[0];
|
|
assert.equal(stale.state, 'stale');
|
|
const workerAgain = resources.acquire({ resourceId: 'browser', areaId: context.worker });
|
|
assert.equal(workerAgain.disposition, 'queued', 'stale leases are visible but never stolen automatically');
|
|
const cancelled = resources.cancel({ resourceId: 'browser', areaId: context.worker });
|
|
assert.equal(cancelled.state, 'cancelled');
|
|
assert.equal(resources.status('browser').queue.length, 0);
|
|
control.close();
|
|
});
|