-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathintellij.conf.js
108 lines (97 loc) · 3.85 KB
/
intellij.conf.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var path = require('path')
, cli = require('./intellijCli')
, intellijUtil = require('./intellijUtil')
, originalConfigPath = cli.getConfigFile()
, IntellijReporter = require('./intellijReporter')
, IntellijCoverageReporter = require('./intellijCoverageReporter');
function setBasePath(config) {
var path = require('path');
var basePath = config.basePath || '.';
config.basePath = path.resolve(path.dirname(originalConfigPath), basePath);
}
function configureDebug(config) {
// Disable browser activity checker as when execution is suspended, no activity is being sent.
// By default, browserNoActivityTimeout=10000 ms, not enough for suspended execution.
// https://github.com/karma-runner/karma/blob/master/docs/config/01-configuration-file.md#browsernoactivitytimeout
config.browserNoActivityTimeout = null;
config.browsers = intellijUtil.isString(config.browserForDebugging) ? [config.browserForDebugging] : [];
console.error('intellij: config.browsers = ' + JSON.stringify(config.browsers));
(function fixMochaTimeout() {
var client = config.client;
if (typeof client === 'undefined') {
config.client = client = {};
}
if (client === Object(client)) {
var mocha = client.mocha;
if (typeof mocha === 'undefined') {
client.mocha = mocha = {};
}
if (mocha === Object(mocha)) {
mocha.timeout = 0;
}
}
})();
}
module.exports = function (config) {
IntellijCoverageReporter.preconfigureCoverage(config);
var originalConfigModule = require(originalConfigPath);
// https://github.com/karma-runner/karma/blob/v1.7.0/lib/config.js#L364
if (typeof originalConfigModule === 'object' && typeof originalConfigModule.default !== 'undefined') {
originalConfigModule = originalConfigModule.default;
}
originalConfigModule(config);
var reporters = config.reporters;
if (intellijUtil.isString(reporters)) {
// logic from 'normalizeConfig' in config.js
reporters = reporters.length === 0 ? [] : reporters.split(',');
}
else {
if (!Array.isArray(reporters)) {
throw Error("'reporters' is expected to be an array");
}
}
var filteredReporters = intellijUtil.removeAll(reporters, ['dots', 'progress']);
filteredReporters.push(IntellijReporter.reporterName);
config.reporters = filteredReporters;
IntellijCoverageReporter.configureCoverage(config);
if (cli.isDebug()) {
configureDebug(config);
}
var plugins = config.plugins || [];
plugins.push(require.resolve('./intellijPlugin.js'));
config.plugins = plugins;
// Don't load the original configuration file in the browser.
// https://github.com/karma-runner/karma-intellij/issues/9
config.exclude = config.exclude || [];
config.exclude.push(originalConfigPath);
// remove 'logLevel' changing as soon as
// https://github.com/karma-runner/karma/issues/614 is ready
var logLevel = config.logLevel;
if (logLevel === config.LOG_DISABLE ||
logLevel === config.LOG_ERROR ||
logLevel === config.LOG_WARN) {
console.log("IntelliJ integration changed logLevel to LOG_INFO, because otherwise it doesn't work.");
config.logLevel = config.LOG_INFO;
}
config.singleRun = false;
var originalAutoWatch = config.autoWatch;
config.autoWatch = false;
config.autoWatchBatchDelay = 0;
var angularCli = config.angularCli;
if (angularCli != null && typeof angularCli.sourcemap === 'undefined') {
angularCli.sourcemap = true;
}
setBasePath(config);
intellijUtil.sendIntellijEvent(
'configFile',
{
autoWatch: originalAutoWatch,
basePath: config.basePath,
browsers: config.browsers || [],
hostname: config.hostname || 'localhost',
urlRoot: config.urlRoot || '/',
webpack: intellijUtil.isPreprocessorSpecified(config.preprocessors, 'webpack') ||
intellijUtil.isPreprocessorSpecified(config.preprocessors, 'angular-cli')
}
);
};