brainy/tests/setup.ts
David Snelling 26c7d61185 CHECKPOINT: Brainy 2.0 API refactor - pre-fixes state
Current state:
- Unified augmentation system to BrainyAugmentation interface
- Changed methods to specific noun/verb naming (addNoun, getNoun, etc)
- Made old methods private
- Combined getNouns into single unified method
- Neural API exists and is complete
- Triple Intelligence uses correct Brainy operators (not MongoDB)

Issues identified:
- Documentation incorrectly shows MongoDB operators (code is correct)
- Need to ensure all features are properly exposed
- Need to verify nothing was lost in simplification

This commit serves as a rollback point before applying fixes.
2025-08-25 09:52:32 -07:00

90 lines
2.4 KiB
TypeScript

/**
* Simple test setup for Brainy library
* No direct TensorFlow references - patches are handled internally by Brainy
*/
import { beforeEach, afterEach, afterAll } from 'vitest'
import { existsSync, rmSync } from 'fs'
import { join } from 'path'
// Define the test utilities type for reuse
type TestUtilsType = {
createTestVector: (dimensions: number) => number[]
timeout: number
}
// Extend global type definitions for both global and globalThis
declare global {
let testUtils: TestUtilsType | undefined
let __ENV__: any
}
// Explicitly declare globalThis interface to ensure TypeScript recognizes these properties
declare global {
interface globalThis {
testUtils?: TestUtilsType | undefined
__ENV__?: any
}
}
// Clean up between tests
beforeEach(() => {
// Clear any global state that might interfere with tests
if (typeof globalThis !== 'undefined' && globalThis.__ENV__) {
delete globalThis.__ENV__
}
if (typeof global !== 'undefined' && global.__ENV__) {
delete global.__ENV__
}
// Clean up test data directory to prevent file accumulation
const testDataDir = join(process.cwd(), 'brainy-data')
if (existsSync(testDataDir)) {
try {
rmSync(testDataDir, { recursive: true, force: true })
} catch (error) {
// Ignore errors during cleanup
}
}
})
// Clean up after each test
afterEach(() => {
// Force garbage collection if available (requires --expose-gc flag)
if (global.gc) {
global.gc()
}
})
// Final cleanup after all tests
afterAll(() => {
// Clean up test data directory
const testDataDir = join(process.cwd(), 'brainy-data')
if (existsSync(testDataDir)) {
try {
rmSync(testDataDir, { recursive: true, force: true })
} catch (error) {
// Ignore errors during cleanup
}
}
})
// Add simple test utilities to both global and globalThis for compatibility
const testUtilsObject = {
// Create a simple test vector with predictable values
createTestVector: (dimensions: number): number[] => {
return Array.from({ length: dimensions }, (_, i) => (i + 1) / dimensions)
},
// Standard timeout for async operations
timeout: 30000
}
global.testUtils = testUtilsObject
globalThis.testUtils = testUtilsObject
// Set a clear test environment flag for embedding system
globalThis.__BRAINY_TEST_ENV__ = true
if (typeof global !== 'undefined') {
(global as any).__BRAINY_TEST_ENV__ = true
}