diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index b3db230132..2f7a078192 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -2,6 +2,7 @@ import * as babel from "../lib/index"; import buildExternalHelpers from "../lib/tools/build-external-helpers"; import sourceMap from "source-map"; import assert from "assert"; +import path from "path"; import Plugin from "../lib/config/plugin"; import generator from "babel-generator"; @@ -271,6 +272,77 @@ describe("api", function () { }); + it("complex plugin and preset ordering", function() { + function pushPlugin(str) { + return { + visitor: { + Program(path) { + path.pushContainer("body", babel.types.expressionStatement(babel.types.identifier(str))); + }, + }, + }; + } + + function pushPreset(str) { + return { plugins: [pushPlugin(str)] }; + } + + const result = babel.transform("", { + filename: path.join(__dirname, "fixtures", "config", "complex-plugin-config", "file.js"), + presets: [ + pushPreset("argone"), + pushPreset("argtwo"), + ], + env: { + development: { + passPerPreset: true, + presets: [ + pushPreset("argthree"), + pushPreset("argfour"), + ], + env: { + development: { + passPerPreset: true, + presets: [ + pushPreset("argfive"), + pushPreset("argsix"), + ], + }, + }, + }, + }, + }); + + assert.equal(result.code, [ + "argtwo;", + "argone;", + "eleven;", + "twelve;", + "one;", + "two;", + "five;", + "six;", + "three;", + "four;", + "seventeen;", + "eighteen;", + "nineteen;", + "twenty;", + "thirteen;", + "fourteen;", + "fifteen;", + "sixteen;", + "argfive;", + "argsix;", + "argthree;", + "argfour;", + "seven;", + "eight;", + "nine;", + "ten;", + ].join("\n")); + }); + it("source map merging", function () { const result = babel.transform([ /* eslint-disable max-len */ diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelignore b/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelignore new file mode 100644 index 0000000000..81b328e97e --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelignore @@ -0,0 +1,21 @@ +one.js +two.js +three.js +four.js +five.js +six.js +seven.js +eight.js +nine.js +ten.js +eleven.js +twelve.js +thirteen.js +fourteen.js +fifteen.js +sixteen.js +seventeen.js +eighteen.js +nineteen.js +twenty.js +plugin.js diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelrc b/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelrc new file mode 100644 index 0000000000..a9c3ab04b8 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/.babelrc @@ -0,0 +1,39 @@ +{ + extends: "./extended.babelrc", + plugins: [ + "./one", + "./two", + ], + presets: [{ + plugins: [ + "./three", + "./four", + ], + }, { + plugins: [ + "./five", + "./six", + ], + }, { + passPerPreset: true, + presets: [{ + plugins: [ + "./seven", + "./eight", + ], + }, { + plugins: [ + "./nine", + "./ten", + ], + }], + }], + env: { + development: { + plugins: [ + "./eleven", + "./twelve", + ] + }, + }, +} diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/eight.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/eight.js new file mode 100644 index 0000000000..987b26bb64 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/eight.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("eight"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/eighteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/eighteen.js new file mode 100644 index 0000000000..ed0c5f00e7 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/eighteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("eighteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/eleven.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/eleven.js new file mode 100644 index 0000000000..66a9957782 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/eleven.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("eleven"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/extended.babelrc b/packages/babel-core/test/fixtures/config/complex-plugin-config/extended.babelrc new file mode 100644 index 0000000000..ed3ae0086a --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/extended.babelrc @@ -0,0 +1,26 @@ +{ + plugins: [ + "./thirteen", + "./fourteen", + ], + presets: [{ + plugins: [ + "./fifteen", + "./sixteen", + ], + }], + env: { + development: { + plugins: [ + "./seventeen", + "./eighteen", + ], + presets: [{ + plugins: [ + "./nineteen", + "./twenty", + ], + }], + }, + }, +} diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/fifteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/fifteen.js new file mode 100644 index 0000000000..e3c0024da5 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/fifteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("fifteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/five.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/five.js new file mode 100644 index 0000000000..3cb015a3f2 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/five.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("five"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/four.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/four.js new file mode 100644 index 0000000000..961972ec23 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/four.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("four"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/fourteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/fourteen.js new file mode 100644 index 0000000000..eda36db413 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/fourteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("fourteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/nine.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/nine.js new file mode 100644 index 0000000000..6c935e8b93 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/nine.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("nine"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/nineteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/nineteen.js new file mode 100644 index 0000000000..17576788b3 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/nineteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("nineteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/one.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/one.js new file mode 100644 index 0000000000..32afabdd8b --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/one.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("one"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/plugin.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/plugin.js new file mode 100644 index 0000000000..f654b24fd6 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/plugin.js @@ -0,0 +1,13 @@ +module.exports = function(str) { + return function(babel) { + return { + visitor: { + Program: function(path) { + path.pushContainer("body", [ + babel.types.expressionStatement(babel.types.identifier(str)), + ]); + }, + }, + }; + }; +}; diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/seven.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/seven.js new file mode 100644 index 0000000000..4d246a2707 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/seven.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("seven"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/seventeen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/seventeen.js new file mode 100644 index 0000000000..1bff23c3bc --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/seventeen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("seventeen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/six.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/six.js new file mode 100644 index 0000000000..4340644019 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/six.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("six"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/sixteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/sixteen.js new file mode 100644 index 0000000000..a7b53cd7e1 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/sixteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("sixteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/ten.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/ten.js new file mode 100644 index 0000000000..e269896fca --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/ten.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("ten"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/thirteen.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/thirteen.js new file mode 100644 index 0000000000..a56ca8c8d4 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/thirteen.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("thirteen"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/three.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/three.js new file mode 100644 index 0000000000..e12a9cd4a9 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/three.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("three"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/twelve.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/twelve.js new file mode 100644 index 0000000000..d7a943e503 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/twelve.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("twelve"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/twenty.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/twenty.js new file mode 100644 index 0000000000..fdac9485be --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/twenty.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("twenty"); diff --git a/packages/babel-core/test/fixtures/config/complex-plugin-config/two.js b/packages/babel-core/test/fixtures/config/complex-plugin-config/two.js new file mode 100644 index 0000000000..623df57600 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/complex-plugin-config/two.js @@ -0,0 +1 @@ +module.exports = require("./plugin")("two");