Add test for file-relative addon resolution

Plugins & presets.
This commit is contained in:
Jesse McCarthy 2015-12-22 13:44:07 -05:00
parent fd3aad5811
commit 77f5d30fb1
6 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1 @@
!node_modules/

View File

@ -0,0 +1 @@
var x = "before";

View File

@ -0,0 +1 @@
var x = "AFTER";

View File

@ -0,0 +1,9 @@
module.exports = function () {
return {
visitor: {
StringLiteral: function (path) {
path.node.value = "after";
},
},
};
};

View File

@ -0,0 +1,14 @@
module.exports = {
plugins: [plugin],
};
function plugin () {
return {
visitor: {
StringLiteral: function (path) {
path.node.value =
path.node.value.toUpperCase();
},
},
};
}

View File

@ -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
});
});