-
Notifications
You must be signed in to change notification settings - Fork 0
/
mocha-runner.js
51 lines (43 loc) · 1.15 KB
/
mocha-runner.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const Mocha = require('mocha');
const chai = require('chai');
const utils = require('./utils');
class TestRunner {
constructor() {
this.mocha = new Mocha({
timeout: 6000,
});
}
addFile(path) {
return this.mocha.addFile(path);
};
reporter(reporter, reporterOptions) {
return this.mocha.reporter(reporter, reporterOptions);
};
grep(grepOption) {
return this.mocha.grep(grepOption);
}
getChai() {
return chai;
}
run(myModule, testFileMap, options) {
const mochaRunner = this.mocha.run((failures) => {
process.on('exit', () => {
myModule.runScripts('postTestCommands')
// exit with non-zero status if there were failures
.then(() => process.exit(failures));
});
}).on('test', (suite) => {
const testFuncName = utils.funcNameFromPath(suite.file);
// set env only for functions
if (testFileMap[testFuncName]) {
utils.setEnv(myModule.serverless, testFuncName);
} else {
utils.setEnv(myModule.serverless);
}
});
if (options.exit) {
mochaRunner.on('end', process.exit);
}
}
}
module.exports = TestRunner;