From 1fb7c81099a0cf4b3c37f9e2cfd8e5912780534e Mon Sep 17 00:00:00 2001 From: Nick Fyson Date: Fri, 11 Sep 2020 18:25:23 +0100 Subject: [PATCH] tweak in response to reviewer comments --- lib/error-matcher.js | 5 ++--- lib/error-matcher.js.map | 2 +- lib/error-matcher.test.js | 16 ++++++---------- lib/error-matcher.test.js.map | 2 +- lib/toolrunner-error-catcher.js | 10 +++++----- lib/toolrunner-error-catcher.js.map | 2 +- lib/toolrunner-error-catcher.test.js | 9 ++++----- lib/toolrunner-error-catcher.test.js.map | 2 +- src/error-matcher.test.ts | 18 +++++++----------- src/error-matcher.ts | 5 ++--- src/toolrunner-error-catcher.test.ts | 9 ++++----- src/toolrunner-error-catcher.ts | 12 ++++++------ 12 files changed, 40 insertions(+), 52 deletions(-) diff --git a/lib/error-matcher.js b/lib/error-matcher.js index 2557b5a07..3881dac19 100644 --- a/lib/error-matcher.js +++ b/lib/error-matcher.js @@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); 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` + "No code found during the build. Please see:\n" + + "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 execErrorCatcher diff --git a/lib/error-matcher.js.map b/lib/error-matcher.js.map index 3e6fa866c..dd41806ff 100644 --- a/lib/error-matcher.js.map +++ b/lib/error-matcher.js.map @@ -1 +1 @@ -{"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,oEAAoE;AACvD,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"error-matcher.js","sourceRoot":"","sources":["../src/error-matcher.ts"],"names":[],"mappings":";;AAGA,qCAAqC;AACxB,QAAA,uBAAuB,GAAoC;IACtE;;MAEE;IACF,iBAAiB,EAAE;QACjB,EAAE;QACF,IAAI,MAAM,CAAC,2CAA2C,CAAC;QACvD,+CAA+C;YAC/C,yJAAyJ;KAC1J;CACF,CAAC;AAEF,oEAAoE;AACvD,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/error-matcher.test.js b/lib/error-matcher.test.js index d68d58d96..c79bf5719 100644 --- a/lib/error-matcher.test.js +++ b/lib/error-matcher.test.js @@ -17,17 +17,13 @@ ava_1.default('noSourceCodeFound matches against example javascript output', asy `)); }); function testErrorMatcher(matcherName, logSample) { - const regex = error_matcher_1.namedMatchersForTesting[matcherName] ? error_matcher_1.namedMatchersForTesting[matcherName][1] : null; - if (regex) { - return regex.test(logSample); + if (!(matcherName in error_matcher_1.namedMatchersForTesting)) { + throw new Error(`Unknown matcher ${matcherName}`); } - else { - if (error_matcher_1.namedMatchersForTesting[matcherName]) { - throw new Error(`Cannot test matcher ${matcherName} with null regex`); - } - else { - throw new Error(`Unknown matcher ${matcherName}`); - } + const regex = error_matcher_1.namedMatchersForTesting[matcherName][1]; + if (regex === null) { + throw new Error(`Cannot test matcher ${matcherName} with null regex`); } + return regex.test(logSample); } //# sourceMappingURL=error-matcher.test.js.map \ No newline at end of file diff --git a/lib/error-matcher.test.js.map b/lib/error-matcher.test.js.map index 60db0bb8b..321a28a65 100644 --- a/lib/error-matcher.test.js.map +++ b/lib/error-matcher.test.js.map @@ -1 +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"} \ No newline at end of file +{"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,IAAI,CAAC,CAAC,WAAW,IAAI,uCAAuB,CAAC,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;KACnD;IACD,MAAM,KAAK,GAAG,uCAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,kBAAkB,CAAC,CAAC;KACvE;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.js b/lib/toolrunner-error-catcher.js index ed6f90a66..ec1ebdad8 100644 --- a/lib/toolrunner-error-catcher.js +++ b/lib/toolrunner-error-catcher.js @@ -9,13 +9,13 @@ var __importStar = (this && this.__importStar) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const toolrunnner = __importStar(require("@actions/exec/lib/toolrunner")); /** - * Wrapper for exec.exec which checks for specific return code and/or regex matches in console output. + * Wrapper for toolrunner.Toolrunner which checks for specific return code and/or regex matches in console output. * Output will be streamed to the live console as well as captured for subsequent processing. * Returns promise with return code * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param matchers defines specific codes and/or regexes that should lead to return of a custom error + * @param commandLine command to execute * @param args optional arguments for tool. Escaping is handled by the lib. + * @param matchers defines specific codes and/or regexes that should lead to return of a custom error * @param options optional exec options. See ExecOptions * @returns Promise exit code */ @@ -31,7 +31,7 @@ async function toolrunnerErrorCatcher(commandLine, args, matchers, options) { options.listeners.stdout(data); } else { - // if no stdout listener was originally defined then we match default behavior of exec.exec + // if no stdout listener was originally defined then we match default behavior of Toolrunner process.stdout.write(data); } }, @@ -42,7 +42,7 @@ async function toolrunnerErrorCatcher(commandLine, args, matchers, options) { options.listeners.stderr(data); } else { - // if no stderr listener was originally defined then we match default behavior of exec.exec + // if no stderr listener was originally defined then we match default behavior of Toolrunner process.stderr.write(data); } } diff --git a/lib/toolrunner-error-catcher.js.map b/lib/toolrunner-error-catcher.js.map index e3bf54dec..1ccaea597 100644 --- a/lib/toolrunner-error-catcher.js.map +++ b/lib/toolrunner-error-catcher.js.map @@ -1 +1 @@ -{"version":3,"file":"toolrunner-error-catcher.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.ts"],"names":[],"mappings":";;;;;;;;;AACA,0EAA4D;AAI5D;;;;;;;;;;GAUG;AACI,KAAK,UAAU,sBAAsB,CAAC,WAAmB,EAAE,IAAe,EACpC,QAAyB,EACzB,OAAwB;;IAEnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,SAAS,GAAG;QACd,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,aAAA,OAAO,0CAAE,SAAS,0CAAE,MAAM,MAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,2FAA2F;gBAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5B;QAEH,CAAC;QACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,aAAA,OAAO,0CAAE,SAAS,0CAAE,MAAM,MAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,2FAA2F;gBAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5B;QACH,CAAC;KACF,CAAC;IAEF,0GAA0G;IAC1G,IAAI,WAAyB,CAAC;IAC9B,IAAI;QACF,WAAW,GAAG,MAAM,IAAI,WAAW,CAAC,UAAU,CAC5C,WAAW,EACX,IAAI,EACJ;YACE,GAAG,OAAO;YACV,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,IAAI;SACvB,CACA,CAAC,IAAI,EAAE,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,WAAW,GAAG,CAAC,CAAC;KACjB;IAED,mEAAmE;IACnE,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAE1C,IAAI,QAAQ,EAAE;QACZ,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE;YACnD,IAAI,UAAU,KAAK,WAAW,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAG;gBACtF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACF;KACF;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,qFAAqF;QACrF,UAAI,OAAO,0CAAE,gBAAgB,EAAE;YAC7B,OAAO,WAAW,CAAC;SACpB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,4BAA4B,WAAW,EAAE,CAAC,CAAC;SACxF;KACF;SAAM;QACL,MAAM,WAAW,CAAC;KACnB;AACH,CAAC;AAlED,wDAkEC"} \ No newline at end of file +{"version":3,"file":"toolrunner-error-catcher.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.ts"],"names":[],"mappings":";;;;;;;;;AACA,0EAA4D;AAI5D;;;;;;;;;;GAUG;AACI,KAAK,UAAU,sBAAsB,CAAC,WAAmB,EAAE,IAAe,EACpC,QAAyB,EACzB,OAAwB;;IAEnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,SAAS,GAAG;QACd,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,aAAA,OAAO,0CAAE,SAAS,0CAAE,MAAM,MAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,4FAA4F;gBAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5B;QAEH,CAAC;QACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,aAAA,OAAO,0CAAE,SAAS,0CAAE,MAAM,MAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,4FAA4F;gBAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5B;QACH,CAAC;KACF,CAAC;IAEF,0GAA0G;IAC1G,IAAI,WAAyB,CAAC;IAC9B,IAAI;QACF,WAAW,GAAG,MAAM,IAAI,WAAW,CAAC,UAAU,CAC5C,WAAW,EACX,IAAI,EACJ;YACE,GAAG,OAAO;YACV,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,IAAI;SACvB,CACA,CAAC,IAAI,EAAE,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,WAAW,GAAG,CAAC,CAAC;KACjB;IAED,mEAAmE;IACnE,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAE1C,IAAI,QAAQ,EAAE;QACZ,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE;YACnD,IAAI,UAAU,KAAK,WAAW,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAG;gBACtF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACF;KACF;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,qFAAqF;QACrF,UAAI,OAAO,0CAAE,gBAAgB,EAAE;YAC7B,OAAO,WAAW,CAAC;SACpB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,4BAA4B,WAAW,EAAE,CAAC,CAAC;SACxF;KACF;SAAM;QACL,MAAM,WAAW,CAAC;KACnB;AACH,CAAC;AAlED,wDAkEC"} \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.test.js b/lib/toolrunner-error-catcher.test.js index e2c514a8b..12446ae52 100644 --- a/lib/toolrunner-error-catcher.test.js +++ b/lib/toolrunner-error-catcher.test.js @@ -11,7 +11,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const exec = __importStar(require("@actions/exec")); -const toolrunnner = __importStar(require("@actions/exec/lib/toolrunner")); const ava_1 = __importDefault(require("ava")); const testing_utils_1 = require("./testing-utils"); const toolrunner_error_catcher_1 = require("./toolrunner-error-catcher"); @@ -82,15 +81,15 @@ ava_1.default('execErrorCatcher preserves behavior of provided listeners', async function buildDummyArgs(stdoutContents, stderrContents, desiredErrorMessage, desiredExitCode) { let command = ''; if (stdoutContents) - command += 'console.log(\\"' + stdoutContents + '\\");'; + command += 'console.log("' + stdoutContents + '");'; if (stderrContents) - command += 'console.error(\\"' + stderrContents + '\\");'; + command += 'console.error("' + stderrContents + '");'; if (command.length === 0) throw new Error("Must provide contents for either stdout or stderr"); if (desiredErrorMessage) - command += 'throw new Error(\\"' + desiredErrorMessage + '\\");'; + command += 'throw new Error("' + desiredErrorMessage + '");'; if (desiredExitCode) command += 'process.exitCode = ' + desiredExitCode + ';'; - return toolrunnner.argStringToArray('-e "' + command + '"'); + return ["-e", command]; } //# sourceMappingURL=toolrunner-error-catcher.test.js.map \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.test.js.map b/lib/toolrunner-error-catcher.test.js.map index 0960eac20..27ae17803 100644 --- a/lib/toolrunner-error-catcher.test.js.map +++ b/lib/toolrunner-error-catcher.test.js.map @@ -1 +1 @@ -{"version":3,"file":"toolrunner-error-catcher.test.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"toolrunner-error-catcher.test.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/error-matcher.test.ts b/src/error-matcher.test.ts index 4dc99bccf..fadfb2381 100644 --- a/src/error-matcher.test.ts +++ b/src/error-matcher.test.ts @@ -18,16 +18,12 @@ test('noSourceCodeFound matches against example javascript output', async t => { 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}`); - } + if (!(matcherName in namedMatchersForTesting)) { + throw new Error(`Unknown matcher ${matcherName}`); } - + const regex = namedMatchersForTesting[matcherName][1]; + if (regex === null) { + throw new Error(`Cannot test matcher ${matcherName} with null regex`); + } + return regex.test(logSample); } diff --git a/src/error-matcher.ts b/src/error-matcher.ts index 68f0bbb1d..ba4a684ee 100644 --- a/src/error-matcher.ts +++ b/src/error-matcher.ts @@ -5,13 +5,12 @@ export type ErrorMatcher = [number|null, RegExp|null, string]; 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, 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` + "No code found during the build. Please see:\n" + + "https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning#no-code-found-during-the-build" ], }; diff --git a/src/toolrunner-error-catcher.test.ts b/src/toolrunner-error-catcher.test.ts index 8538b3ea9..389882dc4 100644 --- a/src/toolrunner-error-catcher.test.ts +++ b/src/toolrunner-error-catcher.test.ts @@ -1,5 +1,4 @@ import * as exec from '@actions/exec'; -import * as toolrunnner from '@actions/exec/lib/toolrunner'; import test from 'ava'; import { ErrorMatcher } from './error-matcher'; @@ -139,13 +138,13 @@ function buildDummyArgs(stdoutContents: string, stderrContents: string, let command = ''; - if (stdoutContents) command += 'console.log(\\"' + stdoutContents + '\\");'; - if (stderrContents) command += 'console.error(\\"' + stderrContents + '\\");'; + if (stdoutContents) command += 'console.log("' + stdoutContents + '");'; + if (stderrContents) command += 'console.error("' + stderrContents + '");'; if (command.length === 0) throw new Error("Must provide contents for either stdout or stderr"); - if (desiredErrorMessage) command += 'throw new Error(\\"' + desiredErrorMessage + '\\");'; + if (desiredErrorMessage) command += 'throw new Error("' + desiredErrorMessage + '");'; if (desiredExitCode) command += 'process.exitCode = ' + desiredExitCode + ';'; - return toolrunnner.argStringToArray('-e "' + command + '"'); + return ["-e", command]; } diff --git a/src/toolrunner-error-catcher.ts b/src/toolrunner-error-catcher.ts index 276fc408d..e423e427e 100644 --- a/src/toolrunner-error-catcher.ts +++ b/src/toolrunner-error-catcher.ts @@ -4,13 +4,13 @@ import * as toolrunnner from '@actions/exec/lib/toolrunner'; import {ErrorMatcher} from './error-matcher'; /** - * Wrapper for exec.exec which checks for specific return code and/or regex matches in console output. + * Wrapper for toolrunner.Toolrunner which checks for specific return code and/or regex matches in console output. * Output will be streamed to the live console as well as captured for subsequent processing. * Returns promise with return code * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param matchers defines specific codes and/or regexes that should lead to return of a custom error + * @param commandLine command to execute * @param args optional arguments for tool. Escaping is handled by the lib. + * @param matchers defines specific codes and/or regexes that should lead to return of a custom error * @param options optional exec options. See ExecOptions * @returns Promise exit code */ @@ -27,7 +27,7 @@ export async function toolrunnerErrorCatcher(commandLine: string, args?: string[ if (options?.listeners?.stdout !== undefined) { options.listeners.stdout(data); } else { - // if no stdout listener was originally defined then we match default behavior of exec.exec + // if no stdout listener was originally defined then we match default behavior of Toolrunner process.stdout.write(data); } @@ -37,7 +37,7 @@ export async function toolrunnerErrorCatcher(commandLine: string, args?: string[ if (options?.listeners?.stderr !== undefined) { options.listeners.stderr(data); } else { - // if no stderr listener was originally defined then we match default behavior of exec.exec + // if no stderr listener was originally defined then we match default behavior of Toolrunner process.stderr.write(data); } } @@ -50,7 +50,7 @@ export async function toolrunnerErrorCatcher(commandLine: string, args?: string[ commandLine, args, { - ...options, // pass original options first in order to override below + ...options, // we want to override the original options, so include them first listeners: listeners, ignoreReturnCode: true, // so we can check for specific codes using the matchers }