diff --git a/__tests__/problem-matcher.test.ts b/__tests__/problem-matcher.test.ts new file mode 100644 index 000000000..4bcfdd1bd --- /dev/null +++ b/__tests__/problem-matcher.test.ts @@ -0,0 +1,43 @@ +describe('problem matcher tests', () => { + it('tsc: matches TypeScript "pretty" error message', () => { + const [ + { + pattern: [{regexp}] + } + ] = require('../.github/tsc.json').problemMatcher; + const exampleErrorMessage = + "lib/index.js:23:42 - error TS2345: Argument of type 'A' is not assignable to parameter of type 'B'."; + + const match = exampleErrorMessage.match(new RegExp(regexp)); + expect(match).not.toBeNull(); + expect(match![1]).toEqual('lib/index.js'); + expect(match![2]).toEqual('23'); + expect(match![3]).toEqual('42'); + expect(match![4]).toEqual('error'); + expect(match![5]).toEqual('2345'); + expect(match![6]).toEqual( + "Argument of type 'A' is not assignable to parameter of type 'B'." + ); + }); + + it('tsc: matches TypeScript error message from log file', () => { + const [ + { + pattern: [{regexp}] + } + ] = require('../.github/tsc.json').problemMatcher; + const exampleErrorMessage = + "lib/index.js(23,42): error TS2345: Argument of type 'A' is not assignable to parameter of type 'B'."; + + const match = exampleErrorMessage.match(new RegExp(regexp)); + expect(match).not.toBeNull(); + expect(match![1]).toEqual('lib/index.js'); + expect(match![2]).toEqual('23'); + expect(match![3]).toEqual('42'); + expect(match![4]).toEqual('error'); + expect(match![5]).toEqual('2345'); + expect(match![6]).toEqual( + "Argument of type 'A' is not assignable to parameter of type 'B'." + ); + }); +});