]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/filesystem/test/deprecated_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / filesystem / test / deprecated_test.cpp
index 4c223e7ac0a52457fc6e53260e28a910fe910edf..afc1494d976967b10b28ce02926f5a5dd78897cd 100644 (file)
 #define BOOST_FILESYSTEM_DEPRECATED
 
 #include <boost/filesystem.hpp>
-
-#include <boost/config.hpp>
-# if defined( BOOST_NO_STD_WSTRING )
-#   error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support
-# endif
+#include <boost/filesystem/string_file.hpp>
 
 #include <boost/core/lightweight_test.hpp>
 #include <boost/detail/lightweight_main.hpp>
@@ -28,24 +24,23 @@ using boost::filesystem::path;
 
 #define PATH_CHECK(a, b) check(a, b, __LINE__)
 
-namespace
-{
-  std::string platform(BOOST_PLATFORM);
+namespace {
+std::string platform(BOOST_PLATFORM);
 
-  void check(const fs::path & source,
-              const std::string & expected, int line)
-  {
-    if (source.generic_string()== expected) return;
+void check(const fs::path& source, const std::string& expected, int line)
+{
+    if (source.generic_string() == expected)
+        return;
 
     ++::boost::detail::test_errors();
 
     std::cout << '(' << line << ") source.string(): \"" << source.string()
               << "\" != expected: \"" << expected
               << "\"" << std::endl;
-  }
+}
 
-  void normalize_test()
-  {
+void normalize_test()
+{
     PATH_CHECK(path("").normalize(), "");
     PATH_CHECK(path("/").normalize(), "/");
     PATH_CHECK(path("//").normalize(), "//");
@@ -62,15 +57,15 @@ namespace
     PATH_CHECK(path("/../..").normalize(), "/../..");
     PATH_CHECK(path("../foo").normalize(), "../foo");
     PATH_CHECK(path("foo/..").normalize(), ".");
-    PATH_CHECK(path("foo/../").normalize(), "./.");
-    PATH_CHECK((path("foo") / "..").normalize() , ".");
+    PATH_CHECK(path("foo/../").normalize(), ".");
+    PATH_CHECK((path("foo") / "..").normalize(), ".");
     PATH_CHECK(path("foo/...").normalize(), "foo/...");
     PATH_CHECK(path("foo/.../").normalize(), "foo/.../.");
     PATH_CHECK(path("foo/..bar").normalize(), "foo/..bar");
     PATH_CHECK(path("../f").normalize(), "../f");
     PATH_CHECK(path("/../f").normalize(), "/../f");
     PATH_CHECK(path("f/..").normalize(), ".");
-    PATH_CHECK((path("f") / "..").normalize() , ".");
+    PATH_CHECK((path("f") / "..").normalize(), ".");
     PATH_CHECK(path("foo/../..").normalize(), "..");
     PATH_CHECK(path("foo/../../").normalize(), "../.");
     PATH_CHECK(path("foo/../../..").normalize(), "../..");
@@ -80,7 +75,7 @@ namespace
     PATH_CHECK(path("foo/bar/..").normalize(), "foo");
     PATH_CHECK(path("foo/bar/../").normalize(), "foo/.");
     PATH_CHECK(path("foo/bar/../..").normalize(), ".");
-    PATH_CHECK(path("foo/bar/../../").normalize(), "./.");
+    PATH_CHECK(path("foo/bar/../../").normalize(), ".");
     PATH_CHECK(path("foo/bar/../blah").normalize(), "foo/blah");
     PATH_CHECK(path("f/../b").normalize(), "b");
     PATH_CHECK(path("f/b/..").normalize(), "f");
@@ -114,59 +109,59 @@ namespace
 
     if (platform == "Windows")
     {
-      PATH_CHECK(path("c:..").normalize(), "c:..");
-      PATH_CHECK(path("c:foo/..").normalize(), "c:");
-
-      PATH_CHECK(path("c:foo/../").normalize(), "c:.");
-
-      PATH_CHECK(path("c:/foo/..").normalize(), "c:/");
-      PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
-      PATH_CHECK(path("c:/..").normalize(), "c:/..");
-      PATH_CHECK(path("c:/../").normalize(), "c:/../.");
-      PATH_CHECK(path("c:/../..").normalize(), "c:/../..");
-      PATH_CHECK(path("c:/../../").normalize(), "c:/../../.");
-      PATH_CHECK(path("c:/../foo").normalize(), "c:/../foo");
-      PATH_CHECK(path("c:/../foo/").normalize(), "c:/../foo/.");
-      PATH_CHECK(path("c:/../../foo").normalize(), "c:/../../foo");
-      PATH_CHECK(path("c:/../../foo/").normalize(), "c:/../../foo/.");
-      PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
+        PATH_CHECK(path("c:..").normalize(), "c:..");
+        PATH_CHECK(path("c:foo/..").normalize(), "c:");
+
+        PATH_CHECK(path("c:foo/../").normalize(), "c:.");
+
+        PATH_CHECK(path("c:/foo/..").normalize(), "c:/");
+        PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
+        PATH_CHECK(path("c:/..").normalize(), "c:/..");
+        PATH_CHECK(path("c:/../").normalize(), "c:/../.");
+        PATH_CHECK(path("c:/../..").normalize(), "c:/../..");
+        PATH_CHECK(path("c:/../../").normalize(), "c:/../../.");
+        PATH_CHECK(path("c:/../foo").normalize(), "c:/../foo");
+        PATH_CHECK(path("c:/../foo/").normalize(), "c:/../foo/.");
+        PATH_CHECK(path("c:/../../foo").normalize(), "c:/../../foo");
+        PATH_CHECK(path("c:/../../foo/").normalize(), "c:/../../foo/.");
+        PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
     }
     else // POSIX
     {
-      PATH_CHECK(path("c:..").normalize(), "c:..");
-      PATH_CHECK(path("c:foo/..").normalize(), ".");
-      PATH_CHECK(path("c:foo/../").normalize(), "./.");
-      PATH_CHECK(path("c:/foo/..").normalize(), "c:");
-      PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
-      PATH_CHECK(path("c:/..").normalize(), ".");
-      PATH_CHECK(path("c:/../").normalize(), "./.");
-      PATH_CHECK(path("c:/../..").normalize(), "..");
-      PATH_CHECK(path("c:/../../").normalize(), "../.");
-      PATH_CHECK(path("c:/../foo").normalize(), "foo");
-      PATH_CHECK(path("c:/../foo/").normalize(), "foo/.");
-      PATH_CHECK(path("c:/../../foo").normalize(), "../foo");
-      PATH_CHECK(path("c:/../../foo/").normalize(), "../foo/.");
-      PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
+        PATH_CHECK(path("c:..").normalize(), "c:..");
+        PATH_CHECK(path("c:foo/..").normalize(), ".");
+        PATH_CHECK(path("c:foo/../").normalize(), ".");
+        PATH_CHECK(path("c:/foo/..").normalize(), "c:");
+        PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
+        PATH_CHECK(path("c:/..").normalize(), ".");
+        PATH_CHECK(path("c:/../").normalize(), ".");
+        PATH_CHECK(path("c:/../..").normalize(), "..");
+        PATH_CHECK(path("c:/../../").normalize(), "../.");
+        PATH_CHECK(path("c:/../foo").normalize(), "foo");
+        PATH_CHECK(path("c:/../foo/").normalize(), "foo/.");
+        PATH_CHECK(path("c:/../../foo").normalize(), "../foo");
+        PATH_CHECK(path("c:/../../foo/").normalize(), "../foo/.");
+        PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
     }
-  }
+}
 
-  //  misc_test ------------------------------------------------------------------------//
+//  misc_test ------------------------------------------------------------------------//
 
-  void misc_test()
-  {
+void misc_test()
+{
     fs::path p;
 
-    fs::initial_path<fs::path>();
-    fs::initial_path<fs::wpath>();
+    fs::initial_path< fs::path >();
+    fs::initial_path< fs::wpath >();
 
     p.file_string();
     p.directory_string();
-  }
+}
 
-  //  path_rename_test -----------------------------------------------------------------//
+//  path_rename_test -----------------------------------------------------------------//
 
-  void path_rename_test()
-  {
+void path_rename_test()
+{
     fs::path p("foo/bar/blah");
 
     BOOST_TEST_EQ(path("foo/bar/blah").remove_leaf(), "foo/bar");
@@ -178,74 +173,96 @@ namespace
 
     if (platform == "Windows")
     {
-      BOOST_TEST_EQ(path("foo\\bar\\blah").remove_leaf(), "foo\\bar");
-      p = "foo\\bar\\blah";
-      BOOST_TEST_EQ(p.branch_path(), "foo\\bar");
+        BOOST_TEST_EQ(path("foo\\bar\\blah").remove_leaf(), "foo\\bar");
+        p = "foo\\bar\\blah";
+        BOOST_TEST_EQ(p.branch_path(), "foo\\bar");
     }
-  }
+}
 
-} // unnamed namespace
+//  string_file_tests  ---------------------------------------------------------------//
 
+void string_file_tests(const fs::path& temp_dir)
+{
+    std::cout << "string_file_tests..." << std::endl;
+    std::string contents("0123456789");
+    fs::path p(temp_dir / "string_file");
+    save_string_file(p, contents);
+    save_string_file(p, contents);
+    BOOST_TEST_EQ(file_size(p), 10u);
+    std::string round_trip;
+    load_string_file(p, round_trip);
+    BOOST_TEST_EQ(contents, round_trip);
+}
+
+} // unnamed namespace
 
 //--------------------------------------------------------------------------------------//
 
 int cpp_main(int /*argc*/, char* /*argv*/[])
 {
-  // The choice of platform is make at runtime rather than compile-time
-  // so that compile errors for all platforms will be detected even though
-  // only the current platform is runtime tested.
-  platform = (platform == "Win32" || platform == "Win64" || platform == "Cygwin")
-               ? "Windows"
-               : "POSIX";
-  std::cout << "Platform is " << platform << '\n';
+    // The choice of platform is make at runtime rather than compile-time
+    // so that compile errors for all platforms will be detected even though
+    // only the current platform is runtime tested.
+    platform = (platform == "Win32" || platform == "Win64" || platform == "Cygwin") ? "Windows" : "POSIX";
+    std::cout << "Platform is " << platform << '\n';
+
+    BOOST_TEST(fs::initial_path() == fs::current_path());
+
+    //path::default_name_check(fs::no_check);
+
+    fs::directory_entry de("foo/bar");
+
+    de.replace_leaf("", fs::file_status(), fs::file_status());
 
-  BOOST_TEST(fs::initial_path() == fs::current_path());
+    //de.leaf();
+    //de.string();
 
-  //path::default_name_check(fs::no_check);
+    fs::path ng(" no-way, Jose");
+    BOOST_TEST(!fs::is_regular(ng)); // verify deprecated name still works
+    BOOST_TEST(!fs::symbolic_link_exists("nosuchfileordirectory"));
 
-  fs::directory_entry de("foo/bar");
+    const fs::path temp_dir(fs::current_path() / ".." / fs::unique_path("deprecated_test-%%%%-%%%%-%%%%"));
+    std::cout << "temp_dir is " << temp_dir.string() << std::endl;
 
-  de.replace_leaf("", fs::file_status(), fs::file_status());
+    fs::create_directory(temp_dir);
 
-  //de.leaf();
-  //de.string();
+    misc_test();
+    path_rename_test();
+    normalize_test();
+    string_file_tests(temp_dir);
 
-  fs::path ng(" no-way, Jose");
-  BOOST_TEST(!fs::is_regular(ng));  // verify deprecated name still works
-  BOOST_TEST(!fs::symbolic_link_exists("nosuchfileordirectory"));
+    BOOST_TEST(fs::path("foo/bar").generic() == fs::path("foo/bar"));
 
-  misc_test();
-  path_rename_test();
-  normalize_test();
-  BOOST_TEST(fs::path("foo/bar").generic() == fs::path("foo/bar"));
+    // extension() tests ---------------------------------------------------------//
 
-// extension() tests ---------------------------------------------------------//
+    BOOST_TEST(fs::extension("a/b") == "");
+    BOOST_TEST(fs::extension("a/b.txt") == ".txt");
+    BOOST_TEST(fs::extension("a/b.") == ".");
+    BOOST_TEST(fs::extension("a.b.c") == ".c");
+    BOOST_TEST(fs::extension("a.b.c.") == ".");
+    BOOST_TEST(fs::extension("") == "");
+    BOOST_TEST(fs::extension("a/") == "");
 
-  BOOST_TEST(fs::extension("a/b") == "");
-  BOOST_TEST(fs::extension("a/b.txt") == ".txt");
-  BOOST_TEST(fs::extension("a/b.") == ".");
-  BOOST_TEST(fs::extension("a.b.c") == ".c");
-  BOOST_TEST(fs::extension("a.b.c.") == ".");
-  BOOST_TEST(fs::extension("") == "");
-  BOOST_TEST(fs::extension("a/") == "");
+    // basename() tests ----------------------------------------------------------//
 
-// basename() tests ----------------------------------------------------------//
+    BOOST_TEST(fs::basename("b") == "b");
+    BOOST_TEST(fs::basename("a/b.txt") == "b");
+    BOOST_TEST(fs::basename("a/b.") == "b");
+    BOOST_TEST(fs::basename("a.b.c") == "a.b");
+    BOOST_TEST(fs::basename("a.b.c.") == "a.b.c");
+    BOOST_TEST(fs::basename("") == "");
 
-  BOOST_TEST(fs::basename("b") == "b");
-  BOOST_TEST(fs::basename("a/b.txt") == "b");
-  BOOST_TEST(fs::basename("a/b.") == "b");
-  BOOST_TEST(fs::basename("a.b.c") == "a.b");
-  BOOST_TEST(fs::basename("a.b.c.") == "a.b.c");
-  BOOST_TEST(fs::basename("") == "");
+    // change_extension tests ---------------------------------------------------//
 
-// change_extension tests ---------------------------------------------------//
+    BOOST_TEST(fs::change_extension("a.txt", ".tex").string() == "a.tex");
+    BOOST_TEST(fs::change_extension("a.", ".tex").string() == "a.tex");
+    BOOST_TEST(fs::change_extension("a", ".txt").string() == "a.txt");
+    BOOST_TEST(fs::change_extension("a.b.txt", ".tex").string() == "a.b.tex");
+    // see the rationale in html docs for explanation why this works
+    BOOST_TEST(fs::change_extension("", ".png").string() == ".png");
 
-  BOOST_TEST(fs::change_extension("a.txt", ".tex").string() == "a.tex");
-  BOOST_TEST(fs::change_extension("a.", ".tex").string() == "a.tex");
-  BOOST_TEST(fs::change_extension("a", ".txt").string() == "a.txt");
-  BOOST_TEST(fs::change_extension("a.b.txt", ".tex").string() == "a.b.tex");
-  // see the rationale in html docs for explanation why this works
-  BOOST_TEST(fs::change_extension("", ".png").string() == ".png");
+    std::cout << "post-test removal of " << temp_dir << std::endl;
+    BOOST_TEST(fs::remove_all(temp_dir) != 0);
 
-  return ::boost::report_errors();
+    return ::boost::report_errors();
 }