26 lines
903 B
JavaScript
26 lines
903 B
JavaScript
import { test } from 'node:test';
|
|||
|
|
import assert from 'node:assert/strict';
|
||
|
|
import { createRequire } from 'node:module';
|
||
|
|
import { mkdtempSync } from 'node:fs';
|
||
|
|
import { tmpdir } from 'node:os';
|
||
|
|
import { join } from 'node:path';
|
||
|
|
|
||
|
|
import { acquireWriterLease } from '../scripts/writer-lease.ts';
|
||
|
|
|
||
|
|
const require = createRequire(import.meta.url);
|
||
|
|
const { DatabaseSync } = require('node:sqlite');
|
||
|
|
|
||
|
|
test('a writer lease excludes another writer until it is released', () => {
|
||
|
|
const lockPath = join(mkdtempSync(join(tmpdir(), 'obelisk-writer-lease-')), 'writer.lock.sqlite');
|
||
|
|
const openDb = path => new DatabaseSync(path);
|
||
|
|
|
||
|
|
const first = acquireWriterLease({ lockPath, openDb });
|
||
|
|
assert.ok(first);
|
||
|
|
assert.equal(acquireWriterLease({ lockPath, openDb }), null);
|
||
|
|
|
||
|
|
first.release();
|
||
|
|
const afterRelease = acquireWriterLease({ lockPath, openDb });
|
||
|
|
assert.ok(afterRelease);
|
||
|
|
afterRelease.release();
|
||
|
|
});
|