Skip to content

Commit

Permalink
refactor(client): create log module into utils (#1953)
Browse files Browse the repository at this point in the history
  • Loading branch information
hiroppy authored and evilebottnawi committed Jun 3, 2019
1 parent 1581adc commit 6973e4c
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 41 deletions.
3 changes: 2 additions & 1 deletion .eslintignore
@@ -1,4 +1,5 @@
client
/client
!/test/client
coverage
client-src/live/web_modules/
node_modules
3 changes: 2 additions & 1 deletion .prettierignore
@@ -1,4 +1,5 @@
client
/client
!/test/client
coverage
client-src/live/web_modules/
node_modules
Expand Down
39 changes: 2 additions & 37 deletions client-src/default/index.js
Expand Up @@ -3,9 +3,9 @@
/* global __resourceQuery WorkerGlobalScope self */
/* eslint prefer-destructuring: off */
const stripAnsi = require('strip-ansi');
const log = require('loglevel').getLogger('webpack-dev-server');
const socket = require('./socket');
const overlay = require('./overlay');
const { log, setLogLevel } = require('./utils/log');
const sendMessage = require('./utils/sendMessage');
const reloadApp = require('./utils/reloadApp');
const createSocketUrl = require('./utils/createSocketUrl');
Expand Down Expand Up @@ -34,21 +34,6 @@ if (typeof window !== 'undefined') {
options.hotReload = qs.indexOf('hotreload=false') === -1;
}

const INFO = 'info';
const WARN = 'warn';
const ERROR = 'error';
const DEBUG = 'debug';
const TRACE = 'trace';
const SILENT = 'silent';
// deprecated
// TODO: remove these at major released
// https://github.com/webpack/webpack-dev-server/pull/1825
const WARNING = 'warning';
const NONE = 'none';

// Set the default log level
log.setDefaultLevel(INFO);

const onSocketMsg = {
hot() {
options.hot = true;
Expand Down Expand Up @@ -81,27 +66,7 @@ const onSocketMsg = {
if (hotCtx.keys().indexOf('./log') !== -1) {
hotCtx('./log').setLogLevel(level);
}
switch (level) {
case INFO:
case WARN:
case DEBUG:
case TRACE:
case ERROR:
log.setLevel(level);
break;
// deprecated
case WARNING:
// loglevel's warning name is different from webpack's
log.setLevel('warn');
break;
// deprecated
case NONE:
case SILENT:
log.disableAll();
break;
default:
log.error(`[WDS] Unknown clientLogLevel '${level}'`);
}
setLogLevel(level);
},
overlay(value) {
if (typeof document !== 'undefined') {
Expand Down
47 changes: 47 additions & 0 deletions client-src/default/utils/log.js
@@ -0,0 +1,47 @@
'use strict';

const log = require('loglevel').getLogger('webpack-dev-server');

const INFO = 'info';
const WARN = 'warn';
const ERROR = 'error';
const DEBUG = 'debug';
const TRACE = 'trace';
const SILENT = 'silent';
// deprecated
// TODO: remove these at major released
// https://github.com/webpack/webpack-dev-server/pull/1825
const WARNING = 'warning';
const NONE = 'none';

// Set the default log level
log.setDefaultLevel(INFO);

function setLogLevel(level) {
switch (level) {
case INFO:
case WARN:
case ERROR:
case DEBUG:
case TRACE:
log.setLevel(level);
break;
// deprecated
case WARNING:
// loglevel's warning name is different from webpack's
log.setLevel('warn');
break;
// deprecated
case NONE:
case SILENT:
log.disableAll();
break;
default:
log.error(`[WDS] Unknown clientLogLevel '${level}'`);
}
}

module.exports = {
log,
setLogLevel,
};
2 changes: 1 addition & 1 deletion client-src/default/utils/reloadApp.js
Expand Up @@ -2,7 +2,7 @@

/* global WorkerGlobalScope self */

const log = require('loglevel').getLogger('webpack-dev-server');
const { log } = require('./log');

function reloadApp(
{ hotReload, hot, liveReload },
Expand Down
26 changes: 26 additions & 0 deletions test/client/default/utils/__snapshots__/log.test.js.snap
@@ -0,0 +1,26 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`log should output exception log when the level is unknown 1`] = `"[WDS] Unknown clientLogLevel 'foo'"`;

exports[`log should set log level via setLogLevel 1`] = `
Array [
Array [
"info",
],
Array [
"warn",
],
Array [
"error",
],
Array [
"debug",
],
Array [
"trace",
],
Array [
"warn",
],
]
`;
7 changes: 6 additions & 1 deletion test/client/default/utils/createSocketUrl.test.js
Expand Up @@ -16,7 +16,12 @@ describe('createSocketUrl', () => {
];

samples.forEach((url) => {
jest.doMock('../../../../client-src/default/utils/getCurrentScriptSource.js', () => () => url);
jest.doMock(
'../../../../client-src/default/utils/getCurrentScriptSource.js',
() => () => url
);

// eslint-disable-next-line global-require
const createSocketUrl = require('../../../../client-src/default/utils/createSocketUrl');

test(`should return the url when __resourceQuery is ${url}`, () => {
Expand Down
65 changes: 65 additions & 0 deletions test/client/default/utils/log.test.js
@@ -0,0 +1,65 @@
'use strict';

describe('log', () => {
let logMock;
let setLogLevel;

beforeEach(() => {
jest.mock('loglevel');
// eslint-disable-next-line global-require
logMock = require('loglevel');
logMock.getLogger.mockImplementation(() => {
return {
error: jest.fn(),
setLevel: jest.fn(),
setDefaultLevel: jest.fn(),
disableAll: jest.fn(),
};
});

// eslint-disable-next-line global-require
setLogLevel = require('../../../../client-src/default/utils/log')
.setLogLevel;
});

afterEach(() => {
jest.resetAllMocks();
jest.resetModules();
});

test('should set info as the default level', () => {
const setDefaultLevel =
logMock.getLogger.mock.results[0].value.setDefaultLevel;

expect(setDefaultLevel).toBeCalled();
expect(setDefaultLevel.mock.calls[0][0]).toEqual('info');
});

test('should set log level via setLogLevel', () => {
['info', 'warn', 'error', 'debug', 'trace', 'warning'].forEach((level) => {
setLogLevel(level);
});

expect(
logMock.getLogger.mock.results[0].value.setLevel.mock.calls
).toMatchSnapshot();
});

test('should set none and silent via setLogLevel', () => {
['none', 'silent'].forEach((level) => {
setLogLevel(level);
});

expect(
logMock.getLogger.mock.results[0].value.disableAll.mock.results
).toHaveLength(2);
});

test('should output exception log when the level is unknown', () => {
setLogLevel('foo');

expect(
logMock.getLogger.mock.results[0].value.error.mock.calls[0][0]
).toMatchSnapshot();
});
});
1 change: 1 addition & 0 deletions test/client/default/utils/reloadApp.test.js
Expand Up @@ -18,6 +18,7 @@ describe('reloadApp', () => {
log.getLogger.mockImplementation(() => {
return {
info: jest.fn(),
setDefaultLevel: jest.fn(),
};
});

Expand Down

0 comments on commit 6973e4c

Please sign in to comment.