diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 5a7daf2..2f6f611 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -609,13 +609,21 @@ { auto orig = path.toNativeString(); if (!path.absolute) return orig; - auto ret = path.relativeTo(base).toNativeString(); - return ret.length < orig.length ? ret : orig; + version (Windows) + { + // avoid relative paths starting with `..\`: https://github.com/dlang/dub/issues/2143 + if (!path.startsWith(base)) return orig; + } + auto rel = path.relativeTo(base).toNativeString(); + return rel.length < orig.length ? rel : orig; } unittest { assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/foo")) == NativePath("bar/baz").toNativeString()); - assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/foo/baz")) == NativePath("../bar/baz").toNativeString()); + version (Windows) + assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/foo/baz")) == NativePath("/foo/bar/baz").toNativeString()); + else + assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/foo/baz")) == NativePath("../bar/baz").toNativeString()); assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/bar/")) == NativePath("/foo/bar/baz").toNativeString()); assert(shrinkPath(NativePath("/foo/bar/baz"), NativePath("/bar/baz")) == NativePath("/foo/bar/baz").toNativeString()); } diff --git a/source/dub/version_.d b/source/dub/version_.d index 3586094..066380a 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.26.0"; +enum dubVersion = "v1.26.1-beta.1";