From f464a8178070db1f286e044e2ee956e4ea72ee6b Mon Sep 17 00:00:00 2001 From: Jason Dent Date: Wed, 8 Sep 2021 08:52:59 +0200 Subject: [PATCH] dev: Move CheckFailed Error into its own file. (#1663) * dev: Move CheckFailed Error into its own file. * Update bin.js --- packages/cspell/bin.js | 2 ++ packages/cspell/src/app.ts | 9 +++------ packages/cspell/src/util/errors.test.ts | 11 +++++++++++ packages/cspell/src/util/errors.ts | 5 +++++ 4 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 packages/cspell/src/util/errors.test.ts create mode 100644 packages/cspell/src/util/errors.ts diff --git a/packages/cspell/bin.js b/packages/cspell/bin.js index f06e4e65543..7625ebe49f5 100755 --- a/packages/cspell/bin.js +++ b/packages/cspell/bin.js @@ -8,6 +8,8 @@ const program = require('commander'); app.run(program, process.argv).catch((e) => { if (!(e instanceof program.CommanderError) && !(e instanceof app.CheckFailed)) { console.log(e); + // It is possible an explicit exit code was set, use it if it was. + process.exitCode = process.exitCode || 1; } if (e instanceof app.CheckFailed) { process.exitCode = e.exitCode; diff --git a/packages/cspell/src/app.ts b/packages/cspell/src/app.ts index 1f77e9c2d24..2dd3237c242 100644 --- a/packages/cspell/src/app.ts +++ b/packages/cspell/src/app.ts @@ -17,6 +17,9 @@ import { tableToLines } from './util/table'; import { Emitters, isProgressFileComplete, MessageType, ProgressItem, Issue } from './emitters'; import { isSpellingDictionaryLoadError, SpellingDictionaryLoadError, ImportError } from 'cspell-lib'; import { emitTraceResults } from './traceEmitter'; +import { CheckFailed } from './util/errors'; + +export { CheckFailed } from './util/errors'; interface Options extends CSpellApplicationOptions { legacy?: boolean; @@ -409,9 +412,3 @@ class TS extends Array { function template(s: string): TemplateStringsArray { return new TS(s); } - -export class CheckFailed extends Error { - constructor(message: string, readonly exitCode: number = 1) { - super(message); - } -} diff --git a/packages/cspell/src/util/errors.test.ts b/packages/cspell/src/util/errors.test.ts new file mode 100644 index 00000000000..c58ca545426 --- /dev/null +++ b/packages/cspell/src/util/errors.test.ts @@ -0,0 +1,11 @@ +import { CheckFailed } from './errors'; + +describe('errors', () => { + test.each` + ErrorClass | params + ${CheckFailed} | ${['no matches']} + `('new', ({ ErrorClass, params }) => { + const e = new ErrorClass(...params); + expect(e instanceof Error).toBe(true); + }); +}); diff --git a/packages/cspell/src/util/errors.ts b/packages/cspell/src/util/errors.ts new file mode 100644 index 00000000000..997b23ff6f3 --- /dev/null +++ b/packages/cspell/src/util/errors.ts @@ -0,0 +1,5 @@ +export class CheckFailed extends Error { + constructor(message: string, readonly exitCode: number = 1) { + super(message); + } +}