Skip to content

Commit 3dcaae7

Browse files
Print number of warnings in the CLI (#184)
1 parent 223d6a2 commit 3dcaae7

File tree

10 files changed

+67
-1
lines changed

10 files changed

+67
-1
lines changed

source/lib/formatter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ export default (diagnostics: Diagnostic[], showDiff = false): string => {
5050
}
5151
}
5252

53-
entry.errorCount++;
53+
if (diagnostic.severity === 'error') {
54+
entry.errorCount++;
55+
} else if (diagnostic.severity === 'warning') {
56+
entry.warningCount++;
57+
}
58+
5459
entry.messages.push(diagnostic);
5560
}
5661

source/test/cli.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,31 @@ test('exported formatter matches cli results', async t => {
163163
'1 error',
164164
]);
165165
});
166+
167+
test('warnings are reported correctly and do not fail', async t => {
168+
const {exitCode, stdout} = await execa('../../../../cli.js', {
169+
cwd: path.join(__dirname, 'fixtures/warnings/only-warnings'),
170+
});
171+
172+
t.is(exitCode, 0);
173+
verifyCli(t, stdout, [
174+
'⚠ 4:0 Type for expression one(1, 1) is: number',
175+
'',
176+
'1 warning',
177+
]);
178+
});
179+
180+
test('warnings are reported with errors', async t => {
181+
const {exitCode, stderr} = await t.throwsAsync<ExecaError>(execa('../../../../cli.js', {
182+
cwd: path.join(__dirname, 'fixtures/warnings/with-errors'),
183+
}));
184+
185+
t.is(exitCode, 1);
186+
verifyCli(t, stderr, [
187+
'✖ 5:19 Argument of type number is not assignable to parameter of type string.',
188+
'⚠ 4:0 Type for expression one(1, 1) is: number',
189+
'',
190+
'1 warning',
191+
'1 error',
192+
]);
193+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
declare const one: {
2+
(foo: string, bar: string): string;
3+
(foo: number, bar: number): number;
4+
};
5+
6+
export default one;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports.default = (foo, bar) => {
2+
return foo + bar;
3+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import {printType} from '../../../..';
2+
import one from '.';
3+
4+
printType(one(1, 1));
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"name": "foo"
3+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
declare const one: {
2+
(foo: string, bar: string): string;
3+
(foo: number, bar: number): number;
4+
};
5+
6+
export default one;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports.default = (foo, bar) => {
2+
return foo + bar;
3+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import {printType, expectType} from '../../../..';
2+
import one from '.';
3+
4+
printType(one(1, 1));
5+
expectType<string>(one(1, 2));
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"name": "foo"
3+
}

0 commit comments

Comments
 (0)