From 4971e0a62e2658a262c413e135366e4efd03eea6 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 15 Apr 2016 16:06:35 -0400 Subject: [PATCH] report files causing transform errors --- src/utils/transform.js | 7 ++++++- .../report-transform-error-file/_config.js | 17 +++++++++++++++++ .../function/report-transform-error-file/foo.js | 3 +++ .../report-transform-error-file/main.js | 3 +++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 test/function/report-transform-error-file/_config.js create mode 100644 test/function/report-transform-error-file/foo.js create mode 100644 test/function/report-transform-error-file/main.js diff --git a/src/utils/transform.js b/src/utils/transform.js index 5ddde28..b401370 100644 --- a/src/utils/transform.js +++ b/src/utils/transform.js @@ -39,5 +39,10 @@ export default function transform ( source, id, transformers ) { }, Promise.resolve( source.code ) ) - .then( code => ({ code, originalCode, ast, sourceMapChain }) ); + .then( code => ({ code, originalCode, ast, sourceMapChain }) ) + .catch( err => { + err.id = id; + err.message = `Error loading ${id}: ${err.message}`; + throw err; + }); } diff --git a/test/function/report-transform-error-file/_config.js b/test/function/report-transform-error-file/_config.js new file mode 100644 index 0000000..c856974 --- /dev/null +++ b/test/function/report-transform-error-file/_config.js @@ -0,0 +1,17 @@ +var assert = require( 'assert' ); + +module.exports = { + description: 'reports which file caused a transform error', + options: { + plugins: [{ + transform: function ( code, id ) { + if ( /foo/.test( id ) ) { + throw new Error( 'nope' ); + } + } + }] + }, + error: function ( err ) { + assert.ok( ~err.message.indexOf( 'foo.js' ) ); + } +}; diff --git a/test/function/report-transform-error-file/foo.js b/test/function/report-transform-error-file/foo.js new file mode 100644 index 0000000..a2db33b --- /dev/null +++ b/test/function/report-transform-error-file/foo.js @@ -0,0 +1,3 @@ +export default function () { + console.log( 'foo' ); +} diff --git a/test/function/report-transform-error-file/main.js b/test/function/report-transform-error-file/main.js new file mode 100644 index 0000000..e1fb5c4 --- /dev/null +++ b/test/function/report-transform-error-file/main.js @@ -0,0 +1,3 @@ +import foo from './foo.js'; + +foo();