--- /dev/null
+'use strict';
+
+const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require
+
+const nop = () => { /* */ };
+
+class StubLogger {
+ constructor(verbose = false) {
+ const logger = (process.env.VERBOSE_TESTS || verbose) ? console : StubLogger._nullLogger;
+ Object.keys(StubLogger._nullLogger).forEach((level) => {
+ this[level] = logger[level]; // eslint-disable-line security/detect-object-injection
+ });
+ }
+
+ static get _nullLogger() {
+ return {
+ error: nop,
+ warn: nop,
+ info: nop,
+ log: nop,
+ debug: nop,
+ };
+ }
+
+ static get _levels() {
+ return Object.keys(StubLogger._nullLogger);
+ }
+
+ _reset() {
+ Object.keys(StubLogger._nullLogger).forEach((level) => sinon.spy(this, level));
+ }
+}
+
+module.exports = StubLogger;