diff --git a/src/vs/base/common/glob.ts b/src/vs/base/common/glob.ts index 6ec8e429211b..8f22a2441099 100644 --- a/src/vs/base/common/glob.ts +++ b/src/vs/base/common/glob.ts @@ -343,7 +343,7 @@ function wrapRelativePattern(parsedPattern: ParsedStringPattern, arg2: string | return null; } - return parsedPattern(paths.normalize(arg2.pathToRelative(arg2.base, path)), basename); + return parsedPattern(arg2.pathToRelative(arg2.base, path), basename); }; } diff --git a/src/vs/base/test/node/glob.test.ts b/src/vs/base/test/node/glob.test.ts index 564399dc659a..1b46a798de87 100644 --- a/src/vs/base/test/node/glob.test.ts +++ b/src/vs/base/test/node/glob.test.ts @@ -999,4 +999,16 @@ suite('Glob', () => { test('pattern with "base" does not explode - #36081', function () { assert.ok(glob.match({ 'base': true }, 'base')); }); + + test('relative pattern - #57475', function () { + if (isWindows) { + let p: glob.IRelativePattern = { base: 'C:\\DNXConsoleApp\\foo', pattern: 'styles/style.css', pathToRelative: (from, to) => path.relative(from, to) }; + assertGlobMatch(p, 'C:\\DNXConsoleApp\\foo\\styles\\style.css'); + assertNoGlobMatch(p, 'C:\\DNXConsoleApp\\foo\\Program.cs'); + } else { + let p: glob.IRelativePattern = { base: '/DNXConsoleApp/foo', pattern: 'styles/style.css', pathToRelative: (from, to) => path.relative(from, to) }; + assertGlobMatch(p, '/DNXConsoleApp/foo/styles/style.css'); + assertNoGlobMatch(p, '/DNXConsoleApp/foo/Program.cs'); + } + }); }); \ No newline at end of file