nodejs/test/parallel/test-sqlite-database-sync-dispose.js
Colin Ihrig 200b665cca
sqlite: add DatabaseSync.prototype[Symbol.dispose]()
This commit adds support for the explicit resource management
proposal to the sqlite module.

Refs: https://github.com/nodejs/node/pull/53752#discussion_r1667750387
PR-URL: https://github.com/nodejs/node/pull/57506
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2025-03-18 18:52:07 +00:00

33 lines
840 B
JavaScript

'use strict';
require('../common');
const tmpdir = require('../common/tmpdir');
const assert = require('node:assert');
const { join } = require('node:path');
const { DatabaseSync } = require('node:sqlite');
const { suite, test } = require('node:test');
let cnt = 0;
tmpdir.refresh();
function nextDb() {
return join(tmpdir.path, `database-${cnt++}.db`);
}
suite('DatabaseSync.prototype[Symbol.dispose]()', () => {
test('closes an open database', () => {
const db = new DatabaseSync(nextDb());
db[Symbol.dispose]();
assert.throws(() => {
db.close();
}, /database is not open/);
});
test('supports databases that are not open', () => {
const db = new DatabaseSync(nextDb(), { open: false });
db[Symbol.dispose]();
assert.throws(() => {
db.close();
}, /database is not open/);
});
});