Added project tests for node_modules JavaScript searches

This commit is contained in:
Bill Ticehurst 2016-06-26 23:14:43 -07:00
parent e9a0c56d3c
commit 885b0e902a
40 changed files with 488 additions and 0 deletions

1
.gitignore vendored
View File

@ -49,3 +49,4 @@ internal/
**/.vscode
!**/.vscode/tasks.json
!tests/cases/projects/projectOption/**/node_modules
!tests/cases/projects/NodeModulesSearch/**/*

View File

@ -0,0 +1,6 @@
define(["require", "exports", "m1"], function (require, exports, m1) {
"use strict";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible).
});

View File

@ -0,0 +1,40 @@
importHigher/root.ts(6,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m2/node_modules/m3/index.js (0 errors) ====
exports.person = {
"name": "John Doe",
"age": 42
}
==== importHigher/root.ts (1 errors) ====
import * as m1 from "m1";
import * as m2 from "m2";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible).
~~~~~~~~~~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.

View File

@ -0,0 +1,18 @@
{
"scenario": "Verify that a higher import loads a module that was previously skipped",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "importHigher",
"resolvedInputFiles": [
"lib.d.ts",
"importHigher/node_modules/m2/entry.js",
"importHigher/node_modules/m1/index.js",
"importHigher/node_modules/m2/node_modules/m3/index.js",
"importHigher/root.ts"
],
"emittedFiles": [
"importHigher/root.js"
]
}

View File

@ -0,0 +1,5 @@
"use strict";
var m1 = require("m1");
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible).

View File

@ -0,0 +1,40 @@
importHigher/root.ts(6,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/importHigher/node_modules/m2/node_modules/m3/index.js (0 errors) ====
exports.person = {
"name": "John Doe",
"age": 42
}
==== importHigher/root.ts (1 errors) ====
import * as m1 from "m1";
import * as m2 from "m2";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible).
~~~~~~~~~~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.

View File

@ -0,0 +1,18 @@
{
"scenario": "Verify that a higher import loads a module that was previously skipped",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "importHigher",
"resolvedInputFiles": [
"lib.d.ts",
"importHigher/node_modules/m2/entry.js",
"importHigher/node_modules/m1/index.js",
"importHigher/node_modules/m2/node_modules/m3/index.js",
"importHigher/root.ts"
],
"emittedFiles": [
"importHigher/root.js"
]
}

View File

@ -0,0 +1,6 @@
define(["require", "exports", "m1"], function (require, exports, m1) {
"use strict";
m1.f1("test");
m1.f2.a = "10"; // Error: Should be number
m1.f2.person.age = "10"; // OK if stopped at 2 modules: person will be "any".
});

View File

