From a32f62b3102fbb0af04a9c121397fc908d070df8 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 14 Aug 2018 15:46:51 -0700 Subject: [PATCH] Write tests to demonstrate how baseUrl + pathMapping to node_modules behaves --- ...lution_withExtension_MapedToNodeModules.js | 14 +++++++++++ ...n_withExtension_MapedToNodeModules.symbols | 11 +++++++++ ...ithExtension_MapedToNodeModules.trace.json | 10 ++++++++ ...ion_withExtension_MapedToNodeModules.types | 14 +++++++++++ ...lution_withExtension_MapedToNodeModules.ts | 23 +++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js create mode 100644 tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.symbols create mode 100644 tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.trace.json create mode 100644 tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.types create mode 100644 tests/cases/compiler/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.ts diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js new file mode 100644 index 0000000000..677978308c --- /dev/null +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js @@ -0,0 +1,14 @@ +//// [tests/cases/compiler/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.ts] //// + +//// [foobar.js] +module.exports = { a: 10 }; + +//// [a.ts] +import foobar from "foo/bar/foobar.js"; + + +//// [/bin/node_modules/foo/bar/foobar.js] +module.exports = { a: 10 }; +//// [/bin/a.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.symbols b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.symbols new file mode 100644 index 0000000000..3ebcaccee2 --- /dev/null +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.symbols @@ -0,0 +1,11 @@ +=== /a.ts === +import foobar from "foo/bar/foobar.js"; +>foobar : Symbol(foobar, Decl(a.ts, 0, 6)) + +=== /node_modules/foo/bar/foobar.js === +module.exports = { a: 10 }; +>module.exports : Symbol("/node_modules/foo/bar/foobar", Decl(foobar.js, 0, 0)) +>module : Symbol(export=, Decl(foobar.js, 0, 0)) +>exports : Symbol(export=, Decl(foobar.js, 0, 0)) +>a : Symbol(a, Decl(foobar.js, 0, 18)) + diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.trace.json new file mode 100644 index 0000000000..dac9d19bc0 --- /dev/null +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.trace.json @@ -0,0 +1,10 @@ +[ + "======== Resolving module 'foo/bar/foobar.js' from '/a.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "'baseUrl' option is set to '/', using this value to resolve non-relative module name 'foo/bar/foobar.js'.", + "'paths' option is specified, looking for a pattern to match module name 'foo/bar/foobar.js'.", + "Module name 'foo/bar/foobar.js', matched pattern '*'.", + "Trying substitution 'node_modules/*', candidate module location: 'node_modules/foo/bar/foobar.js'.", + "File '/node_modules/foo/bar/foobar.js' exist - use it as a name resolution result.", + "======== Module name 'foo/bar/foobar.js' was successfully resolved to '/node_modules/foo/bar/foobar.js'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.types b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.types new file mode 100644 index 0000000000..9f2b1e4484 --- /dev/null +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.types @@ -0,0 +1,14 @@ +=== /a.ts === +import foobar from "foo/bar/foobar.js"; +>foobar : { a: number; } + +=== /node_modules/foo/bar/foobar.js === +module.exports = { a: 10 }; +>module.exports = { a: 10 } : { a: number; } +>module.exports : { a: number; } +>module : { "/node_modules/foo/bar/foobar": { a: number; }; } +>exports : { a: number; } +>{ a: 10 } : { a: number; } +>a : number +>10 : 10 + diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.ts b/tests/cases/compiler/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.ts new file mode 100644 index 0000000000..99e4070ff8 --- /dev/null +++ b/tests/cases/compiler/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.ts @@ -0,0 +1,23 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @allowJs: true +// @esModuleInterop: true +// @fullEmitPaths: true + +// @Filename: /node_modules/foo/bar/foobar.js +module.exports = { a: 10 }; + +// @Filename: /a.ts +import foobar from "foo/bar/foobar.js"; + +// @Filename: /tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "*": ["node_modules/*", "src/types"] + }, + "allowJs": true, + "outDir": "bin" + } +}