[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master b64436f 19/33: Improve modify_directory() doc
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master b64436f 19/33: Improve modify_directory() documentation and tests |
Date: |
Mon, 3 May 2021 08:15:53 -0400 (EDT) |
branch: master
commit b64436f93bec50c38234be04923cd2b035d7ff7f
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Improve modify_directory() documentation and tests
---
path_utility.cpp | 19 +++++++++++--------
path_utility_test.cpp | 18 ++++++++++++++++++
2 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/path_utility.cpp b/path_utility.cpp
index acc9fb3..a954def 100644
--- a/path_utility.cpp
+++ b/path_utility.cpp
@@ -36,17 +36,20 @@
/// Change '/path/to/file' to '/some/other/place/file'.
///
-/// Motivation: It was anomalous that boost did this:
+/// Motivation: lmi must provide this function because the standard
+/// library doesn't.
+///
+/// Given
/// fs::path file("/bin/sh";
/// fs::path dir ("/usr/bin");
-/// dir / file; // boost returned "/usr/bin/bin/sh"
-/// even on posix, where
-/// true == file.is_complete() // boost
-/// It is at least weird that std::filesystem does this:
-/// dir / file; // C++20 std::filesystem returns "/bin/sh"
-/// BOOST !! Rewrite the next two lines:
+/// what should 'dir / file' yield? Oddly, boost returned:
+/// /usr/bin/bin/sh
/// even on posix, where
-/// true == file.is_absolute() // std::filesystem
+/// true == file.is_complete() // old boost function name
+/// It is odd, in a different way, that std::filesystem returns:
+/// /bin/sh
+/// both on posix (where true == file.is_absolute()), and also on
+/// msw (where, without a 'root-name', it isn't "absolute").
///
/// Arguably the arguments should be given in the opposite order:
/// modify_directory("sh", "/usr/bin") // present order
diff --git a/path_utility_test.cpp b/path_utility_test.cpp
index 4d48606..beb1d80 100644
--- a/path_utility_test.cpp
+++ b/path_utility_test.cpp
@@ -58,6 +58,24 @@ void test_modify_directory()
// Motivating case:
LMI_TEST_EQUAL("/usr/bin/sh" , modify_directory("/bin/sh",
"/usr/bin").string());
+ // First argument: "/bin/sh"
+
+ fs::path old_path ("/bin/sh");
+ fs::path newdir ("/usr/bin");
+ fs::path expected ("/usr/bin/sh");
+
+ fs::path f = fs::absolute(old_path);
+ fs::path d = fs::absolute(newdir);
+ fs::path x = fs::absolute(expected);
+
+ // this result is expected...
+ LMI_TEST_EQUAL(x, modify_directory(f, d).string());
+ // ...but these are surprising:
+ LMI_TEST_EQUAL(f, (d / f).string());
+ LMI_TEST_EQUAL(old_path, (newdir / old_path).string());
+
+ // First argument: just "sh"
+
fs::path const file("sh");
fs::path const dir0("/bin");
fs::path const dir1("/usr/bin/");
- [lmi-commits] [lmi] master c98c00d 10/33: Say "basename" rather than "leaf", (continued)
- [lmi-commits] [lmi] master c98c00d 10/33: Say "basename" rather than "leaf", Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 1a68606 23/33: Conserve 80-character maximum width, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master e33e392 22/33: Correct and reformat the modify_directory() documentation, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master fd44389 03/33: Include appropriate headers, and say why they're included, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master fdc0f5a 07/33: Deboostify even more, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 41274a8 14/33: Improve documentation, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master e4d2f31 08/33: Rename a function, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 2038991 15/33: Improve concinnity, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 9235f33 16/33: Avoid implicit conversion to fs::path, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 4ab2c4e 20/33: Further improve modify_directory() documentation, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master b64436f 19/33: Improve modify_directory() documentation and tests,
Greg Chicares <=
- [lmi-commits] [lmi] master 0e3d61a 21/33: Rework modify_directory() documentation; augment unit test, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 40096c3 24/33: Conserve 70-character comment width, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 4473403 29/33: Improve output spacing, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master bc805ad 28/33: Augment path-validation unit test, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 6fd9f69 32/33: Remove the last occurrence of /name.check/, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 0c2d6b4 30/33: Revert "Revert "Trap exceptions from filesystem library"", Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master bfa1255 27/33: Enable some tests that were conditionally suppressed, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 8538df8 31/33: Improve unit tests and their documentation, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 6ddb0fa 25/33: Rework a 'wine' workaround again, Greg Chicares, 2021/05/03
- [lmi-commits] [lmi] master 0296ac4 33/33: Deboostify still more, Greg Chicares, 2021/05/03