From 9da5f488cc7ce1bc6194e63349e73baa2067a66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Mon, 22 Jan 2018 15:37:30 +0100 Subject: [PATCH] fix: apply source-maps to test errors When we got rid of ts-node in #602, we also unintentionally dropped the code modifying error stack traces to point to original TypeScript sources instead of the transpiled JavaScript output. As a result, assertion failures contained stack traces pointing to code that we are not familiar with, which made troubleshooing difficult. This commits add source-map-support as a global dev-dependency plus a dev-dependency of example repositories that must work outside of our monorepo too. The single shared `mocha.opts` was split into two different options files: - `mocha.ts.opts` which registers source-map support - `mocha.js.opts` with no support for source maps --- package.json | 6 +++--- packages/authentication/package.json | 8 ++++---- packages/build/{mocha.opts => mocha.js.opts} | 0 packages/build/mocha.ts.opts | 4 ++++ packages/build/package.json | 2 +- packages/cli/generators/project/templates/package.json | 3 ++- .../cli/generators/project/templates/package.plain.json | 1 + packages/cli/generators/project/templates/test/mocha.opts | 1 + packages/cli/package.json | 2 +- packages/context/package.json | 6 +++--- packages/core/package.json | 8 ++++---- packages/example-getting-started/package.json | 7 ++++--- packages/metadata/package.json | 6 +++--- packages/openapi-spec/package.json | 3 ++- packages/openapi-v2/package.json | 2 +- packages/repository/package.json | 6 +++--- packages/rest/package.json | 8 ++++---- packages/testlab/package.json | 2 +- 18 files changed, 42 insertions(+), 33 deletions(-) rename packages/build/{mocha.opts => mocha.js.opts} (100%) create mode 100644 packages/build/mocha.ts.opts diff --git a/package.json b/package.json index 55631ae3ac3b..506d4fe54d4d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "node": ">=6" }, "license": "MIT", - "dependencies": {}, "devDependencies": { "@commitlint/cli": "^6.0.2", "@commitlint/config-conventional": "^6.0.2", @@ -19,7 +18,8 @@ "coveralls": "^3.0.0", "cz-conventional-changelog": "^2.1.0", "lerna": "^2.5.1", - "mocha": "^5.0.0" + "mocha": "^5.0.0", + "source-map-support": "^0.5.2" }, "scripts": { "bootstrap": "npm i && lerna bootstrap", @@ -41,7 +41,7 @@ "build:full": "npm run clean:full && npm run bootstrap && npm run build && npm run mocha && npm run lint", "pretest": "npm run clean && npm run build:current", "test": "node packages/build/bin/run-nyc npm run mocha", - "mocha": "node packages/build/bin/select-dist mocha --opts packages/build/mocha.opts \"packages/*/DIST/test/**/*.js\" \"packages/cli/test\"", + "mocha": "node packages/build/bin/select-dist mocha --opts packages/build/mocha.ts.opts \"packages/*/DIST/test/**/*.js\" \"packages/cli/test\"", "posttest": "npm run lint" }, "config": { diff --git a/packages/authentication/package.json b/packages/authentication/package.json index 7e0d6a990044..cac7a25e4137 100644 --- a/packages/authentication/package.json +++ b/packages/authentication/package.json @@ -6,18 +6,18 @@ "node": ">=6" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", "build:dist6": "lb-tsc es2015", "build:apidocs": "lb-apidocs", "clean": "lb-clean loopback-authentication*.tgz dist dist6 package api-docs", - "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/integration/**/*.js'", + "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/integration/**/*.js'", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-authentication*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/build/mocha.opts b/packages/build/mocha.js.opts similarity index 100% rename from packages/build/mocha.opts rename to packages/build/mocha.js.opts diff --git a/packages/build/mocha.ts.opts b/packages/build/mocha.ts.opts new file mode 100644 index 000000000000..0cf9a4cfa1a4 --- /dev/null +++ b/packages/build/mocha.ts.opts @@ -0,0 +1,4 @@ +--recursive +--exit +--reporter dot +--require source-map-support/register diff --git a/packages/build/package.json b/packages/build/package.json index 12acd148335a..5437eb0b1184 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -40,7 +40,7 @@ "prettier:check": "npm run prettier:cli -- -l", "prettier:fix": "npm run prettier:cli -- --write", "test": "npm run mocha", - "mocha": "node bin/select-dist mocha --timeout 30000 --opts mocha.opts \"test/integration/*.js\"", + "mocha": "node bin/select-dist mocha --opts mocha.js.opts --timeout 30000 \"test/integration/*.js\"", "posttest": "npm run lint" }, "devDependencies": { diff --git a/packages/cli/generators/project/templates/package.json b/packages/cli/generators/project/templates/package.json index 43b5f2ee26e1..a7f25edaa1b8 100644 --- a/packages/cli/generators/project/templates/package.json +++ b/packages/cli/generators/project/templates/package.json @@ -72,7 +72,8 @@ <% if (project.mocha) { -%> "@loopback/testlab": ">=4.0.0-alpha.13", "@types/mocha": "^2.2.43", - "mocha": "^4.0.1" + "mocha": "^4.0.1", + "source-map-support": "^0.5.2" <% } else { -%> "@loopback/testlab": ">=4.0.0-alpha.13" <% } -%> diff --git a/packages/cli/generators/project/templates/package.plain.json b/packages/cli/generators/project/templates/package.plain.json index 0704a46be91a..083522a368af 100644 --- a/packages/cli/generators/project/templates/package.plain.json +++ b/packages/cli/generators/project/templates/package.plain.json @@ -77,6 +77,7 @@ <% if (project.mocha) { -%> "@types/mocha": "^2.2.43", "mocha": "^4.0.1", + "source-map-support": "^0.5.2", <% } -%> "typescript": "^2.5.3" } diff --git a/packages/cli/generators/project/templates/test/mocha.opts b/packages/cli/generators/project/templates/test/mocha.opts index 4a5232017818..43f24ebc7b3d 100644 --- a/packages/cli/generators/project/templates/test/mocha.opts +++ b/packages/cli/generators/project/templates/test/mocha.opts @@ -1 +1,2 @@ --recursive +--require source-map-support/register diff --git a/packages/cli/package.json b/packages/cli/package.json index c7052274a330..63fbfc8f5713 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -54,7 +54,7 @@ }, "scripts": { "prepublishOnly": "nsp check", - "test": "mocha test/**/*.js" + "test": "mocha --opts node_modules/@loopback/build/mocha.js.opts test/**/*.js" }, "repository": { "type": "git", diff --git a/packages/context/package.json b/packages/context/package.json index cddb7a076a6b..6161924ba223 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -6,7 +6,7 @@ "node": ">=6" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -15,8 +15,8 @@ "clean": "lb-clean loopback-context*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-context*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/core/package.json b/packages/core/package.json index 12acf84764f4..f88fcacc12ea 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -6,7 +6,7 @@ "node": ">=6" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -15,9 +15,9 @@ "clean": "lb-clean loopback-core*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/integration/**/*.js'", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/integration/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-core*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/example-getting-started/package.json b/packages/example-getting-started/package.json index 14f57d1d686e..c807dbdf6744 100644 --- a/packages/example-getting-started/package.json +++ b/packages/example-getting-started/package.json @@ -8,7 +8,7 @@ "node": ">=8" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -17,8 +17,8 @@ "clean": "lb-clean loopback-getting-started*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-getting-started*.tgz && tree package && npm run clean", "start": "npm run build && node ." }, @@ -42,6 +42,7 @@ "@types/mocha": "^2.2.46", "@types/node": "^8.5.9", "mocha": "^5.0.0", + "source-map-support": "^0.5.2", "typescript": "^2.5.2" }, "keywords": [ diff --git a/packages/metadata/package.json b/packages/metadata/package.json index de213291528b..422d1ad2a77f 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -6,7 +6,7 @@ "node": ">=6" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -15,8 +15,8 @@ "clean": "lb-clean loopback-metadata*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-metadata*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/openapi-spec/package.json b/packages/openapi-spec/package.json index 91bdaa307766..02611d5ded60 100644 --- a/packages/openapi-spec/package.json +++ b/packages/openapi-spec/package.json @@ -39,5 +39,6 @@ "repository": { "type": "git", "url": "https://github.com/strongloop/loopback-next.git" - } + }, + "dependencies": {} } diff --git a/packages/openapi-v2/package.json b/packages/openapi-v2/package.json index fa87848b1f1e..557e19781a2c 100644 --- a/packages/openapi-v2/package.json +++ b/packages/openapi-v2/package.json @@ -21,7 +21,7 @@ "clean": "lb-clean loopback-openapi-v2*.tgz dist* package", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-openapi-v2*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/repository/package.json b/packages/repository/package.json index d830fb808015..1a3734c6c779 100644 --- a/packages/repository/package.json +++ b/packages/repository/package.json @@ -7,7 +7,7 @@ }, "main": "index", "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -16,8 +16,8 @@ "clean": "lb-clean loopback-repository*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-juggler*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/rest/package.json b/packages/rest/package.json index 53bc74ad0e3d..c4977bfdc27f 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -6,7 +6,7 @@ "node": ">=6" }, "scripts": { - "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/acceptance/**/*.js'", + "acceptance": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/acceptance/**/*.js'", "build": "npm run build:dist && npm run build:dist6", "build:current": "lb-tsc", "build:dist": "lb-tsc es2017", @@ -15,9 +15,9 @@ "clean": "lb-clean loopback-rest*.tgz dist dist6 package api-docs", "prepare": "npm run build && npm run build:apidocs", "pretest": "npm run build:current", - "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/integration/**/*.js'", - "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", - "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.opts 'DIST/test/unit/**/*.js'", + "integration": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/integration/**/*.js'", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js' 'DIST/test/integration/**/*.js' 'DIST/test/acceptance/**/*.js'", + "unit": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts 'DIST/test/unit/**/*.js'", "verify": "npm pack && tar xf loopback-rest*.tgz && tree package && npm run clean" }, "author": "IBM", diff --git a/packages/testlab/package.json b/packages/testlab/package.json index 0e789b2d73e1..7e7369706cd5 100644 --- a/packages/testlab/package.json +++ b/packages/testlab/package.json @@ -13,7 +13,7 @@ "clean": "lb-clean loopback-testlab*.tgz dist dist6 package api-docs", "prepare": "npm run build", "pretest": "npm run build:current", - "test": "lb-dist mocha --recursive DIST/test", + "test": "lb-dist mocha --opts node_modules/@loopback/build/mocha.ts.opts DIST/test", "verify": "npm pack && tar xf loopback-testlab*.tgz && tree package && npm run clean" }, "author": "IBM",