Skip to content

Commit 23d9d12

Browse files
committed
fix: leak checker needs callback support for legacy tests
1 parent d73b537 commit 23d9d12

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

.mocharc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"require": [
44
"source-map-support/register",
55
"ts-node/register",
6-
"test/tools/runner/chai-addons.js",
6+
"test/tools/runner/chai_addons.ts",
77
"test/tools/runner/hooks/unhandled_checker.ts"
88
],
99
"extension": [

test/mocha_mongodb.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"require": [
44
"source-map-support/register",
55
"ts-node/register",
6-
"test/tools/runner/chai-addons.js",
6+
"test/tools/runner/chai_addons.ts",
77
"test/tools/runner/hooks/configuration.ts",
88
"test/tools/runner/hooks/unhandled_checker.ts",
99
"test/tools/runner/hooks/leak_checker.ts",

test/tools/runner/chai-addons.js renamed to test/tools/runner/chai_addons.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
'use strict';
1+
/* eslint-disable @typescript-eslint/no-var-requires */
2+
3+
import chai = require('chai');
24

3-
// configure chai
4-
const chai = require('chai');
55
chai.use(require('sinon-chai'));
66
chai.use(require('chai-subset'));
77
chai.use(require('../spec-runner/matcher').default);

test/tools/runner/hooks/leak_checker.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,26 @@ class LeakChecker {
5555

5656
setupClientLeakChecker() {
5757
const leakChecker = this;
58-
MongoClient.prototype.connect = async function () {
58+
MongoClient.prototype.connect = function (...args) {
5959
leakChecker.clients.add(this);
6060
this[LeakChecker.kConnectCount] ??= 0;
61-
await LeakChecker.originalConnect.call(this);
62-
this[LeakChecker.kConnectCount] += 1; // only increment on successful connects
63-
return this;
61+
62+
const lastArg = args[args.length - 1];
63+
const lastArgIsCallback = typeof lastArg === 'function';
64+
if (lastArgIsCallback) {
65+
const argsWithoutCallback = args.slice(0, args.length - 1);
66+
return LeakChecker.originalConnect.call(this, ...argsWithoutCallback, (error, client) => {
67+
if (error == null) {
68+
this[LeakChecker.kConnectCount] += 1; // only increment on successful connects
69+
}
70+
return lastArg(error, client);
71+
});
72+
} else {
73+
return LeakChecker.originalConnect.call(this, ...args).then(client => {
74+
this[LeakChecker.kConnectCount] += 1; // only increment on successful connects
75+
return client;
76+
});
77+
}
6478
};
6579

6680
MongoClient.prototype.close = function (...args) {

0 commit comments

Comments
 (0)