Henry Zhu 253918c30f Fix buildExportAll to account for commonjs/amd/systemjs (#3591)
* Fix buildExportAll to account for commonjs/amd

If the re-exported module was generated with Babel and it is a commonjs or amd module and so is the current module, this will result in an attempt to redefine the __esModule property, which throws a runtime error.

* Add test: don't overwrite __esModule on re-export

(Failing.)

* fixup tests

* Add fix for systemjs
2016-07-23 13:21:07 -04:00

38 lines
779 B
JavaScript

var assert = require("assert");
var babel = require("babel-core");
var vm = require("vm");
test("Re-export doesn't overwrite __esModule flag", function () {
var code = 'export * from "./dep";';
var depStub = {
__esModule: false,
};
var context = {
module: {
exports: {}
},
require: function (id) {
if (id === "./dep") return depStub;
return require(id);
},
};
context.exports = context.module.exports;
code = babel.transform(code, {
"plugins": [
[require("../"), {loose: true}],
],
"ast": false,
}).code;
vm.runInNewContext(code, context);
// exports.__esModule shouldn't be overwritten.
assert.equal(
context.exports.__esModule,
true,
"Expected exports.__esModule === true"
);
});