test: cover isolated SQLite invariants and durability
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const { spawn, execFileSync } = require('node:child_process');
|
||||
const { mkdtempSync, openSync, closeSync, writeFileSync } = require('node:fs');
|
||||
const { mkdtempSync, openSync, closeSync, writeFileSync, existsSync, readdirSync, readFileSync } = require('node:fs');
|
||||
const { tmpdir } = require('node:os');
|
||||
const { join, resolve } = require('node:path');
|
||||
const { once } = require('node:events');
|
||||
@@ -9,6 +9,15 @@ const { randomUUID } = require('node:crypto');
|
||||
const repo = resolve(__dirname, '..');
|
||||
assert.ok(process.argv[2], 'Pass a separately built baseline repository directory');
|
||||
const baseline = resolve(process.argv[2]);
|
||||
assert.notEqual(baseline, repo, 'Baseline must be a separate historical build');
|
||||
for (const root of [baseline, repo]) {
|
||||
assert.ok(existsSync(join(root, 'dist/src/main.js')), `Build first: ${root}`);
|
||||
}
|
||||
const migrations = root => readdirSync(join(root, 'prisma/migrations')).filter(name => existsSync(join(root, 'prisma/migrations', name, 'migration.sql'))).sort();
|
||||
const previous = migrations(baseline), current = migrations(repo);
|
||||
assert.ok(previous.length > 0 && previous.length < current.length, 'Baseline must precede the tested migrations');
|
||||
assert.deepEqual(previous, current.slice(0, previous.length), 'Baseline migrations must be an unchanged prefix');
|
||||
for (const name of previous) assert.equal(readFileSync(join(baseline, 'prisma/migrations', name, 'migration.sql'), 'utf8'), readFileSync(join(repo, 'prisma/migrations', name, 'migration.sql'), 'utf8'));
|
||||
const Database = require(join(repo, 'node_modules/better-sqlite3'));
|
||||
const dir = mkdtempSync(join(tmpdir(), 'wealthledger-bank-durability-'));
|
||||
let file = join(dir, 'history.db');
|
||||
|
||||
Reference in New Issue
Block a user