feat: advance FreeCAD parity verification and runtime boundaries
This commit is contained in:
@@ -13,6 +13,15 @@ const validLanes = new Set(['all', 'chrome', 'oracle', 'wasm'])
|
||||
if (!validLanes.has(requestedLane)) {
|
||||
throw new Error(`Unknown lane "${requestedLane}". Expected one of: ${[...validLanes].join(', ')}`)
|
||||
}
|
||||
const phaseArg = process.argv.find((arg) => arg.startsWith('--phase='))
|
||||
const requestedPhase = phaseArg ? phaseArg.slice('--phase='.length) : 'all'
|
||||
const validPhases = new Set(['all', 'execute', 'check'])
|
||||
if (!validPhases.has(requestedPhase)) {
|
||||
throw new Error(`Unknown phase "${requestedPhase}". Expected one of: ${[...validPhases].join(', ')}`)
|
||||
}
|
||||
if (requestedPhase !== 'all' && requestedLane !== 'chrome') {
|
||||
throw new Error(`Phase "${requestedPhase}" is currently supported only for the chrome lane.`)
|
||||
}
|
||||
|
||||
const chromeTests = Object.keys(scripts)
|
||||
.filter((name) => name.startsWith('test:chrome-'))
|
||||
@@ -92,6 +101,17 @@ const lanes = {
|
||||
}
|
||||
|
||||
const selectedLanes = requestedLane === 'all' ? ['oracle', 'wasm', 'chrome'] : [requestedLane]
|
||||
const chromeExecution = ['build', ...chromeTests]
|
||||
const chromeChecks = [
|
||||
...chromeTests
|
||||
.map((name) => `check:${name.slice('test:'.length)}`)
|
||||
.filter((name) => scripts[name]),
|
||||
'check:freecad-tsn-stage-evidence',
|
||||
]
|
||||
const commandsFor = (lane) => {
|
||||
if (lane !== 'chrome' || requestedPhase === 'all') return lanes[lane]
|
||||
return requestedPhase === 'execute' ? chromeExecution : chromeChecks
|
||||
}
|
||||
const results = []
|
||||
|
||||
function runScript(name, laneEnvironment = {}) {
|
||||
@@ -118,12 +138,13 @@ try {
|
||||
FREECAD_REFERENCE_CMD: resolve(root, '.cache/freecad/install-desktop/bin/FreeCAD'),
|
||||
}
|
||||
: {}
|
||||
for (const name of lanes[lane]) runScript(name, laneEnvironment)
|
||||
for (const name of commandsFor(lane)) runScript(name, laneEnvironment)
|
||||
}
|
||||
} finally {
|
||||
const outputDir = resolve(root, '.cache', 'ci')
|
||||
mkdirSync(outputDir, { recursive: true })
|
||||
writeFileSync(resolve(outputDir, 'real-verification.json'), `${JSON.stringify({ generatedAt: new Date().toISOString(), lanes: selectedLanes, results }, null, 2)}\n`)
|
||||
const summaryName = requestedPhase === 'all' ? 'real-verification.json' : `real-verification-${requestedPhase}.json`
|
||||
writeFileSync(resolve(outputDir, summaryName), `${JSON.stringify({ generatedAt: new Date().toISOString(), lanes: selectedLanes, phase: requestedPhase, results }, null, 2)}\n`)
|
||||
}
|
||||
|
||||
console.log(`\n[real-verification] completed ${results.length} commands across ${selectedLanes.join(', ')}.`)
|
||||
console.log(`\n[real-verification] completed ${results.length} ${requestedPhase} commands across ${selectedLanes.join(', ')}.`)
|
||||
|
||||
Reference in New Issue
Block a user