From d50c29bb6a54bf0dce08ac924be0b511ae71ecdc Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 11 Jun 2017 13:57:19 -0400 Subject: [PATCH] more improvements to ergonomics around test failures --- test/runtime/index.js | 29 ++++++++++--------- .../samples/component-nested-deep/_config.js | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/test/runtime/index.js b/test/runtime/index.js index 889ed4d946..a21648b604 100644 --- a/test/runtime/index.js +++ b/test/runtime/index.js @@ -46,6 +46,8 @@ describe("runtime", () => { return setupHtmlEqual(); }); + const failed = new Set(); + function runTest(dir, shared) { if (dir[0] === ".") return; @@ -55,7 +57,12 @@ describe("runtime", () => { throw new Error("Forgot to remove `solo: true` from test"); } - (config.skip ? it.skip : config.solo ? it.only : it)(dir, () => { + (config.skip ? it.skip : config.solo ? it.only : it)(`${dir} (${shared ? 'shared' : 'inline'} helpers`, () => { + if (failed.has(dir)) { + // this makes debugging easier, by only printing compiled output once + throw new Error('skipping inline helpers test'); + } + const cwd = path.resolve(`test/runtime/samples/${dir}`); let compiled; @@ -74,6 +81,7 @@ describe("runtime", () => { config.compileError(err); return; } else { + failed.add(dir); showOutput(cwd, shared); throw err; } @@ -92,13 +100,12 @@ describe("runtime", () => { code.slice(startIndex).replace(/export default .+/, ""); acorn.parse(es5, { ecmaVersion: 5 }); } catch (err) { - if (!config.show) showOutput(cwd, shared); // eslint-disable-line no-console + failed.add(dir); + showOutput(cwd, shared); // eslint-disable-line no-console throw err; } } - if (config.show) showOutput(cwd, shared); - Object.keys(require.cache) .filter(x => x.endsWith(".html")) .forEach(file => { @@ -202,6 +209,7 @@ describe("runtime", () => { if (config.error && !unintendedError) { config.error(assert, err); } else { + failed.add(dir); showOutput(cwd, shared); // eslint-disable-line no-console throw err; } @@ -212,17 +220,10 @@ describe("runtime", () => { }); } - describe("inline helpers", () => { - fs.readdirSync("test/runtime/samples").forEach(dir => { - runTest(dir, null); - }); - }); - const shared = path.resolve("shared.js"); - describe("shared helpers", () => { - fs.readdirSync("test/runtime/samples").forEach(dir => { - runTest(dir, shared); - }); + fs.readdirSync("test/runtime/samples").forEach(dir => { + runTest(dir, shared); + runTest(dir, null); }); it("fails if options.target is missing in dev mode", () => { diff --git a/test/runtime/samples/component-nested-deep/_config.js b/test/runtime/samples/component-nested-deep/_config.js index cb2dc0b0ee..63b70fe41d 100644 --- a/test/runtime/samples/component-nested-deep/_config.js +++ b/test/runtime/samples/component-nested-deep/_config.js @@ -1,5 +1,5 @@ export default { - test (assert, component) { + test(assert, component) { component.refs.l1.destroy(); } };