mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-28 04:02:12 +00:00
do logger mocking in logger.js, remove sandbox stuff from unit tests
This commit is contained in:
parent
06389e35f9
commit
2b147bb98b
73
js/logger.js
73
js/logger.js
@ -9,11 +9,13 @@
|
|||||||
*/
|
*/
|
||||||
(function (root, factory) {
|
(function (root, factory) {
|
||||||
if (typeof exports === "object") {
|
if (typeof exports === "object") {
|
||||||
// add timestamps in front of log messages
|
if (process.env.JEST_WORKER_ID === undefined) {
|
||||||
require("console-stamp")(console, {
|
// add timestamps in front of log messages
|
||||||
pattern: "yyyy-mm-dd HH:MM:ss.l",
|
require("console-stamp")(console, {
|
||||||
include: ["debug", "log", "info", "warn", "error"]
|
pattern: "yyyy-mm-dd HH:MM:ss.l",
|
||||||
});
|
include: ["debug", "log", "info", "warn", "error"]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Node, CommonJS-like
|
// Node, CommonJS-like
|
||||||
module.exports = factory(root.config);
|
module.exports = factory(root.config);
|
||||||
@ -22,29 +24,46 @@
|
|||||||
root.Log = factory(root.config);
|
root.Log = factory(root.config);
|
||||||
}
|
}
|
||||||
})(this, function (config) {
|
})(this, function (config) {
|
||||||
const logLevel = {
|
let logLevel;
|
||||||
debug: Function.prototype.bind.call(console.debug, console),
|
if (process.env.JEST_WORKER_ID === undefined) {
|
||||||
log: Function.prototype.bind.call(console.log, console),
|
logLevel = {
|
||||||
info: Function.prototype.bind.call(console.info, console),
|
debug: Function.prototype.bind.call(console.debug, console),
|
||||||
warn: Function.prototype.bind.call(console.warn, console),
|
log: Function.prototype.bind.call(console.log, console),
|
||||||
error: Function.prototype.bind.call(console.error, console),
|
info: Function.prototype.bind.call(console.info, console),
|
||||||
group: Function.prototype.bind.call(console.group, console),
|
warn: Function.prototype.bind.call(console.warn, console),
|
||||||
groupCollapsed: Function.prototype.bind.call(console.groupCollapsed, console),
|
error: Function.prototype.bind.call(console.error, console),
|
||||||
groupEnd: Function.prototype.bind.call(console.groupEnd, console),
|
group: Function.prototype.bind.call(console.group, console),
|
||||||
time: Function.prototype.bind.call(console.time, console),
|
groupCollapsed: Function.prototype.bind.call(console.groupCollapsed, console),
|
||||||
timeEnd: Function.prototype.bind.call(console.timeEnd, console),
|
groupEnd: Function.prototype.bind.call(console.groupEnd, console),
|
||||||
timeStamp: Function.prototype.bind.call(console.timeStamp, console)
|
time: Function.prototype.bind.call(console.time, console),
|
||||||
};
|
timeEnd: Function.prototype.bind.call(console.timeEnd, console),
|
||||||
|
timeStamp: Function.prototype.bind.call(console.timeStamp, console)
|
||||||
|
};
|
||||||
|
|
||||||
logLevel.setLogLevel = function (newLevel) {
|
logLevel.setLogLevel = function (newLevel) {
|
||||||
if (newLevel) {
|
if (newLevel) {
|
||||||
Object.keys(logLevel).forEach(function (key, index) {
|
Object.keys(logLevel).forEach(function (key, index) {
|
||||||
if (!newLevel.includes(key.toLocaleUpperCase())) {
|
if (!newLevel.includes(key.toLocaleUpperCase())) {
|
||||||
logLevel[key] = function () {};
|
logLevel[key] = function () {};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
logLevel = {
|
||||||
|
debug: function () {},
|
||||||
|
log: function () {},
|
||||||
|
info: function () {},
|
||||||
|
warn: function () {},
|
||||||
|
error: function () {},
|
||||||
|
group: function () {},
|
||||||
|
groupCollapsed: function () {},
|
||||||
|
groupEnd: function () {},
|
||||||
|
time: function () {},
|
||||||
|
timeEnd: function () {},
|
||||||
|
timeStamp: function () {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return logLevel;
|
return logLevel;
|
||||||
});
|
});
|
||||||
|
@ -1,49 +1,14 @@
|
|||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const vm = require("vm");
|
|
||||||
|
|
||||||
const basedir = path.join(__dirname, "../../..");
|
const root_path = path.join(__dirname, "../../..");
|
||||||
|
|
||||||
describe("Default modules set in modules/default/defaultmodules.js", function () {
|
describe("Default modules set in modules/default/defaultmodules.js", function () {
|
||||||
let sandbox = null;
|
|
||||||
|
|
||||||
beforeAll(function () {
|
|
||||||
const fileName = "js/app.js";
|
|
||||||
const filePath = path.join(basedir, fileName);
|
|
||||||
const code = fs.readFileSync(filePath);
|
|
||||||
|
|
||||||
sandbox = {
|
|
||||||
module: {},
|
|
||||||
__dirname: path.dirname(filePath),
|
|
||||||
global: {},
|
|
||||||
process: {
|
|
||||||
on: function () {},
|
|
||||||
env: {}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
sandbox.require = function (filename) {
|
|
||||||
// This modifies the global slightly,
|
|
||||||
// but supplies vm with essential code
|
|
||||||
if (filename === "logger") {
|
|
||||||
return require("../mocks/logger.js");
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
return require(filename);
|
|
||||||
} catch (ignore) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
vm.runInNewContext(code, sandbox, fileName);
|
|
||||||
});
|
|
||||||
|
|
||||||
const expectedDefaultModules = require("../../../modules/default/defaultmodules");
|
const expectedDefaultModules = require("../../../modules/default/defaultmodules");
|
||||||
|
|
||||||
for (const defaultModule of expectedDefaultModules) {
|
for (const defaultModule of expectedDefaultModules) {
|
||||||
it(`contains a folder for modules/default/${defaultModule}"`, function () {
|
it(`contains a folder for modules/default/${defaultModule}"`, function () {
|
||||||
expect(fs.existsSync(path.join(sandbox.global.root_path, "modules/default", defaultModule))).toBe(true);
|
expect(fs.existsSync(path.join(root_path, "modules/default", defaultModule))).toBe(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,49 +1,15 @@
|
|||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const vm = require("vm");
|
|
||||||
|
const root_path = path.join(__dirname, "../../..");
|
||||||
|
const version = require(`${__dirname}/../../../package.json`).version;
|
||||||
|
|
||||||
describe("'global.root_path' set in js/app.js", function () {
|
describe("'global.root_path' set in js/app.js", function () {
|
||||||
let sandbox = null;
|
|
||||||
|
|
||||||
beforeAll(function () {
|
|
||||||
const basedir = path.join(__dirname, "../../..");
|
|
||||||
|
|
||||||
const fileName = "js/app.js";
|
|
||||||
const filePath = path.join(basedir, fileName);
|
|
||||||
const code = fs.readFileSync(filePath);
|
|
||||||
|
|
||||||
sandbox = {
|
|
||||||
module: {},
|
|
||||||
__dirname: path.dirname(filePath),
|
|
||||||
global: {},
|
|
||||||
process: {
|
|
||||||
on: function () {},
|
|
||||||
env: {}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
sandbox.require = function (filename) {
|
|
||||||
// This modifies the global slightly,
|
|
||||||
// but supplies vm with essential code
|
|
||||||
if (filename === "logger") {
|
|
||||||
return require("../mocks/logger.js");
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
return require(filename);
|
|
||||||
} catch (ignore) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
vm.runInNewContext(code, sandbox, fileName);
|
|
||||||
});
|
|
||||||
|
|
||||||
const expectedSubPaths = ["modules", "serveronly", "js", "js/app.js", "js/main.js", "js/electron.js", "config"];
|
const expectedSubPaths = ["modules", "serveronly", "js", "js/app.js", "js/main.js", "js/electron.js", "config"];
|
||||||
|
|
||||||
expectedSubPaths.forEach((subpath) => {
|
expectedSubPaths.forEach((subpath) => {
|
||||||
it(`contains a file/folder "${subpath}"`, function () {
|
it(`contains a file/folder "${subpath}"`, function () {
|
||||||
expect(fs.existsSync(path.join(sandbox.global.root_path, subpath))).toBe(true);
|
expect(fs.existsSync(path.join(root_path, subpath))).toBe(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -57,6 +23,6 @@ describe("'global.root_path' set in js/app.js", function () {
|
|||||||
|
|
||||||
it("should expect the global.version equals package.json file", function () {
|
it("should expect the global.version equals package.json file", function () {
|
||||||
const versionPackage = JSON.parse(fs.readFileSync("package.json", "utf8")).version;
|
const versionPackage = JSON.parse(fs.readFileSync("package.json", "utf8")).version;
|
||||||
expect(sandbox.global.version).toBe(versionPackage);
|
expect(version).toBe(versionPackage);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
(function (root, factory) {
|
|
||||||
// Node, CommonJS-like
|
|
||||||
module.exports = factory(root.config);
|
|
||||||
})(this, function (config) {
|
|
||||||
let logLevel = {
|
|
||||||
debug: function () {},
|
|
||||||
log: function () {},
|
|
||||||
info: function () {},
|
|
||||||
warn: function () {},
|
|
||||||
error: function () {},
|
|
||||||
group: function () {},
|
|
||||||
groupCollapsed: function () {},
|
|
||||||
groupEnd: function () {},
|
|
||||||
time: function () {},
|
|
||||||
timeEnd: function () {},
|
|
||||||
timeStamp: function () {}
|
|
||||||
};
|
|
||||||
|
|
||||||
return logLevel;
|
|
||||||
});
|
|
Loading…
x
Reference in New Issue
Block a user