-
Notifications
You must be signed in to change notification settings - Fork 2
/
concurrent.js
87 lines (72 loc) · 2.61 KB
/
concurrent.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
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
78
79
80
81
82
83
84
85
86
87
"use strict";
const
tools = require("../res/tools.js"),
hosts = {
browser: Object.keys(configuration.browsers).map(browserName => tools.capitalize(browserName)),
nodejs: ["Node"],
phantomjs: ["Phantom"],
java: [],
wscript: []
},
// As of now, this list is 'static', on MacOS, Safari is considered modern
modernBrowsers = ["chrome", "firefox", tools.isMacOS ? "safari" : ""].map(tools.capitalize);
hosts.modernBrowser = hosts.browser.filter(name => -1 !== modernBrowsers.indexOf(name));
if (configuration.host.java) {
hosts.java.push("Rhino");
}
if (configuration.host.nashorn) {
hosts.java.push("Nashorn");
}
if (configuration.host.wscript) {
hosts.wscript.push("Wscript");
} else {
hosts.wscript.push("Nodewscript");
}
const
testTasks = Object.keys(hosts).reduce((list, name) => list.concat(hosts[name]), []).map(name => `exec:test${name}`),
noMocha = x => x !== "exec:testNode" && x !== "exec:testPhantom";
module.exports = {
// Linters
linters: [
"jshint",
"eslint"
],
// Code quality tools
quality: [
"istanbul",
"plato"
],
// Tests on sources
source: [
"mocha:source",
"mochaTest:source"
].concat(testTasks.filter(noMocha)),
// Tests on debug version
debug: [
"mocha:debug",
"mochaTest:debug"
].concat(testTasks.filter(noMocha).map(name => `${name}Debug`)),
// Tests on release version
release: [
"mocha:release",
"mochaTest:release"
].concat(testTasks.filter(noMocha).map(name => `${name}Release`))
};
Object.keys(configuration.files.flavors).forEach(flavor => {
const
definition = configuration.files.flavors[flavor],
flavorHosts = definition.flavor.split(" ")
.filter(token => 0 === token.indexOf("host:"))
.map(token => token.substr(5)),
includesCompatibility = -1 !== definition.flavor.split(" ").indexOf("compatibility"),
tasks = Object.keys(hosts)
.filter(name => 0 === flavorHosts.length || -1 !== flavorHosts.indexOf(name))
.map(name => includesCompatibility || "browser" !== name ? name : "modernBrowser")
.reduce((list, name) => list.concat(hosts[name]), [])
.map(name => `exec:test${name}`);
module.exports[`flavor@${flavor}`] = tasks.map(name => `${name}Flavor:${flavor}`);
});
configuration.files.legacyTest.forEach(versionFile => {
let version = versionFile.substr(0, versionFile.lastIndexOf("."));
module.exports[`legacy${version}`] = testTasks.map(task => `${task}Legacy:${version}`);
});