This commit is contained in:
Bryan MacFarlane 2020-03-27 19:56:10 -04:00
parent 1c06f0e82e
commit 34223181a5
2 changed files with 74 additions and 5 deletions

View file

@ -9,6 +9,9 @@ import * as main from '../src/main';
import * as im from '../src/installer'; import * as im from '../src/installer';
let goJsonData = require('./data/golang-dl.json'); let goJsonData = require('./data/golang-dl.json');
let matchers = require('../matchers.json');
let matcherPattern = matchers.problemMatcher[0].pattern[0];
let matcherRegExp = new RegExp(matcherPattern.regexp);
describe('setup-go', () => { describe('setup-go', () => {
let inputs = {} as any; let inputs = {} as any;
@ -322,6 +325,72 @@ describe('setup-go', () => {
expect(added).toBeTruthy; expect(added).toBeTruthy;
}); });
interface Annotation {
file: string,
line: number,
column: number,
message: string
}
//
// problem matcher regex pattern tests
function testMatch(line: string): Annotation {
let annotation = <Annotation>{};
let match = matcherRegExp.exec(line);
if (match) {
annotation.line = parseInt(match[matcherPattern.line], 10);
annotation.column = parseInt(match[matcherPattern.column], 10);
annotation.file = match[matcherPattern.file].trim();
annotation.message = match[matcherPattern.message].trim();
}
return annotation;
}
it('matches on rooted unix path', async () => {
let line = '/assert.go:4:1: missing return at end of function';
let annotation = testMatch(line);
expect(annotation).toBeDefined();
expect(annotation.line).toBe(4);
expect(annotation.column).toBe(1);
expect(annotation.file).toBe('/assert.go');
expect(annotation.message).toBe('missing return at end of function');
});
it('matches on relative unix path', async () => {
let line = './a/path/assert.go:6:1: missing return at end of function';
let annotation = testMatch(line);
expect(annotation).toBeDefined();
expect(annotation.line).toBe(6);
expect(annotation.column).toBe(1);
expect(annotation.file).toBe('./a/path/assert.go');
expect(annotation.message).toBe('missing return at end of function');
});
it('matches on rooted unix path', async () => {
let line = '/assert.go:4:1: missing return at end of function';
let annotation = testMatch(line);
expect(annotation).toBeDefined();
expect(annotation.line).toBe(4);
expect(annotation.column).toBe(1);
expect(annotation.file).toBe('/assert.go');
expect(annotation.message).toBe('missing return at end of function');
});
it('matches on rooted unix path with whitespace', async () => {
let line = ' /assert.go:5:2: missing return at end of function ';
let annotation = testMatch(line);
expect(annotation).toBeDefined();
expect(annotation.line).toBe(5);
expect(annotation.column).toBe(2);
expect(annotation.file).toBe('/assert.go');
expect(annotation.message).toBe('missing return at end of function');
});
// 1.13.1 => 1.13.1 // 1.13.1 => 1.13.1
// 1.13 => 1.13.0 // 1.13 => 1.13.0
// 1.10beta1 => 1.10.0-beta1, 1.10rc1 => 1.10.0-rc1 // 1.10beta1 => 1.10.0-beta1, 1.10rc1 => 1.10.0-rc1

View file

@ -4,11 +4,11 @@
"owner": "go", "owner": "go",
"pattern": [ "pattern": [
{ {
"regexp": "^([^:]*: )?((.:)?[^:]*):(\\d+)(:(\\d+))?: (.*)$", "regexp": "((?:.{0,2}\\/|.{0,2}\\\\)(?:.+\\.go)):(?:(\\d+):(\\d+):)? (.*)",
"file": 2, "file": 1,
"line": 4, "line": 2,
"column": 6, "column": 3,
"message": 7 "message": 4
} }
] ]
} }