-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyTestRunner.js
More file actions
77 lines (63 loc) · 1.96 KB
/
Copy pathMyTestRunner.js
File metadata and controls
77 lines (63 loc) · 1.96 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var Mocha = require('mocha'),
fs = require('fs'),
path = require('path');
var opts = {'reporter': 'spec'};
var mocha = new Mocha(opts);
exports.runTests = function(directory, testToRun) {
if (testToRun) {
mocha.addFile(directory + '/' + testToRun);
} else {
add_test_files(mocha, directory);
}
mocha.run(function(failures){
process.on('exit', function () {
process.exit(failures);
});
});
};
var add_test_files = function(mocha, directory) {
if (!is_directory(directory)) {
return;
}
if (is_test_directory(directory)) {
add_all_tests(mocha, directory);
return;
}
var subdirs = get_subdirectories(directory);
subdirs.forEach(function(subdir) {
add_test_files(mocha, directory + '/' + subdir);
});
};
var add_all_tests = function (mocha, directory) {
var filenames = fs.readdirSync(directory);
filenames.forEach(function(file) {
if (name_ends_with(file, 'test.js') || name_ends_with(file, 'Test.js')) {
mocha.addFile(directory + '/' + file);
} else if (is_directory(directory + '/' + file)) {
add_all_tests(mocha, directory + '/' + file);
}
});
};
var get_subdirectories = function(directory) {
var filenames = fs.readdirSync(directory);
var subdirs = [];
filenames.forEach(function(file) {
if (!name_ends_with(file, "node_modules") && !file.indexOf('.') == 0) {
subdirs.push(file);
}
});
return subdirs;
};
var is_test_directory = function(directory) {
if (name_ends_with(directory, "test") || name_ends_with(directory, "testcases")) {
return is_directory(directory);
}
return false;
};
var is_directory = function(directory) {
var stat = fs.statSync(directory);
return stat.isDirectory();
};
var name_ends_with = function(directory, ending) {
return directory.indexOf(ending, directory.length - ending.length) !== -1;
};