1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
var vm = require("vm"),
fs = require("fs"),
expect = require("expect.js"),
browserify = require("browserify");
/**
* Executes the source in a context that pretends to be a browser
* @param {!String} src
*/
function runInFakeBrowserContext(src, filename) {
var context = {
describe: describe,
it: it,
before: before,
after: after,
beforeEach: beforeEach,
afterEach: afterEach,
setTimeout: setTimeout,
clearTimeout: clearTimeout,
setInterval: setInterval,
clearInterval: clearInterval,
parseFloat: parseFloat,
parseInt: parseInt,
encodeURIComponent: function () {},
decodeURIComponent: function () {},
document: {},
console: console,
testEnv: "browserify"
};
context.window = context;
vm.runInNewContext(src, context, filename);
}
describe("rewire bundled with browserify", function () {
before(require("./testHelpers/createFakePackageJSON.js"));
after(require("./testHelpers/removeFakePackageJSON.js"));
it("should run all sharedTestCases without exception", function () {
var b = browserify({
debug: true
}),
middleware = require("rewire").bundlers.browserify,
browserOutput = __dirname + "/bundlers/browserify/bundle.js",
browserBundle,
vmBundle;
b.use(middleware);
b.addEntry(__dirname + "/testModules/sharedTestCases.js");
vmBundle = b.bundle();
browserBundle = vmBundle;
// Setup for mocha
browserBundle = "function enableTests() { " + browserBundle + " }";
// Output for browser-testing
fs.writeFileSync(browserOutput, browserBundle, "utf8");
// This should throw no exception.
runInFakeBrowserContext(vmBundle, browserOutput);
});
});
|