sails-sqlite
Version:
SQLite adapter for Sails/Waterline
89 lines (72 loc) โข 2.32 kB
JavaScript
const { spawn } = require('node:child_process')
const path = require('node:path')
const fs = require('node:fs')
// __dirname is automatically available in CommonJS
const testFiles = ['transaction.test.js']
function cleanupTestDatabases() {
try {
const testDir = __dirname
const files = fs.readdirSync(testDir)
// Remove all test database files (*.sqlite, *.sqlite-wal, *.sqlite-shm)
const dbFiles = files.filter((file) => {
return file.match(/\.(sqlite|sqlite-wal|sqlite-shm)$/)
})
dbFiles.forEach((file) => {
const filePath = path.join(testDir, file)
fs.unlinkSync(filePath)
console.log(`๐๏ธ Cleaned up: ${file}`)
})
if (dbFiles.length === 0) {
console.log('๐งน No test database files to clean up')
}
} catch (error) {
console.warn(
'โ ๏ธ Warning: Failed to clean up test database files:',
error.message
)
}
}
async function runTest(testFile) {
return new Promise((resolve, reject) => {
const testPath = path.join(__dirname, testFile)
const child = spawn('node', ['--test', testPath], {
stdio: 'inherit'
})
child.on('close', (code) => {
if (code === 0) {
resolve()
} else {
reject(new Error(`Test ${testFile} failed with code ${code}`))
}
})
child.on('error', reject)
})
}
async function runAllTests() {
console.log('๐งช Running sails-sqlite adapter tests...\n')
// Clean up any leftover database files before starting
console.log('๐งน Cleaning up any existing test database files...')
cleanupTestDatabases()
for (const testFile of testFiles) {
console.log(`\n๐ Running ${testFile}...`)
try {
await runTest(testFile)
console.log(`โ
${testFile} passed`)
} catch (error) {
console.error(`โ ${testFile} failed:`, error.message)
// Clean up before exiting
console.log('\n๐งน Cleaning up test database files after failure...')
cleanupTestDatabases()
process.exit(1)
}
}
console.log('\n๐ All tests passed!')
// Clean up after successful test run
console.log('\n๐งน Cleaning up test database files...')
cleanupTestDatabases()
}
runAllTests().catch((error) => {
console.error('โ Test runner failed:', error)
process.exit(1)
})