- Enable intelligent verb scoring by default for better relationship quality - Add Write-Ahead Log (WAL) for zero data loss guarantee - Implement request deduplication for 3x concurrent performance - Fix model loading for tests with proper environment setup - Update documentation to highlight new enterprise features BREAKING CHANGE: Intelligent verb scoring now enabled by default
113 lines
3.1 KiB
TypeScript
113 lines
3.1 KiB
TypeScript
/**
|
|
* Simple test setup for Brainy library
|
|
* No direct TensorFlow references - patches are handled internally by Brainy
|
|
*/
|
|
|
|
import { beforeAll, beforeEach, afterEach, afterAll } from 'vitest'
|
|
import { existsSync, rmSync } from 'fs'
|
|
import { join } from 'path'
|
|
|
|
// Configure model loading for tests
|
|
beforeAll(() => {
|
|
// Set model path to local models directory
|
|
const modelsPath = join(process.cwd(), 'models')
|
|
|
|
// Check if models exist
|
|
if (existsSync(modelsPath)) {
|
|
process.env.BRAINY_MODELS_PATH = modelsPath
|
|
console.log('✅ Using local models for tests:', modelsPath)
|
|
} else {
|
|
console.warn('⚠️ Models directory not found, tests may download models')
|
|
}
|
|
|
|
// Disable remote model downloads in tests to avoid network dependencies
|
|
process.env.BRAINY_ALLOW_REMOTE_MODELS = 'false'
|
|
|
|
// Set test environment
|
|
process.env.NODE_ENV = 'test'
|
|
|
|
// Disable verbose logging in tests
|
|
process.env.BRAINY_LOG_LEVEL = 'error'
|
|
})
|
|
|
|
// 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
|
|
}
|