util: handle escaped forward slashes correctly

Fixes #6835
This commit is contained in:
Tom Gallacher 2014-01-10 19:53:47 +00:00 committed by Fedor Indutny
parent 5106cadffb
commit 38a07a929b
2 changed files with 17 additions and 1 deletions

View File

@ -413,7 +413,8 @@ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
} else {
name = name.replace(/'/g, "\\'")
.replace(/\\"/g, '"')
.replace(/(^"|"$)/g, "'");
.replace(/(^"|"$)/g, "'")
.replace(/\\\\/g, '\\');
name = ctx.stylize(name, 'string');
}
}

View File

@ -110,6 +110,21 @@ assert.doesNotThrow(function() {
var x = { inspect: util.inspect };
assert.ok(util.inspect(x).indexOf('inspect') != -1);
// util.inspect should not display the escaped value of a key.
var w = {
'\\': 1,
'\\\\': 2,
'\\\\\\': 3,
'\\\\\\\\': 4,
}
var y = ['a', 'b', 'c'];
y['\\\\\\'] = 'd';
assert.ok(util.inspect(w),
'{ \'\\\': 1, \'\\\\\': 2, \'\\\\\\\': 3, \'\\\\\\\\\': 4 }');
assert.ok(util.inspect(y), '[ \'a\', \'b\', \'c\', \'\\\\\\\': \'d\' ]');
// util.inspect.styles and util.inspect.colors
function test_color_style(style, input, implicit) {
var color_name = util.inspect.styles[style];