All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
37 lines
1.9 KiB
TypeScript
37 lines
1.9 KiB
TypeScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { mkdtempSync, writeFileSync, readFileSync } from 'node:fs'
|
|
import { tmpdir } from 'node:os'
|
|
import { join, resolve } from 'node:path'
|
|
import { spawnSync } from 'node:child_process'
|
|
import { loadConfigFromFile } from '@prisma/config'
|
|
|
|
test('patched merger loads Prisma configuration and applies migrations idempotently', async () => {
|
|
const dir = mkdtempSync(join(tmpdir(), 'syncova-prisma-compat-'))
|
|
const schema = resolve('prisma/schema.prisma')
|
|
const configFile = join(dir, 'prisma.config.cjs')
|
|
writeFileSync(configFile, 'module.exports = ' + JSON.stringify({
|
|
schema, migrations: { path: resolve('prisma/migrations') },
|
|
}))
|
|
const loaded = await loadConfigFromFile({ configRoot: dir, configFile })
|
|
assert.equal(loaded.error, undefined)
|
|
assert.equal(loaded.config?.schema, schema)
|
|
const env = { ...process.env, DATABASE_URL: 'file:' + join(dir, 'migration.db').split('\\').join('/') }
|
|
for (let run = 0; run < 2; run++) {
|
|
const result = spawnSync(process.execPath, [
|
|
'node_modules/prisma/build/index.js', 'migrate', 'deploy', '--schema', schema,
|
|
], { env, encoding: 'utf8', timeout: 60000 })
|
|
assert.equal(result.status, 0, result.stderr + result.stdout)
|
|
}
|
|
const backup = join(dir, 'backup.db')
|
|
const restored = join(dir, 'restored.db')
|
|
for (const args of [['backup', backup], ['restore', backup, restored], ['verify', restored]]) {
|
|
const result = spawnSync(process.execPath, ['scripts/database-backup.js', ...args], { env, encoding: 'utf8', timeout: 60000 })
|
|
assert.equal(result.status, 0, result.stderr + result.stdout)
|
|
}
|
|
assert.deepEqual(readFileSync(backup), readFileSync(restored))
|
|
const overwrite = spawnSync(process.execPath, ['scripts/database-backup.js', 'restore', backup, restored], { env, encoding: 'utf8' })
|
|
assert.equal(overwrite.status, 1)
|
|
assert.match(overwrite.stderr, /refusing to overwrite/)
|
|
})
|