diff --git a/lib/path.js b/lib/path.js index bc9667c7b88cc3..cb37a289105dc7 100644 --- a/lib/path.js +++ b/lib/path.js @@ -1007,8 +1007,8 @@ const win32 = { isAbsolute = true; code = path.charCodeAt(1); + rootEnd = 1; if (code === 47/*/*/ || code === 92/*\*/) { - rootEnd = 1; // Matched double path separator at beginning var j = 2; var last = j; diff --git a/test/parallel/test-path-parse-format.js b/test/parallel/test-path-parse-format.js index 21bebfedee85b2..5c2684bc6d103b 100644 --- a/test/parallel/test-path-parse-format.js +++ b/test/parallel/test-path-parse-format.js @@ -20,6 +20,10 @@ const winPaths = [ '\\\\?\\UNC\\server\\share' ]; +const winSpecialCaseParseTests = [ + ['/foo/bar', {root: '/'}] +]; + const winSpecialCaseFormatTests = [ [{dir: 'some\\dir'}, 'some\\dir\\'], [{base: 'index.html'}, 'index.html'], @@ -86,6 +90,7 @@ const errors = [ checkParseFormat(path.win32, winPaths); checkParseFormat(path.posix, unixPaths); +checkSpecialCaseParseFormat(path.win32, winSpecialCaseParseTests); checkErrors(path.win32); checkErrors(path.posix); checkFormat(path.win32, winSpecialCaseFormatTests); @@ -184,6 +189,17 @@ function checkParseFormat(path, paths) { }); } +function checkSpecialCaseParseFormat(path, testCases) { + testCases.forEach(function(testCase) { + const element = testCase[0]; + const expect = testCase[1]; + const output = path.parse(element); + Object.keys(expect).forEach(function(key) { + assert.strictEqual(output[key], expect[key]); + }); + }); +} + function checkFormat(path, testCases) { testCases.forEach(function(testCase) { assert.strictEqual(path.format(testCase[0]), testCase[1]);