Skip to content

Commit f92a846

Browse files
test: improve coverage (#2604)
1 parent 3a5cf10 commit f92a846

File tree

4 files changed

+59
-4
lines changed

4 files changed

+59
-4
lines changed

jest.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ module.exports = {
88
testPathIgnorePatterns: ignorePattern,
99
testEnvironment: 'node',
1010
collectCoverage: true,
11-
coverageReporters: ['none'],
11+
coverageDirectory: '.nyc_output',
12+
coverageReporters: ['json'],
1213
transform: {
1314
'^.+\\.(ts)?$': 'ts-jest',
1415
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"pretest": "yarn build && yarn lint && yarn prepsuite",
3737
"test": "jest --reporters=default",
3838
"test:smoketests": "nyc node smoketests",
39-
"test:coverage": "nyc --require ts-node/register jest --forceExit",
39+
"test:coverage": "nyc --no-clean --require ts-node/register jest --forceExit",
4040
"test:cli": "jest test --reporters=default --forceExit",
4141
"test:packages": "jest packages/ --reporters=default --forceExit",
4242
"test:ci": "yarn test:cli && yarn test:packages",

smoketests/helpers.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,51 @@ const runTest = (package, cliArgs = [], logMessage, isSubPackage = false) => {
7676
});
7777
};
7878

79+
const runTestStdout = ({ packageName, cliArgs, logMessage, isSubPackage } = {}) => {
80+
// Simulate package missing
81+
swapPkgName(packageName, isSubPackage);
82+
83+
const proc = execa(CLI_ENTRY_PATH, cliArgs, {
84+
cwd: __dirname,
85+
});
86+
87+
proc.stdin.setDefaultEncoding('utf-8');
88+
89+
return new Promise((resolve) => {
90+
setTimeout(() => {
91+
console.log(' timeout: killing process');
92+
proc.kill();
93+
}, 30000);
94+
95+
let hasPassed = false;
96+
97+
proc.stdout.on('data', (chunk) => {
98+
let data = stripAnsi(chunk.toString());
99+
console.log(` stdout: ${data}`);
100+
101+
if (data.includes(logMessage)) {
102+
hasPassed = true;
103+
proc.kill();
104+
}
105+
});
106+
107+
proc.stderr.on('data', (chunk) => {
108+
let data = stripAnsi(chunk.toString());
109+
console.log(` stderr: ${data}`);
110+
});
111+
112+
proc.on('exit', () => {
113+
swapPkgName(`.${packageName}`, isSubPackage);
114+
resolve(hasPassed);
115+
});
116+
117+
proc.on('error', () => {
118+
swapPkgName(`.${packageName}`, isSubPackage);
119+
resolve(false);
120+
});
121+
});
122+
};
123+
79124
const runTestWithHelp = (package, cliArgs = [], logMessage, isSubPackage = false) => {
80125
// Simulate package missing
81126
swapPkgName(package, isSubPackage);
@@ -133,5 +178,6 @@ const runTestWithHelp = (package, cliArgs = [], logMessage, isSubPackage = false
133178

134179
module.exports = {
135180
runTest,
181+
runTestStdout,
136182
runTestWithHelp,
137183
};
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const { runTest } = require('../helpers');
3+
const { runTest, runTestStdout } = require('../helpers');
44

55
const webpackDevServerTest = () => {
66
const packageName = 'webpack-dev-server';
@@ -10,5 +10,13 @@ const webpackDevServerTest = () => {
1010
return runTest(packageName, args, logMessage);
1111
};
1212

13-
module.exports.run = [webpackDevServerTest];
13+
const webpackDevServerWithHelpTest = () => {
14+
const packageName = 'webpack-dev-server';
15+
const cliArgs = ['help', 'serve'];
16+
const logMessage = "To see all available options you need to install 'webpack-dev-server'";
17+
18+
return runTestStdout({ packageName, cliArgs, logMessage });
19+
};
20+
21+
module.exports.run = [webpackDevServerTest, webpackDevServerWithHelpTest];
1422
module.exports.name = 'Missing webpack-dev-server';

0 commit comments

Comments
 (0)