add test for initial error matcher

This commit is contained in:
Nick Fyson
2020-09-07 22:50:37 +01:00
parent 7dbaff09b6
commit 3e6d23928b
8 changed files with 95 additions and 16 deletions

4
lib/codeql.js generated
View File

@@ -297,7 +297,7 @@ function getCodeQLForCmd(cmd) {
databasePath,
'--',
traceCommand
], error_matcher_1.error_matchers);
], error_matcher_1.errorMatchers);
},
finalizeDatabase: async function (databasePath) {
await exec_wrapper_1.exec_wrapper(cmd, [
@@ -305,7 +305,7 @@ function getCodeQLForCmd(cmd) {
'finalize',
...getExtraOptionsFromEnv(['database', 'finalize']),
databasePath
], error_matcher_1.error_matchers);
], error_matcher_1.errorMatchers);
},
resolveQueries: async function (queries, extraSearchPath) {
const codeqlArgs = [

File diff suppressed because one or more lines are too long

18
lib/error_matcher.js generated
View File

@@ -1,6 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.error_matchers = [
[32, new RegExp("No JavaScript or TypeScript code found\\."), 'foo bar']
];
// exported only for testing purposes
exports.namedMatchersForTesting = {
/*
In due course it may be possible to remove the regex, if/when javascript also exits with code 32.
For context see https://github.com/github/semmle-code/pull/36921
*/
noSourceCodeFound: [
32,
new RegExp("No JavaScript or TypeScript code found\\."),
`No source code was seen during the build. Please see...
https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning#no-code-found-during-the-build`
],
};
// we collapse the matches into an array for use in exec_wrapper
exports.errorMatchers = Object.values(exports.namedMatchersForTesting);
//# sourceMappingURL=error_matcher.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"error_matcher.js","sourceRoot":"","sources":["../src/error_matcher.ts"],"names":[],"mappings":";;AAGa,QAAA,cAAc,GAAmB;IAC5C,CAAC,EAAE,EAAE,IAAI,MAAM,CAAC,2CAA2C,CAAC,EAAE,SAAS,CAAC;CACzE,CAAC"}
{"version":3,"file":"error_matcher.js","sourceRoot":"","sources":["../src/error_matcher.ts"],"names":[],"mappings":";;AAGA,qCAAqC;AACxB,QAAA,uBAAuB,GAAoC;IACtE;;;MAGE;IACF,iBAAiB,EAAE;QACjB,EAAE;QACF,IAAI,MAAM,CAAC,2CAA2C,CAAC;QACvD;wJACoJ;KACrJ;CACF,CAAC;AAEF,gEAAgE;AACnD,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC"}

33
lib/error_matcher.test.js generated Normal file
View File

@@ -0,0 +1,33 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = __importDefault(require("ava"));
const error_matcher_1 = require("./error_matcher");
/*
NB We test the regexes for all the matchers against example log output snippets.
*/
ava_1.default('noSourceCodeFound matches against example javascript output', async (t) => {
t.assert(testErrorMatcher("noSourceCodeFound", `
2020-09-07T17:39:53.9050522Z [2020-09-07 17:39:53] [build] Done extracting /opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/javascript/tools/data/externs/web/ie_vml.js (3 ms)
2020-09-07T17:39:53.9051849Z [2020-09-07 17:39:53] [build-err] No JavaScript or TypeScript code found.
2020-09-07T17:39:53.9052444Z [2020-09-07 17:39:53] [build-err] No JavaScript or TypeScript code found.
2020-09-07T17:39:53.9251124Z [2020-09-07 17:39:53] [ERROR] Spawned process exited abnormally (code 255; tried to run: [/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/javascript/tools/autobuild.sh])
`));
});
function testErrorMatcher(matcherName, logSample) {
const regex = error_matcher_1.namedMatchersForTesting[matcherName] ? error_matcher_1.namedMatchersForTesting[matcherName][1] : null;
if (regex) {
return regex.test(logSample);
}
else {
if (error_matcher_1.namedMatchersForTesting[matcherName]) {
throw new Error(`Cannot test matcher ${matcherName} with null regex`);
}
else {
throw new Error(`Unknown matcher ${matcherName}`);
}
}
}
//# sourceMappingURL=error_matcher.test.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error_matcher.test.js","sourceRoot":"","sources":["../src/error_matcher.test.ts"],"names":[],"mappings":";;;;;AACA,8CAAuB;AAEvB,mDAA0D;AAE1D;;EAEE;AAEF,aAAI,CAAC,6DAA6D,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC5E,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;;;;;GAK9C,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB;IAE9D,MAAM,KAAK,GAAG,uCAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,uCAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpG,IAAI,KAAK,EAAE;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9B;SAAM;QACL,IAAI,uCAAuB,CAAC,WAAW,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,kBAAkB,CAAC,CAAC;SACvE;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;SACnD;KACF;AAEH,CAAC"}