mirror of
https://github.com/ruvnet/RuView.git
synced 2026-10-22 14:42:44 -05:00
Integrate reviewed source PRs #2201-#2223, #2225-#2231, #2235-#2240, #2242 and #2243 (firmware README hunks remain in #2247). Regenerate one package manifest after integration, validate native Windows test execution, bound MTK listener startup, support official C6 release bundles, and retain stronger release metadata gates.
29 lines
2.4 KiB
JavaScript
29 lines
2.4 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { mkdtempSync, writeFileSync, readFileSync, existsSync, rmSync } from 'node:fs';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import { spawnSync } from 'node:child_process';
|
|
const script=fileURLToPath(new URL('../../../scripts/align-ground-truth.js',import.meta.url));
|
|
function alignment(extra, inspect) {
|
|
const dir=mkdtempSync(join(tmpdir(),'ruview-align-args-'));
|
|
try {
|
|
const gt=join(dir,'gt.jsonl'),csi=join(dir,'csi.jsonl'),output=join(dir,'paired.jsonl');
|
|
const t=1750000000;
|
|
writeFileSync(gt,[0,.01,.02,.03].map(d=>JSON.stringify({ts_ns:Math.round((t+d)*1e9),keypoints:Array.from({length:17},()=>[.5,.5]),confidence:1,n_visible:17})).join('\n')+'\n');
|
|
writeFileSync(csi,[0,.01,.02,.03].map(d=>JSON.stringify({type:'feature',timestamp:t+d,node_id:1,features:[1,2,3,4,5,6,7,8]})).join('\n')+'\n');
|
|
const flags=extra.filter((_,i)=>i%2===0).map((flag,i)=>`${flag}=${extra[i*2+1]}`);
|
|
const r=spawnSync(process.execPath,['--max-old-space-size=32',script,'--gt',gt,'--csi',csi,'--output',output,'--window-frames','2','--min-camera-frames','1',...flags],{encoding:'utf8',timeout:1000,maxBuffer:128*1024});
|
|
return inspect(r,output);
|
|
} finally {rmSync(dir,{recursive:true,force:true});}
|
|
}
|
|
for(const [flag,value] of [['window-frames','0'],['window-frames','-1'],['window-frames','1.5'],['window-frames','2junk'],['window-ms','NaN'],['window-ms','-1'],['min-camera-frames','0'],['min-camera-frames','1.5'],['min-confidence','NaN'],['min-confidence','1.1'],['clock-offset-ms','Infinity']]){
|
|
test(`public alignment CLI rejects --${flag}=${value} before writing output`,()=>alignment(['--'+flag,value],(r,output)=>{
|
|
assert.equal(r.status,2,`${r.error?.message||''} ${r.stderr.slice(0,200)}`);assert.match(r.stderr,new RegExp('--'+flag));assert.equal(existsSync(output),false);
|
|
}));
|
|
}
|
|
test('public alignment CLI retains complete windows and permits zero expansion/confidence with signed finite offset',()=>alignment(['--window-ms','0','--min-confidence','0','--clock-offset-ms','-0.5'],(r,output)=>{
|
|
assert.equal(r.status,0,r.stderr);const frames=readFileSync(output,'utf8').trim().split('\n').map(JSON.parse);assert.equal(frames.length,2);assert.deepEqual(frames[0].csi_shape,[2,8]);assert.equal(frames[0].conf,1);assert.ok(frames.every(f=>f.n_camera_frames>0));
|
|
}));
|