77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import colors from 'colors/safe';
|
|
|
|
const shouldSilenceWarnings = (...messages) =>
|
|
[/Warning: componentWillReceiveProps has been renamed/].some(msgRegex =>
|
|
messages.some(msg => msgRegex.test(msg))
|
|
);
|
|
|
|
global.window.app = {
|
|
mcApiUrl: 'http://localhost:8080',
|
|
};
|
|
|
|
// setup file
|
|
const logOrThrow = (log, method, messages) => {
|
|
const warning = `console.${method} calls not allowed in tests`;
|
|
if (process.env.CI) {
|
|
if (shouldSilenceWarnings(messages)) {
|
|
return;
|
|
}
|
|
|
|
log(warning, '\n', ...messages);
|
|
throw new Error(warning);
|
|
} else {
|
|
log(colors.bgYellow.black(' WARN '), warning, '\n', ...messages);
|
|
}
|
|
};
|
|
|
|
// eslint-disable-next-line no-console
|
|
const logMessage = console.log;
|
|
global.console.log = (...messages) => {
|
|
logOrThrow(logMessage, 'log', messages);
|
|
};
|
|
|
|
// eslint-disable-next-line no-console
|
|
const logInfo = console.info;
|
|
global.console.info = (...messages) => {
|
|
logOrThrow(logInfo, 'info', messages);
|
|
};
|
|
|
|
// eslint-disable-next-line no-console
|
|
const logWarning = console.warn;
|
|
global.console.warn = (...messages) => {
|
|
logOrThrow(logWarning, 'warn', messages);
|
|
};
|
|
|
|
// eslint-disable-next-line no-console
|
|
const logError = console.error;
|
|
global.console.error = (...messages) => {
|
|
logOrThrow(logError, 'error', messages);
|
|
};
|
|
|
|
// Avoid unhandled promise rejections from going unnoticed
|
|
// https://github.com/facebook/jest/issues/3251#issuecomment-299183885
|
|
// In Node v7 unhandled promise rejections will terminate the process
|
|
if (!process.env.LISTENING_TO_UNHANDLED_REJECTION) {
|
|
process.on('unhandledRejection', reason => {
|
|
logMessage('UNHANDLED REJECTION', reason);
|
|
|
|
// We create a file in case there is an unhandled rejection
|
|
// We later check for the existence of this file to fail CI
|
|
if (process.env.CI && !process.env.HAS_CREATED_UNHANDLED_REJECTION_FILE) {
|
|
const rootPath = process.cwd();
|
|
fs.writeFileSync(
|
|
path.join(
|
|
rootPath,
|
|
'./fail-tests-because-there-was-an-unhandled-rejection.lock'
|
|
),
|
|
''
|
|
);
|
|
process.env.HAS_CREATED_UNHANDLED_REJECTION_FILE = true;
|
|
}
|
|
});
|
|
// Avoid memory leak by adding too many listeners
|
|
process.env.LISTENING_TO_UNHANDLED_REJECTION = true;
|
|
}
|