@ -0,0 +1,32 @@
maxDepthExceeded/root.ts(3,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthExceeded/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthExceeded/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== maxDepthExceeded/root.ts (1 errors) ====
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = "10"; // Error: Should be number
~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.
m1.f2.person.age = "10"; // OK if stopped at 2 modules: person will be "any".

View File

@ -0,0 +1,17 @@
{
"scenario": "Verify that JavaScript modules are not resolved if too many hops",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthExceeded",
"resolvedInputFiles": [
"lib.d.ts",
"maxDepthExceeded/node_modules/m2/entry.js",
"maxDepthExceeded/node_modules/m1/index.js",
"maxDepthExceeded/root.ts"
],
"emittedFiles": [
"maxDepthExceeded/root.js"
]
}

View File

@ -0,0 +1,5 @@
"use strict";
var m1 = require("m1");
m1.f1("test");
m1.f2.a = "10"; // Error: Should be number
m1.f2.person.age = "10"; // OK if stopped at 2 modules: person will be "any".

View File

@ -0,0 +1,32 @@
maxDepthExceeded/root.ts(3,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthExceeded/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthExceeded/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== maxDepthExceeded/root.ts (1 errors) ====
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = "10"; // Error: Should be number
~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.
m1.f2.person.age = "10"; // OK if stopped at 2 modules: person will be "any".

View File

@ -0,0 +1,17 @@
{
"scenario": "Verify that JavaScript modules are not resolved if too many hops",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthExceeded",
"resolvedInputFiles": [
"lib.d.ts",
"maxDepthExceeded/node_modules/m2/entry.js",
"maxDepthExceeded/node_modules/m1/index.js",
"maxDepthExceeded/root.ts"
],
"emittedFiles": [
"maxDepthExceeded/root.js"
]
}

View File

@ -0,0 +1,6 @@
define(["require", "exports", "m1"], function (require, exports, m1) {
"use strict";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number
});

View File

@ -0,0 +1,38 @@
maxDepthIncreased/root.ts(4,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m2/node_modules/m3/index.js (0 errors) ====
exports.person = {
"name": "John Doe",
"age": 42
}
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== maxDepthIncreased/root.ts (1 errors) ====
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number
~~~~~~~~~~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.

View File

@ -0,0 +1,18 @@
{
"scenario": "Verify that the setting to search node_modules deeper takes effect",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthIncreased",
"resolvedInputFiles": [
"lib.d.ts",
"maxDepthIncreased/node_modules/m2/node_modules/m3/index.js",
"maxDepthIncreased/node_modules/m2/entry.js",
"maxDepthIncreased/node_modules/m1/index.js",
"maxDepthIncreased/root.ts"
],
"emittedFiles": [
"maxDepthIncreased/root.js"
]
}

View File

@ -0,0 +1,5 @@
"use strict";
var m1 = require("m1");
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number

View File

@ -0,0 +1,38 @@
maxDepthIncreased/root.ts(4,1): error TS2322: Type 'string' is not assignable to type 'number'.
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m2/node_modules/m3/index.js (0 errors) ====
exports.person = {
"name": "John Doe",
"age": 42
}
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m2/entry.js (0 errors) ====
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};
==== C:/src/TypeScript/tests/cases/projects/NodeModulesSearch/maxDepthIncreased/node_modules/m1/index.js (0 errors) ====
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;
==== maxDepthIncreased/root.ts (1 errors) ====
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number
~~~~~~~~~~~~~~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.

View File

@ -0,0 +1,18 @@
{
"scenario": "Verify that the setting to search node_modules deeper takes effect",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthIncreased",
"resolvedInputFiles": [
"lib.d.ts",
"maxDepthIncreased/node_modules/m2/node_modules/m3/index.js",
"maxDepthIncreased/node_modules/m2/entry.js",
"maxDepthIncreased/node_modules/m1/index.js",
"maxDepthIncreased/root.ts"
],
"emittedFiles": [
"maxDepthIncreased/root.js"
]
}

View File

@ -0,0 +1,8 @@
{
"scenario": "Verify that a higher import loads a module that was previously skipped",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "importHigher"
}

View File

@ -0,0 +1,8 @@
{
"scenario": "Verify that JavaScript modules are not resolved if too many hops",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthExceeded"
}

View File

@ -0,0 +1,8 @@
{
"scenario": "Verify that the setting to search node_modules deeper takes effect",
"projectRoot": "tests/cases/projects/NodeModulesSearch",
"baselineCheck": true,
"declaration": false,
"moduleResolution": "node",
"project": "maxDepthIncreased"
}

View File

@ -0,0 +1,10 @@
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;

View File

@ -0,0 +1,7 @@
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};

View File

@ -0,0 +1,4 @@
exports.person = {
"name": "John Doe",
"age": 42
}

View File

@ -0,0 +1,3 @@
{
"main": "entry.js"
}

View File

@ -0,0 +1,6 @@
import * as m1 from "m1";
import * as m2 from "m2";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible).

View File

@ -0,0 +1,7 @@
{
"compilerOptions": {
"allowJs": true,
"declaration": false,
"moduleResolution": "node"
}
}

View File

@ -0,0 +1,10 @@
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;

View File

@ -0,0 +1,7 @@
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};

View File

@ -0,0 +1,4 @@
exports.person = {
"name": "John Doe",
"age": 42
}

View File

@ -0,0 +1,3 @@
{
"main": "entry.js"
}

View File

@ -0,0 +1,4 @@
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = "10"; // Error: Should be number
m1.f2.person.age = "10"; // OK if stopped at 2 modules: person will be "any".

View File

@ -0,0 +1,5 @@
{
"compilerOptions": {
"allowJs": true
}
}

View File

@ -0,0 +1,10 @@
var m2 = require('m2');
/**
* @param {string} p1 The first param
*/
exports.f1 = function(p1) {
return 42;
};
exports.f2 = m2;

View File

@ -0,0 +1,7 @@
var m3 = require("m3");
module.exports = {
"a": 42,
"b": "hello, world",
"person": m3.person
};

View File

@ -0,0 +1,4 @@
exports.person = {
"name": "John Doe",
"age": 42
}

View File

@ -0,0 +1,3 @@
{
"main": "entry.js"
}

View File

@ -0,0 +1,4 @@
import * as m1 from "m1";
m1.f1("test");
m1.f2.a = 10;
m1.f2.person.age = "10"; // Error: Should be number

View File

@ -0,0 +1,6 @@
{
"compilerOptions": {
"allowJs": true,
"maxNodeModuleJsDepth": 3
}
}