console: timeEnd() with no label emits warning

When timeEnd() provided with label that doesn't exists
it emits warning in the console, so developer get know about it.

PR-URL: https://github.com/nodejs/node/pull/5901
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
This commit is contained in:
Eugene Obrezkov 2016-04-21 19:02:27 +03:00 коммит произвёл James M Snell
Родитель 6c1e5ad3ab
Коммит 1c84579031
2 изменённых файлов: 10 добавлений и 5 удалений

Просмотреть файл

@ -67,9 +67,10 @@ Console.prototype.time = function(label) {
Console.prototype.timeEnd = function(label) {
var time = this._times.get(label);
const time = this._times.get(label);
if (!time) {
throw new Error(`No such label: ${label}`);
process.emitWarning(`No such label '${label}' for console.timeEnd()`);
return;
}
const duration = process.hrtime(time);
const ms = duration[0] * 1000 + duration[1] / 1e6;

Просмотреть файл

@ -1,6 +1,6 @@
'use strict';
require('../common');
var assert = require('assert');
const common = require('../common');
const assert = require('assert');
assert.ok(process.stdout.writable);
assert.ok(process.stderr.writable);
@ -8,7 +8,11 @@ assert.ok(process.stderr.writable);
assert.equal('number', typeof process.stdout.fd);
assert.equal('number', typeof process.stderr.fd);
assert.throws(function() {
assert.doesNotThrow(function() {
process.once('warning', common.mustCall((warning) => {
assert(/no such label/.test(warning.message));
}));
console.timeEnd('no such label');
});