commit 5b47942a860843865db4df94d55157bb411f56cc
parent 4bd7dfd61c38876b7e0050ca5001ab3100dffaba
Author: cfillion <cfillion@users.noreply.github.com>
Date: Wed, 6 Sep 2017 21:38:59 -0400
path: fix appending an absolute path to any empty path resulting in an relative path
Diffstat:
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/path.cpp b/src/path.cpp
@@ -97,6 +97,9 @@ void Path::append(const string &input, const bool traversal)
void Path::append(const Path &o)
{
+ if(m_parts.empty() && o.absolute())
+ m_absolute = true;
+
m_parts.insert(m_parts.end(), o.m_parts.begin(), o.m_parts.end());
}
diff --git a/test/path.cpp b/test/path.cpp
@@ -151,13 +151,20 @@ TEST_CASE("absolute path (unix)", M) {
CHECK_FALSE(Path("a/b").absolute());
const Path a("/usr/bin/zsh");
-
REQUIRE(a.size() == 3);
REQUIRE(a.absolute());
REQUIRE(a[0] == "usr");
REQUIRE(a.join() == "/usr/bin/zsh");
}
+TEST_CASE("append absolute path (unix)", M) {
+ Path path;
+ path += Path("/a/b");
+
+ CHECK(path == Path("/a/b"));
+ REQUIRE(path.absolute());
+}
+
TEST_CASE("compare absolute to relative path (unix)", M) {
REQUIRE(Path("/a/b") != Path("a/b"));
}