From 39311da27bf4848594b56c8a43c559f149b0f63c Mon Sep 17 00:00:00 2001 From: Alexander T Date: Wed, 29 Jan 2020 02:11:19 +0200 Subject: [PATCH] fix(36385): return failed exit code if tsconfig doesn't exist and there are no input files. (#36474) --- src/executeCommandLine/executeCommandLine.ts | 5 +- src/testRunner/tsconfig.json | 1 + .../unittests/tsc/runWithoutArgs.ts | 10 ++++ ...tatus.DiagnosticsPresent_OutputsSkipped.js | 50 +++++++++++++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 src/testRunner/unittests/tsc/runWithoutArgs.ts create mode 100644 tests/baselines/reference/tsc/runWithoutArgs/initial-build/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js diff --git a/src/executeCommandLine/executeCommandLine.ts b/src/executeCommandLine/executeCommandLine.ts index f285d7fdcc9..65240fbee46 100644 --- a/src/executeCommandLine/executeCommandLine.ts +++ b/src/executeCommandLine/executeCommandLine.ts @@ -243,13 +243,12 @@ namespace ts { if (commandLine.fileNames.length === 0 && !configFileName) { if (commandLine.options.showConfig) { reportDiagnostic(createCompilerDiagnostic(Diagnostics.Cannot_find_a_tsconfig_json_file_at_the_current_directory_Colon_0, normalizePath(sys.getCurrentDirectory()))); - return sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); } else { printVersion(sys); printHelp(sys, getOptionsForHelp(commandLine)); - return sys.exit(ExitStatus.Success); } + return sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); } const currentDirectory = sys.getCurrentDirectory(); @@ -739,4 +738,4 @@ namespace ts { return; } -} \ No newline at end of file +} diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index 2cadfc7ccc5..3c3bdf0deb6 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -129,6 +129,7 @@ "unittests/tsc/declarationEmit.ts", "unittests/tsc/incremental.ts", "unittests/tsc/listFilesOnly.ts", + "unittests/tsc/runWithoutArgs.ts", "unittests/tscWatch/consoleClearing.ts", "unittests/tscWatch/emit.ts", "unittests/tscWatch/emitAndErrorUpdates.ts", diff --git a/src/testRunner/unittests/tsc/runWithoutArgs.ts b/src/testRunner/unittests/tsc/runWithoutArgs.ts new file mode 100644 index 00000000000..ed53a162294 --- /dev/null +++ b/src/testRunner/unittests/tsc/runWithoutArgs.ts @@ -0,0 +1,10 @@ +namespace ts { + describe("unittests:: tsc:: runWithoutArgs::", () => { + verifyTsc({ + scenario: "runWithoutArgs", + subScenario: "show help with ExitStatus.DiagnosticsPresent_OutputsSkipped", + fs: () => loadProjectFromFiles({}), + commandLineArgs: [] + }); + }); +} diff --git a/tests/baselines/reference/tsc/runWithoutArgs/initial-build/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js b/tests/baselines/reference/tsc/runWithoutArgs/initial-build/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js new file mode 100644 index 00000000000..ce4332cb01a --- /dev/null +++ b/tests/baselines/reference/tsc/runWithoutArgs/initial-build/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js @@ -0,0 +1,50 @@ +//// [/lib/initial-buildOutput.txt] +/lib/tsc +Version 3.8.0-dev +Syntax: tsc [options] [file...] + +Examples: tsc hello.ts + tsc --outFile file.js file.ts + tsc @args.txt + tsc --build tsconfig.json + +Options: + -h, --help Print this message. + -w, --watch Watch input files. + --pretty Stylize errors and messages using color and context (experimental). + --all Show all compiler options. + -v, --version Print the compiler's version. + --init Initializes a TypeScript project and creates a tsconfig.json file. + -p FILE OR DIRECTORY, --project FILE OR DIRECTORY Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'. + -b, --build Build one or more projects and their dependencies, if out of date + -t VERSION, --target VERSION Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. + -m KIND, --module KIND Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. + --lib Specify library files to be included in the compilation. + 'es5' 'es6' 'es2015' 'es7' 'es2016' 'es2017' 'es2018' 'es2019' 'es2020' 'esnext' 'dom' 'dom.iterable' 'webworker' 'webworker.importscripts' 'scripthost' 'es2015.core' 'es2015.collection' 'es2015.generator' 'es2015.iterable' 'es2015.promise' 'es2015.proxy' 'es2015.reflect' 'es2015.symbol' 'es2015.symbol.wellknown' 'es2016.array.include' 'es2017.object' 'es2017.sharedmemory' 'es2017.string' 'es2017.intl' 'es2017.typedarrays' 'es2018.asyncgenerator' 'es2018.asynciterable' 'es2018.intl' 'es2018.promise' 'es2018.regexp' 'es2019.array' 'es2019.object' 'es2019.string' 'es2019.symbol' 'es2020.bigint' 'es2020.promise' 'es2020.string' 'es2020.symbol.wellknown' 'esnext.array' 'esnext.symbol' 'esnext.asynciterable' 'esnext.intl' 'esnext.bigint' + --allowJs Allow javascript files to be compiled. + --jsx KIND Specify JSX code generation: 'preserve', 'react-native', or 'react'. + -d, --declaration Generates corresponding '.d.ts' file. + --declarationMap Generates a sourcemap for each corresponding '.d.ts' file. + --sourceMap Generates corresponding '.map' file. + --outFile FILE Concatenate and emit output to single file. + --outDir DIRECTORY Redirect output structure to the directory. + --removeComments Do not emit comments to output. + --noEmit Do not emit outputs. + --strict Enable all strict type-checking options. + --noImplicitAny Raise error on expressions and declarations with an implied 'any' type. + --strictNullChecks Enable strict null checks. + --strictFunctionTypes Enable strict checking of function types. + --strictBindCallApply Enable strict 'bind', 'call', and 'apply' methods on functions. + --strictPropertyInitialization Enable strict checking of property initialization in classes. + --noImplicitThis Raise error on 'this' expressions with an implied 'any' type. + --alwaysStrict Parse in strict mode and emit "use strict" for each source file. + --noUnusedLocals Report errors on unused locals. + --noUnusedParameters Report errors on unused parameters. + --noImplicitReturns Report error when not all code paths in function return a value. + --noFallthroughCasesInSwitch Report errors for fallthrough cases in switch statement. + --types Type declaration files to be included in compilation. + --esModuleInterop Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. + @ Insert command line options and files from a file. +exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped + +