[libcxx-commits] [PATCH] D89532: [libcxx] [test] Fix path.modifiers/make_preferred for windows

Martin Storsjö via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Fri Oct 16 03:33:24 PDT 2020


mstorsjo created this revision.
mstorsjo added a reviewer: libc++.
Herald added a project: libc++.
Herald added 1 blocking reviewer(s): libc++.
mstorsjo requested review of this revision.

Use p.string() instead of p.native() for comparing with the expected value.

On posix file systems, the make_preferred operation is an identity operation, but on windows it isn't. Add a separate field in the test case table with the expected return value on windows.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D89532

Files:
  libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp


Index: libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp
===================================================================
--- libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp
+++ libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp
@@ -26,28 +26,35 @@
 
 struct MakePreferredTestcase {
   const char* value;
+  const char* preferred_win;
 };
 
 const MakePreferredTestcase TestCases[] =
   {
-      {""}
-    , {"hello_world"}
-    , {"/"}
-    , {"/foo/bar/baz/"}
-    , {"\\"}
-    , {"\\foo\\bar\\baz\\"}
-    , {"\\foo\\/bar\\/baz\\"}
+      {"", nullptr}
+    , {"hello_world", nullptr}
+    , {"/", "\\"}
+    , {"/foo/bar/baz/", "\\foo\\bar\\baz\\"}
+    , {"\\", nullptr}
+    , {"\\foo\\bar\\baz\\", nullptr}
+    , {"\\foo\\/bar\\/baz\\", "\\foo\\\\bar\\\\baz\\"}
   };
 
 int main(int, char**)
 {
   // This operation is an identity operation on linux.
+  // On windows, compare with preferred_win, if set.
   using namespace fs;
   for (auto const & TC : TestCases) {
     path p(TC.value);
     assert(p == TC.value);
     path& Ref = (p.make_preferred());
-    assert(p.native() == TC.value);
+#ifdef _WIN32
+    std::string s(TC.preferred_win ? TC.preferred_win : TC.value);
+#else
+    std::string s(TC.value);
+#endif
+    assert(p.string() == s);
     assert(&Ref == &p);
   }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89532.298580.patch
Type: text/x-patch
Size: 1457 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201016/6d34dec1/attachment-0001.bin>


More information about the libcxx-commits mailing list