Skip to content

Commit 64efbfd

Browse files
Renegade334aduh95
authored andcommitted
test: use ERM to destroy sqlite database handles after tests
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk> PR-URL: #63076 Refs: #63052 Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
1 parent 69df688 commit 64efbfd

2 files changed

Lines changed: 46 additions & 86 deletions

File tree

‎test/parallel/test-sqlite-database-sync-dispose.js‎

Lines changed: 0 additions & 33 deletions
This file was deleted.

‎test/parallel/test-sqlite-database-sync.js‎

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,18 @@ suite('DatabaseSync() constructor', () => {
8989

9090
test('is not read-only by default',(t)=>{
9191
constdbPath=nextDb();
92-
constdb=newDatabaseSync(dbPath);
92+
usingdb=newDatabaseSync(dbPath);
9393
db.exec('CREATE TABLE foo (id INTEGER PRIMARY KEY)');
9494
});
9595

9696
test('is read-only if readOnly is set',(t)=>{
9797
constdbPath=nextDb();
9898
{
99-
constdb=newDatabaseSync(dbPath);
99+
usingdb=newDatabaseSync(dbPath);
100100
db.exec('CREATE TABLE foo (id INTEGER PRIMARY KEY)');
101-
db.close();
102101
}
103102
{
104-
constdb=newDatabaseSync(dbPath,{readOnly: true});
103+
usingdb=newDatabaseSync(dbPath,{readOnly: true});
105104
t.assert.throws(()=>{
106105
db.exec('CREATE TABLE bar (id INTEGER PRIMARY KEY)');
107106
},{
@@ -122,12 +121,11 @@ suite('DatabaseSync() constructor', () => {
122121

123122
test('enables foreign key constraints by default',(t)=>{
124123
constdbPath=nextDb();
125-
constdb=newDatabaseSync(dbPath);
124+
usingdb=newDatabaseSync(dbPath);
126125
db.exec(`
127126
CREATE TABLE foo (id INTEGER PRIMARY KEY);
128127
CREATE TABLE bar (foo_id INTEGER REFERENCES foo(id));
129128
`);
130-
t.after(()=>{db.close();});
131129
t.assert.throws(()=>{
132130
db.exec('INSERT INTO bar (foo_id) VALUES (1)');
133131
},{
@@ -138,12 +136,11 @@ suite('DatabaseSync() constructor', () => {
138136

139137
test('allows disabling foreign key constraints',(t)=>{
140138
constdbPath=nextDb();
141-
constdb=newDatabaseSync(dbPath,{enableForeignKeyConstraints: false});
139+
usingdb=newDatabaseSync(dbPath,{enableForeignKeyConstraints: false});
142140
db.exec(`
143141
CREATE TABLE foo (id INTEGER PRIMARY KEY);
144142
CREATE TABLE bar (foo_id INTEGER REFERENCES foo(id));
145143
`);
146-
t.after(()=>{db.close();});
147144
db.exec('INSERT INTO bar (foo_id) VALUES (1)');
148145
});
149146

@@ -158,8 +155,7 @@ suite('DatabaseSync() constructor', () => {
158155

159156
test('disables double-quoted string literals by default',(t)=>{
160157
constdbPath=nextDb();
161-
constdb=newDatabaseSync(dbPath);
162-
t.after(()=>{db.close();});
158+
usingdb=newDatabaseSync(dbPath);
163159
t.assert.throws(()=>{
164160
db.exec('SELECT "foo";');
165161
},{
@@ -170,8 +166,7 @@ suite('DatabaseSync() constructor', () => {
170166

171167
test('allows enabling double-quoted string literals',(t)=>{
172168
constdbPath=nextDb();
173-
constdb=newDatabaseSync(dbPath,{enableDoubleQuotedStringLiterals: true});
174-
t.after(()=>{db.close();});
169+
usingdb=newDatabaseSync(dbPath,{enableDoubleQuotedStringLiterals: true});
175170
db.exec('SELECT "foo";');
176171
});
177172

@@ -186,8 +181,7 @@ suite('DatabaseSync() constructor', () => {
186181

187182
test('allows reading big integers',(t)=>{
188183
constdbPath=nextDb();
189-
constdb=newDatabaseSync(dbPath,{readBigInts: true});
190-
t.after(()=>{db.close();});
184+
usingdb=newDatabaseSync(dbPath,{readBigInts: true});
191185

192186
constsetup=db.exec(`
193187
CREATE TABLE data(key INTEGER PRIMARY KEY, val INTEGER) STRICT;
@@ -216,8 +210,7 @@ suite('DatabaseSync() constructor', () => {
216210

217211
test('allows returning arrays',(t)=>{
218212
constdbPath=nextDb();
219-
constdb=newDatabaseSync(dbPath,{returnArrays: true});
220-
t.after(()=>{db.close();});
213+
usingdb=newDatabaseSync(dbPath,{returnArrays: true});
221214
constsetup=db.exec(`
222215
CREATE TABLE data(key INTEGER PRIMARY KEY, val TEXT) STRICT;
223216
INSERT INTO data (key, val) VALUES (1, 'one');
@@ -240,8 +233,7 @@ suite('DatabaseSync() constructor', () => {
240233

241234
test('throws if bare named parameters are used when option is false',(t)=>{
242235
constdbPath=nextDb();
243-
constdb=newDatabaseSync(dbPath,{allowBareNamedParameters: false});
244-
t.after(()=>{db.close();});
236+
usingdb=newDatabaseSync(dbPath,{allowBareNamedParameters: false});
245237
constsetup=db.exec(
246238
'CREATE TABLE data(key INTEGER PRIMARY KEY, val INTEGER) STRICT;'
247239
);
@@ -267,8 +259,7 @@ suite('DatabaseSync() constructor', () => {
267259

268260
test('allows unknown named parameters',(t)=>{
269261
constdbPath=nextDb();
270-
constdb=newDatabaseSync(dbPath,{allowUnknownNamedParameters: true});
271-
t.after(()=>{db.close();});
262+
usingdb=newDatabaseSync(dbPath,{allowUnknownNamedParameters: true});
272263
constsetup=db.exec(
273264
'CREATE TABLE data(key INTEGER, val INTEGER) STRICT;'
274265
);
@@ -284,8 +275,7 @@ suite('DatabaseSync() constructor', () => {
284275

285276
test('has sqlite-type symbol property',(t)=>{
286277
constdbPath=nextDb();
287-
constdb=newDatabaseSync(dbPath);
288-
t.after(()=>{db.close();});
278+
usingdb=newDatabaseSync(dbPath);
289279

290280
constsqliteTypeSymbol=Symbol.for('sqlite-type');
291281
t.assert.strictEqual(db[sqliteTypeSymbol],'node:sqlite');
@@ -295,8 +285,7 @@ suite('DatabaseSync() constructor', () => {
295285
suite('DatabaseSync.prototype.open()',()=>{
296286
test('opens a database connection',(t)=>{
297287
constdbPath=nextDb();
298-
constdb=newDatabaseSync(dbPath,{open: false});
299-
t.after(()=>{db.close();});
288+
usingdb=newDatabaseSync(dbPath,{open: false});
300289

301290
t.assert.strictEqual(db.isOpen,false);
302291
t.assert.strictEqual(existsSync(dbPath),false);
@@ -306,8 +295,7 @@ suite('DatabaseSync.prototype.open()', () => {
306295
});
307296

308297
test('throws if database is already open',(t)=>{
309-
constdb=newDatabaseSync(nextDb(),{open: false});
310-
t.after(()=>{db.close();});
298+
usingdb=newDatabaseSync(nextDb(),{open: false});
311299

312300
t.assert.strictEqual(db.isOpen,false);
313301
db.open();
@@ -324,15 +312,15 @@ suite('DatabaseSync.prototype.open()', () => {
324312

325313
suite('DatabaseSync.prototype.close()',()=>{
326314
test('closes an open database connection',(t)=>{
327-
constdb=newDatabaseSync(nextDb());
315+
usingdb=newDatabaseSync(nextDb());
328316

329317
t.assert.strictEqual(db.isOpen,true);
330318
t.assert.strictEqual(db.close(),undefined);
331319
t.assert.strictEqual(db.isOpen,false);
332320
});
333321

334322
test('throws if database is not open',(t)=>{
335-
constdb=newDatabaseSync(nextDb(),{open: false});
323+
usingdb=newDatabaseSync(nextDb(),{open: false});
336324

337325
t.assert.strictEqual(db.isOpen,false);
338326
t.assert.throws(()=>{
@@ -347,14 +335,13 @@ suite('DatabaseSync.prototype.close()', () => {
347335

348336
suite('DatabaseSync.prototype.prepare()',()=>{
349337
test('returns a prepared statement',(t)=>{
350-
constdb=newDatabaseSync(nextDb());
351-
t.after(()=>{db.close();});
338+
usingdb=newDatabaseSync(nextDb());
352339
conststmt=db.prepare('CREATE TABLE webstorage(key TEXT)');
353340
t.assert.ok(stmtinstanceofStatementSync);
354341
});
355342

356343
test('throws if database is not open',(t)=>{
357-
constdb=newDatabaseSync(nextDb(),{open: false});
344+
usingdb=newDatabaseSync(nextDb(),{open: false});
358345

359346
t.assert.throws(()=>{
360347
db.prepare();
@@ -365,8 +352,7 @@ suite('DatabaseSync.prototype.prepare()', () => {
365352
});
366353

367354
test('throws if sql is not a string',(t)=>{
368-
constdb=newDatabaseSync(nextDb());
369-
t.after(()=>{db.close();});
355+
usingdb=newDatabaseSync(nextDb());
370356

371357
t.assert.throws(()=>{
372358
db.prepare();
@@ -379,8 +365,7 @@ suite('DatabaseSync.prototype.prepare()', () => {
379365

380366
suite('DatabaseSync.prototype.exec()',()=>{
381367
test('executes SQL',(t)=>{
382-
constdb=newDatabaseSync(nextDb());
383-
t.after(()=>{db.close();});
368+
usingdb=newDatabaseSync(nextDb());
384369
constresult=db.exec(`
385370
CREATE TABLE data(
386371
key INTEGER PRIMARY KEY,
@@ -398,8 +383,7 @@ suite('DatabaseSync.prototype.exec()', () => {
398383
});
399384

400385
test('reports errors from SQLite',(t)=>{
401-
constdb=newDatabaseSync(nextDb());
402-
t.after(()=>{db.close();});
386+
usingdb=newDatabaseSync(nextDb());
403387

404388
t.assert.throws(()=>{
405389
db.exec('CREATE TABLEEEE');
@@ -419,7 +403,7 @@ suite('DatabaseSync.prototype.exec()', () => {
419403
});
420404

421405
test('throws if database is not open',(t)=>{
422-
constdb=newDatabaseSync(nextDb(),{open: false});
406+
usingdb=newDatabaseSync(nextDb(),{open: false});
423407

424408
t.assert.throws(()=>{
425409
db.exec();
@@ -430,8 +414,7 @@ suite('DatabaseSync.prototype.exec()', () => {
430414
});
431415

432416
test('throws if sql is not a string',(t)=>{
433-
constdb=newDatabaseSync(nextDb());
434-
t.after(()=>{db.close();});
417+
usingdb=newDatabaseSync(nextDb());
435418

436419
t.assert.throws(()=>{
437420
db.exec();
@@ -444,7 +427,7 @@ suite('DatabaseSync.prototype.exec()', () => {
444427

445428
suite('DatabaseSync.prototype.isTransaction',()=>{
446429
test('correctly detects a committed transaction',(t)=>{
447-
constdb=newDatabaseSync(':memory:');
430+
usingdb=newDatabaseSync(':memory:');
448431

449432
t.assert.strictEqual(db.isTransaction,false);
450433
db.exec('BEGIN');
@@ -456,7 +439,7 @@ suite('DatabaseSync.prototype.isTransaction', () => {
456439
});
457440

458441
test('correctly detects a rolled back transaction',(t)=>{
459-
constdb=newDatabaseSync(':memory:');
442+
usingdb=newDatabaseSync(':memory:');
460443

461444
t.assert.strictEqual(db.isTransaction,false);
462445
db.exec('BEGIN');
@@ -468,7 +451,7 @@ suite('DatabaseSync.prototype.isTransaction', () => {
468451
});
469452

470453
test('throws if database is not open',(t)=>{
471-
constdb=newDatabaseSync(nextDb(),{open: false});
454+
usingdb=newDatabaseSync(nextDb(),{open: false});
472455

473456
t.assert.throws(()=>{
474457
returndb.isTransaction;
@@ -481,7 +464,7 @@ suite('DatabaseSync.prototype.isTransaction', () => {
481464

482465
suite('DatabaseSync.prototype.location()',()=>{
483466
test('throws if database is not open',(t)=>{
484-
constdb=newDatabaseSync(nextDb(),{open: false});
467+
usingdb=newDatabaseSync(nextDb(),{open: false});
485468

486469
t.assert.throws(()=>{
487470
db.location();
@@ -492,8 +475,7 @@ suite('DatabaseSync.prototype.location()', () => {
492475
});
493476

494477
test('throws if provided dbName is not string',(t)=>{
495-
constdb=newDatabaseSync(nextDb());
496-
t.after(()=>{db.close();});
478+
usingdb=newDatabaseSync(nextDb());
497479

498480
t.assert.throws(()=>{
499481
db.location(null);
@@ -504,24 +486,20 @@ suite('DatabaseSync.prototype.location()', () => {
504486
});
505487

506488
test('returns null when connected to in-memory database',(t)=>{
507-
constdb=newDatabaseSync(':memory:');
489+
usingdb=newDatabaseSync(':memory:');
508490
t.assert.strictEqual(db.location(),null);
509491
});
510492

511493
test('returns db path when connected to a persistent database',(t)=>{
512494
constdbPath=nextDb();
513-
constdb=newDatabaseSync(dbPath);
514-
t.after(()=>{db.close();});
495+
usingdb=newDatabaseSync(dbPath);
515496
t.assert.strictEqual(db.location(),dbPath);
516497
});
517498

518499
test('returns that specific db path when attached',(t)=>{
519500
constdbPath=nextDb();
520501
constotherPath=nextDb();
521-
constdb=newDatabaseSync(dbPath);
522-
t.after(()=>{db.close();});
523-
constother=newDatabaseSync(dbPath);
524-
t.after(()=>{other.close();});
502+
usingdb=newDatabaseSync(dbPath);
525503

526504
// Adding this escape because the test with unusual chars have a single quote which breaks the query
527505
constescapedPath=otherPath.replace("'","''");
@@ -530,3 +508,18 @@ suite('DatabaseSync.prototype.location()', () => {
530508
t.assert.strictEqual(db.location('other'),otherPath);
531509
});
532510
});
511+
512+
suite('DatabaseSync.prototype[Symbol.dispose]',()=>{
513+
test('closes an open database',(t)=>{
514+
constdb=newDatabaseSync(nextDb());
515+
t.assert.strictEqual(db.isOpen,true);
516+
db[Symbol.dispose]();
517+
t.assert.strictEqual(db.isOpen,false);
518+
});
519+
520+
test('does not throw on databases that are not open',(t)=>{
521+
constdb=newDatabaseSync(nextDb(),{open: false});
522+
t.assert.strictEqual(db.isOpen,false);
523+
db[Symbol.dispose]();
524+
});
525+
});

0 commit comments

Comments
 (0)