Skip to content

Commit a6b47e2

Browse files
chore(test): update mocha from v3.5 to v10 (#8838)
Co-authored-by: Gareth Bowen <gareth@medic.org>
1 parent 519e331 commit a6b47e2

3 files changed

Lines changed: 30 additions & 12 deletions

File tree

bin/test-browser.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const playwright = require('playwright');
66
const { identity, pickBy } = require('lodash');
77

88
var MochaSpecReporter = require('mocha').reporters.Spec;
9+
const createMochaStatsCollector = require('mocha/lib/stats-collector');
910

1011
var devserver = require('./dev-server.js');
1112

@@ -59,20 +60,30 @@ const qs = {
5960
testUrl += '?';
6061
testUrl += new URLSearchParams(pickBy(qs, identity));
6162

63+
class ArrayMap extends Map {
64+
get(key) {
65+
if (!this.has(key)) {
66+
this.set(key, []);
67+
}
68+
return super.get(key);
69+
}
70+
}
71+
6272
class RemoteRunner {
6373
constructor(browser) {
6474
this.browser = browser;
65-
this.handlers = {};
75+
this.handlers = new ArrayMap();
76+
this.onceHandlers = new ArrayMap();
6677
this.handleEvent = this.handleEvent.bind(this);
78+
createMochaStatsCollector(this);
6779
}
6880

69-
on(name, handler) {
70-
var handlers = this.handlers;
81+
once(name, handler) {
82+
this.onceHandlers.get(name).push(handler);
83+
}
7184

72-
if (!handlers[name]) {
73-
handlers[name] = [];
74-
}
75-
handlers[name].push(handler);
85+
on(name, handler) {
86+
this.handlers.get(name).push(handler);
7687
}
7788

7889
async handleEvent(event) {
@@ -83,9 +94,12 @@ class RemoteRunner {
8394
};
8495
var obj = Object.assign({}, event.obj, additionalProps);
8596

86-
this.handlers[event.name].forEach(function (handler) {
87-
handler(obj, event.err);
88-
});
97+
const triggerHandler = handler => handler(obj, event.err);
98+
99+
this.onceHandlers.get(event.name).forEach(triggerHandler);
100+
this.onceHandlers.delete(event.name);
101+
102+
this.handlers.get(event.name).forEach(triggerHandler);
89103

90104
switch (event.name) {
91105
case 'fail': this.handleFailed(); break;

bin/test-node.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,21 @@ fi
3737
if [ $PERF ]; then
3838
node tests/performance/index.js
3939
elif [ ! $COVERAGE ]; then
40+
# --exit required to workaround #8839
4041
./node_modules/.bin/mocha \
42+
--exit \
4143
$BAIL_OPT \
4244
--timeout "$TIMEOUT" \
4345
--require=./tests/integration/node.setup.js \
4446
--reporter="$REPORTER" \
4547
--grep="$GREP" \
4648
$TESTS_PATH
4749
else
50+
# --exit required to workaround #8839
4851
./node_modules/.bin/istanbul cover \
4952
--no-default-excludes -x 'tests/**' -x 'node_modules/**' \
5053
./node_modules/mocha/bin/_mocha -- \
54+
--exit \
5155
$BAIL_OPT \
5256
--timeout "$TIMEOUT" \
5357
--require=./tests/integration/node.setup.js \

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"build-modules": "node bin/build-modules.js",
1111
"test-unit": "mocha tests/unit",
1212
"test-node": "./bin/test-node.sh",
13-
"test-component": "mocha tests/component",
13+
"test-component": "mocha --exit tests/component # --exit for #8839",
1414
"test-fuzzy": "TYPE=fuzzy npm run test",
1515
"test-browser": "npm run build-test && node ./bin/test-browser.js",
1616
"test-memleak": "mocha -gc tests/memleak",
@@ -90,7 +90,7 @@
9090
"marky": "1.2.0",
9191
"median": "0.0.2",
9292
"mkdirp": "0.5.1",
93-
"mocha": "3.5.0",
93+
"mocha": "10.2.0",
9494
"mockery": "2.1.0",
9595
"ncp": "2.0.0",
9696
"playwright": "1.36.1",

0 commit comments

Comments
 (0)