fix(ci): support ipset sockets and deployed image smoke checks
quality / changes (push) Successful in 6s
quality / commitlint (push) Skipped
quality / openapi (push) Successful in 28s
quality / web (push) Successful in 57s
quality / api (push) Successful in 1m35s
quality / linux-agent-smoke (push) Successful in 24s
quality / docker-check (push) Failing after 3m20s
CD / quality (push) Failing after 6m56s
CD / publish (push) Skipped

This commit is contained in:
Denozordec committed 2026-10-26 14:14:51 +07:00
1 parent 4db34f94f2
commit 57b7652d4d
11 files changed
+206 -15

No files matched your search

+18 -2
View File
@@ -1,10 +1,11 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import { createRequire } from 'node:module'
import { mkdtempSync, rmSync, writeFileSync, existsSync } from 'node:fs'
import { mkdtempSync, rmSync, writeFileSync, existsSync, mkdirSync, symlinkSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { resolve, join } from 'node:path'
import { spawnSync } from 'node:child_process'
import { fixtureDatabaseConstructor } from '../bench/fixture.mjs'
const root = resolve(import.meta.dirname, '../..')
const Database = createRequire(join(root, 'packages/db/package.json'))('better-sqlite3')
const script = join(root, 'deploy/docker/evofw/sqlite-backup.mjs')
@@ -12,8 +13,23 @@ const script = join(root, 'deploy/docker/evofw/sqlite-backup.mjs')
test('online backup includes committed WAL and restore verifies before offline replacement', () => {
const directory = mkdtempSync(join(tmpdir(), 'evofw-backup-test-'))
let db
const run = (...args) => spawnSync(process.execPath, [script, ...args], { cwd: directory, encoding: 'utf8', env: { ...process.env, NODE_PATH: join(root, 'packages/db/node_modules') } })
try {
// Isolated pnpm-shaped tree: the dependency is a sibling of the real package,
// never a top-level dependency reachable from its logical symlink location.
const store = join(directory, 'virtual-store/node_modules')
const realPackage = join(store, '@evofw/db')
mkdirSync(realPackage, { recursive: true })
writeFileSync(join(realPackage, 'package.json'), '{"name":"@evofw/db"}')
mkdirSync(join(directory, 'node_modules/@evofw'), { recursive: true })
const actualDependency = createRequire(join(root, 'packages/db/package.json')).resolve('better-sqlite3/package.json')
symlinkSync(resolve(actualDependency, '..'), join(store, 'better-sqlite3'), 'junction')
symlinkSync(realPackage, join(directory, 'node_modules/@evofw/db'), 'junction')
const env = { ...process.env }
delete env.NODE_PATH
const run = (...args) => spawnSync(process.execPath, [script, ...args], { cwd: directory, encoding: 'utf8', env })
assert.throws(() => createRequire(join(directory, 'node_modules/@evofw/db/package.json'))('better-sqlite3'), { code: 'MODULE_NOT_FOUND' })
const previousDirectory = process.cwd()
try { process.chdir(directory); assert.equal(fixtureDatabaseConstructor(), Database) } finally { process.chdir(previousDirectory) }
const source = join(directory, 'source.db')
const backup = join(directory, 'backup.db')
const restored = join(directory, 'restored.db')