mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
add test for initial error matcher
This commit is contained in:
33
src/error_matcher.test.ts
Normal file
33
src/error_matcher.test.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
import test from 'ava';
|
||||
|
||||
import { namedMatchersForTesting } from './error_matcher';
|
||||
|
||||
/*
|
||||
NB We test the regexes for all the matchers against example log output snippets.
|
||||
*/
|
||||
|
||||
test('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: string, logSample: string): boolean {
|
||||
|
||||
const regex = namedMatchersForTesting[matcherName] ? namedMatchersForTesting[matcherName][1] : null;
|
||||
|
||||
if (regex) {
|
||||
return regex.test(logSample);
|
||||
} else {
|
||||
if (namedMatchersForTesting[matcherName]) {
|
||||
throw new Error(`Cannot test matcher ${matcherName} with null regex`);
|
||||
} else {
|
||||
throw new Error(`Unknown matcher ${matcherName}`);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,19 +1,19 @@
|
||||
|
||||
export type ErrorMatcher = [number|null, RegExp|null, string];
|
||||
|
||||
const namedMatchers: { [key: string]: ErrorMatcher } = {
|
||||
// exported only for testing purposes
|
||||
export const namedMatchersForTesting: { [key: string]: ErrorMatcher } = {
|
||||
/*
|
||||
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,
|
||||
null,
|
||||
`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`
|
||||
],
|
||||
noSourceCodeFoundJavascript: [
|
||||
null,
|
||||
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`
|
||||
]
|
||||
],
|
||||
};
|
||||
|
||||
export const errorMatchers = Object.values(namedMatchers);
|
||||
// we collapse the matches into an array for use in exec_wrapper
|
||||
export const errorMatchers = Object.values(namedMatchersForTesting);
|
||||
|
||||
Reference in New Issue
Block a user