From 539bf1d7b7070eae0d0da067741d5bedf41750a8 Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 17 Jan 2013 16:02:41 -0800 Subject: [PATCH] console: Support formatting options in trace() Fix #4589 --- lib/console.js | 4 ++-- test/simple/test-console.js | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/console.js b/lib/console.js index d37114b..51d5a36 100644 --- a/lib/console.js +++ b/lib/console.js @@ -85,12 +85,12 @@ Console.prototype.timeEnd = function(label) { }; -Console.prototype.trace = function(label) { +Console.prototype.trace = function() { // TODO probably can to do this better with V8's debug object once that is // exposed. var err = new Error; err.name = 'Trace'; - err.message = label || ''; + err.message = util.format.apply(this, arguments); Error.captureStackTrace(err, arguments.callee); this.error(err.stack); }; diff --git a/test/simple/test-console.js b/test/simple/test-console.js index d07ca50..bef8772 100644 --- a/test/simple/test-console.js +++ b/test/simple/test-console.js @@ -43,13 +43,17 @@ console.log('foo', 'bar'); console.log('%s %s', 'foo', 'bar', 'hop'); console.log({slashes: '\\\\'}); +console._stderr = process.stdout; +console.trace('This is a %j %d', { formatted: 'trace' }, 10, 'foo'); + global.process.stdout.write = stdout_write; + assert.equal('foo\n', strings.shift()); assert.equal('foo bar\n', strings.shift()); assert.equal('foo bar hop\n', strings.shift()); assert.equal("{ slashes: '\\\\\\\\' }\n", strings.shift()); - -process.stderr.write('hello world'); +assert.equal('Trace: This is a {"formatted":"trace"} 10 foo', + strings.shift().split('\n').shift()); assert.throws(function () { console.timeEnd('no such label'); -- 2.7.4