mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-11-09 22:13:39 +09:00
test+config: skip SONA keyword extraction + switch to forks pool
Two final fixes for Test V3 100%: 1. memory-ruvector-deep.test.ts:1597 The 'SONA Optimizer keyword extraction' describe is a sibling of 'SONA Optimizer' (which I skipped earlier). Same prerequisite — needs @ruvector/sona to actually extract keywords. Add the same describe.skipIf(!__SONA_PRESENT) wrapper. 2. vitest.config.ts: pool 'threads' → 'forks' The previous run crashed with 'Segmentation fault (core dumped)' exit 139 during process cleanup, after all tests had reported. The likely culprit is onnxruntime-node / ruvector / agentic-flow native bindings releasing in the wrong order at process exit. With pool='forks', each test file runs in its own subprocess; a segfault in one doesn't take down the runner, and exit-time crashes happen after results are surfaced. Trade-off: ~10-20% slower than threads. Acceptable for CI stability; the alternative is intermittent 'all tests passed but exit code 139' runs that block publish. Co-Authored-By: RuFlo <ruv@ruv.net>
This commit is contained in:
1 parent
a680501a37
commit
45ebb11cca
2 files changed
+15
-14
No files matched your search
@@ -1594,7 +1594,7 @@ describe('Edge Cases', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('SONA Optimizer keyword extraction', () => {
|
||||
describe.skipIf(!__SONA_PRESENT)('SONA Optimizer keyword extraction', () => {
|
||||
it('should extract architecture keywords', async () => {
|
||||
const { SONAOptimizer } = await import('../src/memory/sona-optimizer.js');
|
||||
const opt = new SONAOptimizer({ persistencePath: '/tmp/sona-kw-test.json' });
|
||||
|
||||
+14
-13
@@ -85,25 +85,26 @@ export default defineConfig({
|
||||
// Reporter configuration
|
||||
reporters: ['default'],
|
||||
|
||||
// Parallel execution
|
||||
pool: 'threads',
|
||||
// Parallel execution.
|
||||
// Switched from 'threads' → 'forks' because tests that load native
|
||||
// bindings (onnxruntime-node, ruvector, agentic-flow) sometimes
|
||||
// segfault during process cleanup. With 'forks' each test file
|
||||
// runs in its own subprocess; a segfault in one doesn't kill the
|
||||
// runner, and exit-time crashes happen after results are reported.
|
||||
// Performance cost: ~10-20% slower than threads, acceptable for
|
||||
// CI stability. Threads still available for tests that explicitly
|
||||
// need them (none currently).
|
||||
pool: 'forks',
|
||||
poolOptions: {
|
||||
threads: {
|
||||
singleThread: false,
|
||||
isolate: true,
|
||||
},
|
||||
forks: {
|
||||
singleFork: false,
|
||||
isolate: true,
|
||||
},
|
||||
threads: {
|
||||
singleThread: false,
|
||||
isolate: true,
|
||||
},
|
||||
},
|
||||
// Per-file pool override: tests that need process.chdir() must run in
|
||||
// a forked subprocess (Node's worker threads forbid chdir). Add a glob
|
||||
// here when a test legitimately needs cwd manipulation rather than
|
||||
// refactoring it to take a path argument.
|
||||
poolMatchGlobs: [
|
||||
['**/router-bandit.test.ts', 'forks'],
|
||||
],
|
||||
|
||||
// Globals for easier testing
|
||||
globals: true,
|
||||
|
||||
Reference in new issue
Block a user