From 523fec666f4c0ab1507b9f1342d764985c0a720f Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 20 Jul 2019 15:28:08 -0700 Subject: [PATCH] Added an explicit error message for TSLint versions too low --- src/input/findTSLintConfiguration.ts | 18 ++++++++++++------ src/input/findTslintConfiguration.test.ts | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/input/findTSLintConfiguration.ts b/src/input/findTSLintConfiguration.ts index 129be0866..97962ff0e 100644 --- a/src/input/findTSLintConfiguration.ts +++ b/src/input/findTSLintConfiguration.ts @@ -29,10 +29,16 @@ export const findTSLintConfiguration = async ( config || "./tslint.json", ); - return rawConfiguration instanceof Error - ? rawConfiguration - : { - ...defaultTSLintConfiguration, - ...rawConfiguration, - }; + if (rawConfiguration instanceof Error) { + if (rawConfiguration.message.includes("unknown option `--print-config")) { + return new Error("TSLint v5.18 required. Please update your version."); + } + + return rawConfiguration; + } + + return { + ...defaultTSLintConfiguration, + ...rawConfiguration, + }; }; diff --git a/src/input/findTslintConfiguration.test.ts b/src/input/findTslintConfiguration.test.ts index 3acbff365..a429a8fbf 100644 --- a/src/input/findTslintConfiguration.test.ts +++ b/src/input/findTslintConfiguration.test.ts @@ -18,6 +18,22 @@ describe("findTSLintConfiguration", () => { ); }); + it("replaces an error with a v5.18 request when the --print-config option is unsupported", async () => { + // Arrange + const stderr = "unknown option `--print-config"; + const dependencies = { exec: createStubThrowingExec({ stderr }) }; + + // Act + const result = await findTSLintConfiguration(dependencies, undefined); + + // Assert + expect(result).toEqual( + expect.objectContaining({ + message: "TSLint v5.18 required. Please update your version.", + }), + ); + }); + it("defaults the configuration file when one isn't provided", async () => { // Arrange const dependencies = { exec: createStubExec() };