Revert "[libc++] Generate symlinks in static_test_env on the fly"
authorSergej Jaskiewicz <jaskiewiczs@icloud.com>
Tue, 5 May 2020 22:19:48 +0000 (01:19 +0300)
committerSergej Jaskiewicz <jaskiewiczs@icloud.com>
Tue, 5 May 2020 22:21:53 +0000 (01:21 +0300)
This reverts commit 645ad5badbabdeca31de5c98ea8135c5a6e7d710.

This commit did not incorporate all the changes intended.

24 files changed:
libcxx/test/std/input.output/filesystems/Inputs/static_test_env/bad_symlink [new symlink]
libcxx/test/std/input.output/filesystems/Inputs/static_test_env/dir1/dir2/symlink_to_dir3 [new symlink]
libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_dir [new symlink]
libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_empty_file [new symlink]
libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp
libcxx/test/support/filesystem_test_helper.h

diff --git a/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/bad_symlink b/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/bad_symlink
new file mode 120000 (symlink)
index 0000000..76646be
--- /dev/null
@@ -0,0 +1 @@
+dne
\ No newline at end of file
diff --git a/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/dir1/dir2/symlink_to_dir3 b/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/dir1/dir2/symlink_to_dir3
new file mode 120000 (symlink)
index 0000000..3979139
--- /dev/null
@@ -0,0 +1 @@
+dir3
\ No newline at end of file
diff --git a/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_dir b/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_dir
new file mode 120000 (symlink)
index 0000000..df490f8
--- /dev/null
@@ -0,0 +1 @@
+dir1
\ No newline at end of file
diff --git a/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_empty_file b/libcxx/test/std/input.output/filesystems/Inputs/static_test_env/symlink_to_empty_file
new file mode 120000 (symlink)
index 0000000..b79b689
--- /dev/null
@@ -0,0 +1 @@
+empty_file
\ No newline at end of file
index 6731bd8..850be12 100644 (file)
@@ -121,8 +121,6 @@ TEST_CASE(path_ctor_calls_refresh) {
 TEST_CASE(path_ctor_dne) {
   using namespace fs;
 
-  static_test_env static_env;
-
   {
     std::error_code ec = GetTestEC();
     directory_entry ent(StaticEnv::DNE, ec);
index 287ea5c..a06c4a6 100644 (file)
@@ -60,7 +60,6 @@ TEST_CASE(test_constructor_signatures)
 
 TEST_CASE(test_construction_from_bad_path)
 {
-    static_test_env static_env;
     std::error_code ec;
     directory_options opts = directory_options::none;
     const directory_iterator endIt;
@@ -170,7 +169,6 @@ TEST_CASE(test_open_on_empty_directory_equals_end)
 
 TEST_CASE(test_open_on_directory_succeeds)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     std::set<path> dir_contents(std::begin(StaticEnv::DirIterationList),
                                 std::end(  StaticEnv::DirIterationList));
@@ -192,7 +190,6 @@ TEST_CASE(test_open_on_directory_succeeds)
 
 TEST_CASE(test_open_on_file_fails)
 {
-    static_test_env static_env;
     const path testFile = StaticEnv::File;
     const directory_iterator endIt{};
     {
@@ -228,7 +225,6 @@ TEST_CASE(test_open_on_dot_dir)
 
 TEST_CASE(test_open_on_symlink)
 {
-    static_test_env static_env;
     const path symlinkToDir = StaticEnv::SymlinkToDir;
     std::set<path> dir_contents;
     for (path const& p : StaticEnv::DirIterationList) {
index dc3046c..1c76505 100644 (file)
@@ -43,7 +43,6 @@ TEST_CASE(test_increment_signatures)
 
 TEST_CASE(test_prefix_increment)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     const std::set<path> dir_contents(std::begin(StaticEnv::RecDirIterationList),
                                       std::end(  StaticEnv::RecDirIterationList));
@@ -67,7 +66,6 @@ TEST_CASE(test_prefix_increment)
 
 TEST_CASE(test_postfix_increment)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     const std::set<path> dir_contents(std::begin(StaticEnv::RecDirIterationList),
                                       std::end(  StaticEnv::RecDirIterationList));
@@ -91,7 +89,6 @@ TEST_CASE(test_postfix_increment)
 
 TEST_CASE(test_increment_method)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     const std::set<path> dir_contents(std::begin(StaticEnv::RecDirIterationList),
                                       std::end(  StaticEnv::RecDirIterationList));
@@ -116,7 +113,6 @@ TEST_CASE(test_increment_method)
 
 TEST_CASE(test_follow_symlinks)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     auto const& IterList = StaticEnv::RecDirFollowSymlinksIterationList;
 
index e08d7c0..24eaf84 100644 (file)
@@ -43,7 +43,6 @@ TEST_CASE(test_function_signatures)
 
 TEST_CASE(test_ranged_for_loop)
 {
-    static_test_env static_env;
     const path testDir = StaticEnv::Dir;
     std::set<path> dir_contents(std::begin(StaticEnv::RecDirIterationList),
                                 std::end(  StaticEnv::RecDirIterationList));
index 7644d86..de2fa54 100644 (file)
@@ -47,7 +47,6 @@ TEST_CASE(signature_test)
 // Each scope tests one of the cases.
 TEST_CASE(test_canonical)
 {
-    static_test_env static_env;
     CWDGuard guard;
     // has_root_name() && has_root_directory()
     const path Root = StaticEnv::Root;
index df9e6b1..6f27a4c 100644 (file)
@@ -55,7 +55,6 @@ TEST_CASE(file_size_non_empty)
 
 TEST_CASE(symlink_test_case)
 {
-    static_test_env static_env;
     const path p = StaticEnv::File;
     const path p2 = StaticEnv::SymlinkToFile;
     TEST_CHECK(file_size(p) == file_size(p2));
@@ -63,7 +62,6 @@ TEST_CASE(symlink_test_case)
 
 TEST_CASE(file_size_error_cases)
 {
-  static_test_env static_env;
   struct {
     path p;
     std::errc expected_err;
index 05a313a..35dd5d4 100644 (file)
@@ -69,7 +69,6 @@ TEST_CASE(test_exist_not_found)
 
 TEST_CASE(static_env_test)
 {
-    static_test_env static_env;
     TEST_CHECK(is_directory(StaticEnv::Dir));
     TEST_CHECK(is_directory(StaticEnv::SymlinkToDir));
     TEST_CHECK(!is_directory(StaticEnv::File));
index c92c66c..e339324 100644 (file)
@@ -45,7 +45,6 @@ TEST_CASE(test_exist_not_found)
 
 TEST_CASE(test_is_empty_directory)
 {
-    static_test_env static_env;
     TEST_CHECK(!is_empty(StaticEnv::Dir));
     TEST_CHECK(!is_empty(StaticEnv::SymlinkToDir));
 }
index 603a1da..75ab605 100644 (file)
@@ -63,7 +63,6 @@ TEST_CASE(is_symlink_status_test)
 
 TEST_CASE(static_env_test)
 {
-    static_test_env static_env;
     struct TestCase {
         path p;
         bool expect;
index 4335c7a..3ef4c53 100644 (file)
@@ -350,7 +350,6 @@ TEST_CASE(signature_test)
 
 TEST_CASE(read_last_write_time_static_env_test)
 {
-    static_test_env static_env;
     using C = file_time_type::clock;
     file_time_type min = file_time_type::min();
     {
index 21529d3..2a8d829 100644 (file)
@@ -54,21 +54,18 @@ TEST_CASE(test_signature_3) {
 }
 
 TEST_CASE(test_signature_4) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir);
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir));
 }
 
 TEST_CASE(test_signature_5) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir / "dir2/.");
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir / "dir2"));
 }
 
 TEST_CASE(test_signature_6) {
-  static_test_env static_env;
   // FIXME? If the trailing separator occurs in a part of the path that exists,
   // it is omitted. Otherwise it is added to the end of the result.
   fs::path p(StaticEnv::SymlinkToDir / "dir2/./");
@@ -77,28 +74,24 @@ TEST_CASE(test_signature_6) {
 }
 
 TEST_CASE(test_signature_7) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir / "dir2/DNE/./");
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir / "dir2/DNE/"));
 }
 
 TEST_CASE(test_signature_8) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir / "dir2");
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir2));
 }
 
 TEST_CASE(test_signature_9) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir / "dir2/../dir2/DNE/..");
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir2 / ""));
 }
 
 TEST_CASE(test_signature_10) {
-  static_test_env static_env;
   fs::path p(StaticEnv::SymlinkToDir / "dir2/dir3/../DNE/DNE2");
   const fs::path output = fs::weakly_canonical(p);
   TEST_CHECK(output == std::string(StaticEnv::Dir2 / "DNE/DNE2"));
index 51b02bb..4a0936b 100644 (file)
@@ -80,8 +80,6 @@ TEST_CASE(test_error_reporting)
 
 TEST_CASE(basic_space_test)
 {
-    static_test_env static_env;
-
     // All the test cases should reside on the same filesystem and therefore
     // should have the same expected result. Compute this expected result
     // one and check that it looks semi-sane.
index dfbd6bd..60c99ee 100644 (file)
@@ -103,7 +103,6 @@ TEST_CASE(test_status_cannot_resolve)
 
 TEST_CASE(status_file_types_test)
 {
-    static_test_env static_env;
     scoped_test_env env;
     struct TestCase {
       path p;
index 77f870f..350076f 100644 (file)
@@ -110,7 +110,6 @@ TEST_CASE(test_symlink_status_cannot_resolve)
 
 TEST_CASE(symlink_status_file_types_test)
 {
-    static_test_env static_env;
     scoped_test_env env;
     struct TestCase {
       path p;
index 86bd4c3..8553317 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "filesystem_include.h"
 
-#include <unistd.h> // for ftruncate, symlink, unlink
+#include <unistd.h> // for ftruncate
 
 #include <cassert>
 #include <cstdio> // for printf
@@ -105,13 +105,6 @@ static const fs::path RecDirFollowSymlinksIterationList[] = {
     makePath("dir1/dir2/symlink_to_dir3/file5"),
 };
 
-static const std::pair<fs::path, fs::path> SymlinkList[] = {
-    {"dne",        makePath("bad_symlink")},
-    {"dir1",       makePath("symlink_to_dir")},
-    {"empty_file", makePath("symlink_to_empty_file")},
-    {"dir3",       makePath("dir1/dir2/symlink_to_dir3")}
-};
-
 } // namespace StaticEnv
 
 namespace random_utils {
@@ -128,39 +121,6 @@ inline char random_hex_char() {
 
 } // namespace random_utils
 
-/// A RAII object that prepares the 'static_test_env' directory for usage in
-/// tests.
-///
-/// Namely, it creates some symlinks that tests expect to be present.
-/// We do it here instead of storing them in the repo to be
-/// cross-toolchain-friendly. The primary use case for this are Windows-hosted
-/// cross-toolchains.
-/// Windows doesn't really have a concept of symlinks. So, when the monorepo
-/// is cloned, those symlinks turn to ordinary text files.
-/// If we cross-compiled libc++ for some symlink-friendly system
-/// (e. g. Linux) and ran tests on the target system, some tests would fail.
-/// Instead, we create symlinks here, when a test is already being executed.
-class static_test_env {
-public:
-  static_test_env() {
-    for (const auto *link = std::begin(StaticEnv::SymlinkList);
-         link != std::end(StaticEnv::SymlinkList);
-         ++link) {
-      int ret = ::symlink(link->first.c_str(), link->second.c_str());
-      assert(ret == 0);
-    }
-  }
-
-  ~static_test_env() {
-    for (const auto *link = std::begin(StaticEnv::SymlinkList);
-         link != std::end(StaticEnv::SymlinkList);
-         ++link) {
-      int ret = ::unlink(link->second.c_str());
-      assert(ret == 0);
-    }
-  }
-};
-
 struct scoped_test_env
 {
     scoped_test_env() : test_root(random_path()) {