From 213699e067c80f6157c3b2f0884862825631ca23 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 30 May 2016 12:33:17 +0200 Subject: [PATCH] debt - align path.normalize and node-path#normalize wrt to dot-segements --- src/vs/base/common/paths.ts | 2 +- src/vs/base/test/common/paths.test.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vs/base/common/paths.ts b/src/vs/base/common/paths.ts index c030274ebbe..d2255769955 100644 --- a/src/vs/base/common/paths.ts +++ b/src/vs/base/common/paths.ts @@ -63,7 +63,7 @@ export function normalize(path: string, toOSPath?: boolean): string { let parts = path.split(/[\\\/]/); for (let i = 0, len = parts.length; i < len; i++) { - if (parts[i] === '.' && !!parts[i + 1]) { + if (parts[i] === '.' && (parts[i + 1] || parts[i - 1])) { parts.splice(i, 1); i -= 1; } else if (parts[i] === '..' && !!parts[i - 1]) { diff --git a/src/vs/base/test/common/paths.test.ts b/src/vs/base/test/common/paths.test.ts index 87c4755939c..dfb26b0e950 100644 --- a/src/vs/base/test/common/paths.test.ts +++ b/src/vs/base/test/common/paths.test.ts @@ -68,12 +68,15 @@ suite('Paths', () => { test('normalize', () => { assert.equal(paths.normalize('.'), '.'); - assert.equal(paths.normalize('./'), './'); assert.equal(paths.normalize('/'), '/'); + assert.equal(paths.normalize('./'), './'); + assert.equal(paths.normalize('./ff/./'), 'ff/'); + assert.equal(paths.normalize('foo/./'), 'foo/'); // assert.equal(paths.normalize('//'), '/'); assert.equal(paths.normalize('./foo'), 'foo'); assert.equal(paths.normalize('/foo'), '/foo'); assert.equal(paths.normalize('foo/'), 'foo/'); + // assert.equal(paths.normalize('foo//'), 'foo/'); assert.equal(paths.normalize('foo\\bar'), 'foo/bar'); assert.equal(paths.normalize('foo/./bar'), 'foo/bar'); assert.equal(paths.normalize('foo/xxx/./bar'), 'foo/xxx/bar'); @@ -82,6 +85,8 @@ suite('Paths', () => { assert.equal(paths.normalize('foo/xxx/./..'), 'foo'); assert.equal(paths.normalize('foo/xxx/..'), 'foo'); assert.equal(paths.normalize('foo/xxx/../bar'), 'foo/bar'); + assert.equal(paths.normalize('foo/../../bar'), '../bar'); + assert.equal(paths.normalize('foo/far/../../bar'), 'bar'); // return input if already normal assert.equal(paths.normalize('/foo/bar.test'), '/foo/bar.test'); -- GitLab