From cd041541b8c0b1b486b77cfa9827bfdb653cf42e Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 17 Nov 2016 17:53:46 -0500 Subject: [PATCH] Fix bug + Generate test fixtures if no expected.js (#4858) --- .../misc/regression-4855/actual.js | 2 + .../misc/regression-4855/expected.js | 7 +++ .../misc/regression-4855/options.json | 4 ++ .../compact/expression-statement/actual.js | 2 + .../compact/expression-statement/expected.js | 1 + packages/babel-generator/test/index.js | 47 ++++++++++++------- .../src/index.js | 1 + .../src/index.js | 4 +- .../assignment-expression/expected.js | 2 +- 9 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 packages/babel-core/test/fixtures/transformation/misc/regression-4855/actual.js create mode 100644 packages/babel-core/test/fixtures/transformation/misc/regression-4855/expected.js create mode 100644 packages/babel-core/test/fixtures/transformation/misc/regression-4855/options.json create mode 100644 packages/babel-generator/test/fixtures/compact/expression-statement/actual.js create mode 100644 packages/babel-generator/test/fixtures/compact/expression-statement/expected.js diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-4855/actual.js b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/actual.js new file mode 100644 index 0000000000..1e124fb4e1 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/actual.js @@ -0,0 +1,2 @@ +({ [fieldName]: value, ...rest } = values); +let error; diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-4855/expected.js b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/expected.js new file mode 100644 index 0000000000..c6e87b5bee --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/expected.js @@ -0,0 +1,7 @@ +"use strict"; + +var _values = values; +value = _values[fieldName]; +rest = babelHelpers.objectWithoutProperties(_values, [fieldName]); + +var error = void 0; \ No newline at end of file diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-4855/options.json b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/options.json new file mode 100644 index 0000000000..797622c330 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-4855/options.json @@ -0,0 +1,4 @@ +{ + "compact": false, + "presets": ["es2015","stage-2"] +} diff --git a/packages/babel-generator/test/fixtures/compact/expression-statement/actual.js b/packages/babel-generator/test/fixtures/compact/expression-statement/actual.js new file mode 100644 index 0000000000..d0f213e6c8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/compact/expression-statement/actual.js @@ -0,0 +1,2 @@ +({ [fieldName]: value, ...rest } = values) +let error; diff --git a/packages/babel-generator/test/fixtures/compact/expression-statement/expected.js b/packages/babel-generator/test/fixtures/compact/expression-statement/expected.js new file mode 100644 index 0000000000..c1dab6506a --- /dev/null +++ b/packages/babel-generator/test/fixtures/compact/expression-statement/expected.js @@ -0,0 +1 @@ +({[fieldName]:value,...rest}=values);let error; diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index 92b4c5b3d2..4f59f376b2 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -6,6 +6,8 @@ let parse = require("babylon").parse; let chai = require("chai"); let t = require("babel-types"); let _ = require("lodash"); +let fs = require("fs"); +let path = require("path"); describe("generation", function () { it("completeness", function () { @@ -158,25 +160,36 @@ suites.forEach(function (testSuite) { it(task.title, !task.disabled && function () { let expect = task.expect; let actual = task.actual; + let actualCode = actual.code; - let actualAst = parse(actual.code, { - filename: actual.loc, - plugins: [ - "jsx", - "flow", - "decorators", - "asyncFunctions", - "exportExtensions", - "functionBind", - "classConstructorCall", - "classProperties", - ], - strictMode: false, - sourceType: "module", - }); + if (actualCode) { + let actualAst = parse(actualCode, { + filename: actual.loc, + plugins: [ + "jsx", + "flow", + "doExpressions", + "objectRestSpread", + "decorators", + "classProperties", + "exportExtensions", + "asyncGenerators", + "functionBind", + "functionSent", + "dynamicImport" + ], + strictMode: false, + sourceType: "module", + }); + let result = generate.default(actualAst, task.options, actualCode); - let actualCode = generate.default(actualAst, task.options, actual.code).code; - chai.expect(actualCode).to.equal(expect.code, actual.loc + " !== " + expect.loc); + if (!expect.code && result.code && fs.statSync(path.dirname(expect.loc)).isDirectory() && !process.env.CI) { + console.log(`New test file created: ${expect.loc}`); + fs.writeFileSync(expect.loc, result.code); + } else { + chai.expect(result.code).to.be.equal(expect.code, actual.loc + " !== " + expect.loc); + } + } }); }); }); diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index b930522cc9..12d94265c4 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -82,6 +82,7 @@ function run(task) { if (!execCode || actualCode) { result = babel.transform(actualCode, getOpts(actual)); if (!expect.code && result.code && !opts.throws && fs.statSync(path.dirname(expect.loc)).isDirectory() && !process.env.CI) { + console.log(`New test file created: ${expect.loc}`); fs.writeFileSync(expect.loc, result.code); } else { actualCode = result.code.trim(); diff --git a/packages/babel-plugin-transform-object-rest-spread/src/index.js b/packages/babel-plugin-transform-object-rest-spread/src/index.js index 45bcd3fdf6..0105dc290c 100644 --- a/packages/babel-plugin-transform-object-rest-spread/src/index.js +++ b/packages/babel-plugin-transform-object-rest-spread/src/index.js @@ -175,11 +175,11 @@ export default function ({ types: t }) { let nodeWithoutSpread = t.clone(path.node); nodeWithoutSpread.right = ref; nodes.push(t.expressionStatement(nodeWithoutSpread)); - nodes.push(t.assignmentExpression( + nodes.push(t.toStatement(t.assignmentExpression( "=", argument, callExpression - )); + ))); if (ref) { nodes.push(t.expressionStatement(ref)); diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/assignment-expression/expected.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/assignment-expression/expected.js index 98f2cf1583..cf9916a567 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/assignment-expression/expected.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/assignment-expression/expected.js @@ -1,5 +1,5 @@ ({ a } = c); var _c = c; ({ a } = _c); -b = babelHelpers.objectWithoutProperties(_c, ["a"]) +b = babelHelpers.objectWithoutProperties(_c, ["a"]); _c;