]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/filesystem/test/convenience_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / filesystem / test / convenience_test.cpp
index ba71370cfb009e6e3cd80cd0489d53364ad76649..67de427812744ea876e6100678e0d08883afff77 100644 (file)
 
 //  See deprecated_test for tests of deprecated features
 #ifndef BOOST_FILESYSTEM_NO_DEPRECATED
-#  define BOOST_FILESYSTEM_NO_DEPRECATED
+#define BOOST_FILESYSTEM_NO_DEPRECATED
 #endif
 #ifndef BOOST_SYSTEM_NO_DEPRECATED
-#  define BOOST_SYSTEM_NO_DEPRECATED
+#define BOOST_SYSTEM_NO_DEPRECATED
 #endif
 
+#include <boost/filesystem/path.hpp>
 #include <boost/filesystem/convenience.hpp>
 #include <boost/filesystem/directory.hpp>
 #include <boost/filesystem/exception.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/core/lightweight_test.hpp>
 #include <boost/detail/lightweight_main.hpp>
 #include <boost/bind/bind.hpp>
@@ -37,143 +33,146 @@ namespace fs = boost::filesystem;
 using fs::path;
 namespace sys = boost::system;
 
-namespace
+namespace {
+template< typename F >
+bool throws_fs_error(F func)
 {
-  template< typename F >
-    bool throws_fs_error(F func)
-  {
-    try { func(); }
-
-    catch (const fs::filesystem_error &)
+    try
     {
-      return true;
+        func();
     }
-    return false;
-  }
 
-    void create_recursive_iterator(const fs::path & ph)
+    catch (const fs::filesystem_error&)
     {
-      fs::recursive_directory_iterator it(ph);
+        return true;
     }
+    return false;
 }
 
+void create_recursive_iterator(const fs::path& ph)
+{
+    fs::recursive_directory_iterator it(ph);
+}
+} // namespace
+
 //  ------------------------------------------------------------------------------------//
 
 int cpp_main(int, char*[])
 {
 
-//  create_directories() tests  --------------------------------------------------------//
+    //  create_directories() tests  --------------------------------------------------------//
 
-  BOOST_TEST(!fs::create_directories("/")); // should be harmless
+    BOOST_TEST(!fs::create_directories("/")); // should be harmless
 
-  path unique_dir = fs::unique_path();  // unique name in case tests running in parallel
-  path unique_yy = unique_dir / "yy";
-  path unique_yya = unique_dir / "yya";
-  path unique_yy_zz = unique_dir / "yy" / "zz";
+    path unique_dir = fs::unique_path(); // unique name in case tests running in parallel
+    path unique_yy = unique_dir / "yy";
+    path unique_yya = unique_dir / "yya";
+    path unique_yy_zz = unique_dir / "yy" / "zz";
 
-  fs::remove_all(unique_dir);  // make sure slate is blank
-  BOOST_TEST(!fs::exists(unique_dir)); // reality check
+    fs::remove_all(unique_dir);          // make sure slate is blank
+    BOOST_TEST(!fs::exists(unique_dir)); // reality check
 
-  BOOST_TEST(fs::create_directories(unique_dir));
-  BOOST_TEST(fs::exists(unique_dir));
-  BOOST_TEST(fs::is_directory(unique_dir));
+    BOOST_TEST(fs::create_directories(unique_dir));
+    BOOST_TEST(fs::exists(unique_dir));
+    BOOST_TEST(fs::is_directory(unique_dir));
 
-  BOOST_TEST(fs::create_directories(unique_yy_zz));
-  BOOST_TEST(fs::exists(unique_dir));
-  BOOST_TEST(fs::exists(unique_yy));
-  BOOST_TEST(fs::exists(unique_yy_zz));
-  BOOST_TEST(fs::is_directory(unique_dir));
-  BOOST_TEST(fs::is_directory(unique_yy));
-  BOOST_TEST(fs::is_directory(unique_yy_zz));
+    BOOST_TEST(fs::create_directories(unique_yy_zz));
+    BOOST_TEST(fs::exists(unique_dir));
+    BOOST_TEST(fs::exists(unique_yy));
+    BOOST_TEST(fs::exists(unique_yy_zz));
+    BOOST_TEST(fs::is_directory(unique_dir));
+    BOOST_TEST(fs::is_directory(unique_yy));
+    BOOST_TEST(fs::is_directory(unique_yy_zz));
 
-  path is_a_file(unique_dir / "uu");
-  {
-    std::ofstream f(is_a_file.string().c_str());
-    BOOST_TEST(!!f);
-  }
-  BOOST_TEST(throws_fs_error(
-    boost::bind(fs::create_directories, is_a_file)));
-  BOOST_TEST(throws_fs_error(
-    boost::bind(fs::create_directories, is_a_file / "aa")));
+    path is_a_file(unique_dir / "uu");
+    {
+        std::ofstream f(is_a_file.string().c_str());
+        BOOST_TEST(!!f);
+    }
+    BOOST_TEST(throws_fs_error(
+        boost::bind(fs::create_directories, is_a_file)));
+    BOOST_TEST(throws_fs_error(
+        boost::bind(fs::create_directories, is_a_file / "aa")));
 
-// recursive_directory_iterator tests ----------------------------------------//
+    // recursive_directory_iterator tests ----------------------------------------//
 
-  sys::error_code ec;
-  fs::recursive_directory_iterator it("/no-such-path", ec);
-  BOOST_TEST(ec);
+    sys::error_code ec;
+    fs::recursive_directory_iterator it("/no-such-path", ec);
+    BOOST_TEST(ec);
 
-  BOOST_TEST(throws_fs_error(
-    boost::bind(create_recursive_iterator, "/no-such-path")));
+    BOOST_TEST(throws_fs_error(
+        boost::bind(create_recursive_iterator, "/no-such-path")));
 
-  fs::remove(unique_dir / "uu");
+    fs::remove(unique_dir / "uu");
 
 #ifdef BOOST_WINDOWS_API
-  // These tests depends on ordering of directory entries, and that's guaranteed
-  // on Windows but not necessarily on other operating systems
-  {
-    std::ofstream f(unique_yya.string().c_str());
-    BOOST_TEST(!!f);
-  }
-
-  for (it = fs::recursive_directory_iterator(unique_dir);
-        it != fs::recursive_directory_iterator(); ++it)
-    { std::cout << it->path() << '\n'; }
-
-  it = fs::recursive_directory_iterator(unique_dir);
-  BOOST_TEST(it->path() == unique_yy);
-  BOOST_TEST(it.depth() == 0);
-  ++it;
-  BOOST_TEST(it->path() == unique_yy_zz);
-  BOOST_TEST(it.depth() == 1);
-  it.pop();
-  BOOST_TEST(it->path() == unique_yya);
-  BOOST_TEST(it.depth() == 0);
-  it++;
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  it = fs::recursive_directory_iterator(unique_dir);
-  BOOST_TEST(it->path() == unique_yy);
-  it.disable_recursion_pending();
-  ++it;
-  BOOST_TEST(it->path() == unique_yya);
-  ++it;
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  fs::remove(unique_yya);
+    // These tests depends on ordering of directory entries, and that's guaranteed
+    // on Windows but not necessarily on other operating systems
+    {
+        std::ofstream f(unique_yya.string().c_str());
+        BOOST_TEST(!!f);
+    }
+
+    for (it = fs::recursive_directory_iterator(unique_dir);
+         it != fs::recursive_directory_iterator(); ++it)
+    {
+        std::cout << it->path() << '\n';
+    }
+
+    it = fs::recursive_directory_iterator(unique_dir);
+    BOOST_TEST(it->path() == unique_yy);
+    BOOST_TEST(it.depth() == 0);
+    ++it;
+    BOOST_TEST(it->path() == unique_yy_zz);
+    BOOST_TEST(it.depth() == 1);
+    it.pop();
+    BOOST_TEST(it->path() == unique_yya);
+    BOOST_TEST(it.depth() == 0);
+    it++;
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    it = fs::recursive_directory_iterator(unique_dir);
+    BOOST_TEST(it->path() == unique_yy);
+    it.disable_recursion_pending();
+    ++it;
+    BOOST_TEST(it->path() == unique_yya);
+    ++it;
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    fs::remove(unique_yya);
 #endif
 
-  it = fs::recursive_directory_iterator(unique_yy_zz);
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  it = fs::recursive_directory_iterator(unique_dir);
-  BOOST_TEST(it->path() == unique_yy);
-  BOOST_TEST(it.depth() == 0);
-  ++it;
-  BOOST_TEST(it->path() == unique_yy_zz);
-  BOOST_TEST(it.depth() == 1);
-  it++;
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  it = fs::recursive_directory_iterator(unique_dir);
-  BOOST_TEST(it->path() == unique_yy);
-  it.disable_recursion_pending();
-  ++it;
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  it = fs::recursive_directory_iterator(unique_dir);
-  BOOST_TEST(it->path() == unique_yy);
-  ++it;
-  it.pop();
-  BOOST_TEST(it == fs::recursive_directory_iterator());
-
-  ec.clear();
-  BOOST_TEST(!ec);
-  // check that two argument failed constructor creates the end iterator
-  BOOST_TEST(fs::recursive_directory_iterator("nosuchdir", ec)
-    == fs::recursive_directory_iterator());
-  BOOST_TEST(ec);
-
-  fs::remove_all(unique_dir);  // clean up behind ourselves
-
-  return ::boost::report_errors();
+    it = fs::recursive_directory_iterator(unique_yy_zz);
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    it = fs::recursive_directory_iterator(unique_dir);
+    BOOST_TEST(it->path() == unique_yy);
+    BOOST_TEST(it.depth() == 0);
+    ++it;
+    BOOST_TEST(it->path() == unique_yy_zz);
+    BOOST_TEST(it.depth() == 1);
+    it++;
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    it = fs::recursive_directory_iterator(unique_dir);
+    BOOST_TEST(it->path() == unique_yy);
+    it.disable_recursion_pending();
+    ++it;
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    it = fs::recursive_directory_iterator(unique_dir);
+    BOOST_TEST(it->path() == unique_yy);
+    ++it;
+    it.pop();
+    BOOST_TEST(it == fs::recursive_directory_iterator());
+
+    ec.clear();
+    BOOST_TEST(!ec);
+    // check that two argument failed constructor creates the end iterator
+    BOOST_TEST(fs::recursive_directory_iterator("nosuchdir", ec) == fs::recursive_directory_iterator());
+    BOOST_TEST(ec);
+
+    fs::remove_all(unique_dir); // clean up behind ourselves
+
+    return ::boost::report_errors();
 }