From b749113f727df217d90650a0dd49e6cbd08eb7b9 Mon Sep 17 00:00:00 2001 From: Dimitri B Date: Thu, 3 Jun 2021 12:14:17 +0200 Subject: [PATCH] Fix processing of config files containing the `rootDir` option (#117) --- source/lib/config.ts | 3 +-- source/test/fixtures/root-dir/package.json | 4 ++++ source/test/fixtures/root-dir/src/index.ts | 1 + source/test/fixtures/root-dir/test-d/index.test-d.ts | 4 ++++ source/test/fixtures/root-dir/ts-dist/index.d.ts | 1 + source/test/fixtures/root-dir/ts-dist/index.js | 4 ++++ source/test/fixtures/root-dir/tsconfig.json | 12 ++++++++++++ source/test/test.ts | 6 ++++++ 8 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 source/test/fixtures/root-dir/package.json create mode 100644 source/test/fixtures/root-dir/src/index.ts create mode 100644 source/test/fixtures/root-dir/test-d/index.test-d.ts create mode 100644 source/test/fixtures/root-dir/ts-dist/index.d.ts create mode 100644 source/test/fixtures/root-dir/ts-dist/index.js create mode 100644 source/test/fixtures/root-dir/tsconfig.json diff --git a/source/lib/config.ts b/source/lib/config.ts index 8e9e19b7..9f1261c8 100644 --- a/source/lib/config.ts +++ b/source/lib/config.ts @@ -1,4 +1,3 @@ -import * as path from 'path'; import { JsxEmit, ScriptTarget, @@ -56,7 +55,7 @@ function getOptionsFromTsConfig(cwd: string): CompilerOptions { return parseJsonSourceFileConfigFileContent( readJsonConfigFile(configPath, sys.readFile), sys, - path.basename(configPath), + cwd, undefined, configPath, ).options; diff --git a/source/test/fixtures/root-dir/package.json b/source/test/fixtures/root-dir/package.json new file mode 100644 index 00000000..fb215246 --- /dev/null +++ b/source/test/fixtures/root-dir/package.json @@ -0,0 +1,4 @@ +{ + "name": "test", + "types": "ts-dist/index.d.ts" +} diff --git a/source/test/fixtures/root-dir/src/index.ts b/source/test/fixtures/root-dir/src/index.ts new file mode 100644 index 00000000..66d48fc1 --- /dev/null +++ b/source/test/fixtures/root-dir/src/index.ts @@ -0,0 +1 @@ +export const a = 2; diff --git a/source/test/fixtures/root-dir/test-d/index.test-d.ts b/source/test/fixtures/root-dir/test-d/index.test-d.ts new file mode 100644 index 00000000..bf1dd794 --- /dev/null +++ b/source/test/fixtures/root-dir/test-d/index.test-d.ts @@ -0,0 +1,4 @@ +import {expectType} from '../../../..'; +import {a} from '../src'; + +expectType<2>(a); diff --git a/source/test/fixtures/root-dir/ts-dist/index.d.ts b/source/test/fixtures/root-dir/ts-dist/index.d.ts new file mode 100644 index 00000000..b14ea028 --- /dev/null +++ b/source/test/fixtures/root-dir/ts-dist/index.d.ts @@ -0,0 +1 @@ +export declare const a = 2; diff --git a/source/test/fixtures/root-dir/ts-dist/index.js b/source/test/fixtures/root-dir/ts-dist/index.js new file mode 100644 index 00000000..1c0c461c --- /dev/null +++ b/source/test/fixtures/root-dir/ts-dist/index.js @@ -0,0 +1,4 @@ +'use strict'; +exports.__esModule = true; +exports.a = void 0; +exports.a = 2; diff --git a/source/test/fixtures/root-dir/tsconfig.json b/source/test/fixtures/root-dir/tsconfig.json new file mode 100644 index 00000000..1de8c051 --- /dev/null +++ b/source/test/fixtures/root-dir/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "rootDir": "./src", + "outDir": "ts-dist" + }, + "include": [ + "src" + ], + "exclude": [ + "**/ts-dist/**" + ] +} diff --git a/source/test/test.ts b/source/test/test.ts index c7104e77..7f1bd14e 100644 --- a/source/test/test.ts +++ b/source/test/test.ts @@ -410,3 +410,9 @@ test('errors in libs from node_modules are not reported', async t => { [3, 18, 'error', 'Cannot find name \'Bar\'.'] ]); }); + +test('allow specifying `rootDir` option in `tsconfig.json`', async t => { + const diagnostics = await tsd({cwd: path.join(__dirname, 'fixtures/root-dir')}); + + verify(t, diagnostics, []); +});