Run App in vm

This commit is contained in:
Chris van Marle 2017-01-25 22:42:04 +01:00
parent 123392c549
commit cd8bee1371

View File

@ -2,10 +2,42 @@ var fs = require("fs");
var path = require("path");
var chai = require("chai");
var expect = chai.expect;
var vm = require("vm");
before(function() {
var basedir = path.join(__dirname, "../../..");
var fileName = "js/app.js";
var filePath = path.join(basedir, fileName);
var code = fs.readFileSync(filePath);
this.sandbox = {
module: {},
__dirname: path.dirname(filePath),
global: {},
console: {
log: function() { /*console.log("console.log(", arguments, ")");*/ }
},
process: {
on: function() { /*console.log("process.on called with: ", arguments);*/ },
env: {}
}
};
this.sandbox.require = function(filename) {
// This modifies the global slightly,
// but supplies vm with essential code
return require(filename);
};
vm.runInNewContext(code, this.sandbox, fileName);
});
after(function() {
//console.log(global);
});
describe("'global.root_path' set in js/app.js", function() {
var appMM = require("../../../js/app.js")
var expectedSubPaths = [
"modules",
"serveronly",
@ -18,8 +50,16 @@ describe("'global.root_path' set in js/app.js", function() {
expectedSubPaths.forEach(subpath => {
it(`contains a file/folder "${subpath}"`, function() {
expect(fs.existsSync(path.join(global.root_path, subpath))).to.equal(true);
expect(fs.existsSync(path.join(this.sandbox.global.root_path, subpath))).to.equal(true);
});
});
it("should not modify global.root_path for testing", function() {
expect(global.root_path).to.equal(undefined);
});
it("should not modify global.version for testing", function() {
expect(global.version).to.equal(undefined);
});
});