diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/.gitignore b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/.gitignore new file mode 100644 index 0000000000..ddf342489b --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/.gitignore @@ -0,0 +1 @@ +!node_modules/ diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/actual.js b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/actual.js new file mode 100644 index 0000000000..9936933515 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/actual.js @@ -0,0 +1 @@ +var x = "before"; diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/expected.js b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/expected.js new file mode 100644 index 0000000000..c981404e30 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/expected.js @@ -0,0 +1 @@ +var x = "AFTER"; diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/plugin.js b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/plugin.js new file mode 100644 index 0000000000..1ead11c44d --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/plugin.js @@ -0,0 +1,9 @@ +module.exports = function () { + return { + visitor: { + StringLiteral: function (path) { + path.node.value = "after"; + }, + }, + }; +}; diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js new file mode 100644 index 0000000000..a1af16e41f --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js @@ -0,0 +1,14 @@ +module.exports = { + plugins: [plugin], +}; + +function plugin () { + return { + visitor: { + StringLiteral: function (path) { + path.node.value = + path.node.value.toUpperCase(); + }, + }, + }; +} diff --git a/packages/babel-core/test/resolution.js b/packages/babel-core/test/resolution.js new file mode 100644 index 0000000000..79294a95fe --- /dev/null +++ b/packages/babel-core/test/resolution.js @@ -0,0 +1,47 @@ +var assert = require("assert"); +var async = require("async"); +var babel = require("../lib/api/node"); +var fs = require("fs"); +var path = require("path"); + +// Test that plugins & presets are resolved relative to `filename`. +suite("addon resolution", function () { + test("addon resolution", function (done) { + var fixtures = {}; + var paths = {}; + + paths.fixtures = path.join( + __dirname, + "fixtures", + "resolution", + "resolve-addons-relative-to-file" + ); + + async.each( + ["actual", "expected"], + function (key, mapDone) { + paths[key] = path.join(paths.fixtures, key + ".js"); + fs.readFile(paths[key], { encoding: "utf8" }, function (err, data) { + if (err) return mapDone(err); + fixtures[key] = data.trim(); + mapDone(); + }); + }, + fixturesReady + ); + + function fixturesReady (err) { + if (err) return done(err); + + var actual = babel.transform(fixtures.actual, { + filename: paths.actual, + plugins: ["addons/plugin"], + presets: ["addons/preset"], + }).code; + + assert.equal(actual, fixtures.expected); + done(); + } + // fixturesReady + }); +});