]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Improve tests for error reporting in Filesystem TS
authorJonathan Wakely <jwakely@redhat.com>
Fri, 5 Jan 2018 22:48:28 +0000 (22:48 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 5 Jan 2018 22:48:28 +0000 (22:48 +0000)
Backport from mainline
2017-10-19  Jonathan Wakely  <jwakely@redhat.com>

* testsuite/experimental/filesystem/iterators/
recursive_directory_iterator.cc: Ensure that error_code arguments are
cleared when required.
* testsuite/experimental/filesystem/operations/create_directory.cc:
Remove redundant check.
* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
Ensure that error_code argument is cleared when required.

From-SVN: r256299

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc

index 0f233f2a076a835f9e40b50e58201d0c30d6b351..504d8b583404965f47cacab6795628d76b6a3cf0 100644 (file)
@@ -1,5 +1,16 @@
 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
 
+       Backport from mainline
+       2017-10-19  Jonathan Wakely  <jwakely@redhat.com>
+
+       * testsuite/experimental/filesystem/iterators/
+       recursive_directory_iterator.cc: Ensure that error_code arguments are
+       cleared when required.
+       * testsuite/experimental/filesystem/operations/create_directory.cc:
+       Remove redundant check.
+       * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
+       Ensure that error_code argument is cleared when required.
+
        Backport from mainline
        2017-12-27  Jonathan Wakely  <jwakely@redhat.com>
 
index 9e94c4799be9e1b682bfa825f358f66b6d633143..dec596971638af53e2c22fb262a9577ec2a350ba 100644 (file)
@@ -28,6 +28,7 @@ void
 test01()
 {
   bool test __attribute__((unused)) = false;
+  const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
   std::error_code ec;
 
   // Test non-existent path.
@@ -37,15 +38,19 @@ test01()
   VERIFY( iter == end(iter) );
 
   // Test empty directory.
+  ec = bad_ec;
   create_directory(p, fs::current_path(), ec);
   VERIFY( !ec );
+  ec = bad_ec;
   iter = fs::recursive_directory_iterator(p, ec);
   VERIFY( !ec );
   VERIFY( iter == end(iter) );
 
   // Test non-empty directory.
-  create_directories(p / "d1/d2");
+  ec = bad_ec;
+  create_directories(p / "d1/d2", ec);
   VERIFY( !ec );
+  ec = bad_ec;
   iter = fs::recursive_directory_iterator(p, ec);
   VERIFY( !ec );
   VERIFY( iter != end(iter) );
@@ -56,6 +61,7 @@ test01()
   VERIFY( iter == end(iter) );
 
   // Test inaccessible directory.
+  ec = bad_ec;
   permissions(p, fs::perms::none, ec);
   VERIFY( !ec );
   iter = fs::recursive_directory_iterator(p, ec);
@@ -64,15 +70,19 @@ test01()
 
   // Test inaccessible directory, skipping permission denied.
   const auto opts = fs::directory_options::skip_permission_denied;
+  ec = bad_ec;
   iter = fs::recursive_directory_iterator(p, opts, ec);
   VERIFY( !ec );
   VERIFY( iter == end(iter) );
 
   // Test inaccessible sub-directory.
+  ec = bad_ec;
   permissions(p, fs::perms::owner_all, ec);
   VERIFY( !ec );
+  ec = bad_ec;
   permissions(p/"d1/d2", fs::perms::none, ec);
   VERIFY( !ec );
+  ec = bad_ec;
   iter = fs::recursive_directory_iterator(p, ec);
   VERIFY( !ec );
   VERIFY( iter != end(iter) );
@@ -84,12 +94,14 @@ test01()
   VERIFY( iter == end(iter) );
 
   // Test inaccessible sub-directory, skipping permission denied.
+  ec = bad_ec;
   iter = fs::recursive_directory_iterator(p, opts, ec);
   VERIFY( !ec );
   VERIFY( iter != end(iter) );
   VERIFY( iter->path() == p/"d1" );
   ++iter;              // should recurse into d1
   VERIFY( iter->path() == p/"d1/d2" );
+  ec = bad_ec;
   iter.increment(ec);  // should fail to recurse into p/d1/d2, so skip it
   VERIFY( !ec );
   VERIFY( iter == end(iter) );
@@ -103,12 +115,15 @@ test02()
 {
   bool test __attribute__((unused)) = false;
 
+  const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
   std::error_code ec;
   const auto p = __gnu_test::nonexistent_path();
+  ec = bad_ec;
   create_directories(p / "d1/d2", ec);
   VERIFY( !ec );
 
   // Test post-increment (libstdc++/71005)
+  ec = bad_ec;
   auto iter = fs::recursive_directory_iterator(p, ec);
   VERIFY( !ec );
   VERIFY( iter != end(iter) );
@@ -130,7 +145,7 @@ test03()
 {
   bool test __attribute__((unused)) = false;
 
-  std::error_code ec;
+  std::error_code ec = make_error_code(std::errc::invalid_argument);
   const auto p = __gnu_test::nonexistent_path();
   create_directories(p / "longer_than_small_string_buffer", ec);
   VERIFY( !ec );
index 66c2b3fb7965f8216ff560d9350d3a5f664b8551..eae60a05bd49be338dd4ec76184e596d0e6287f5 100644 (file)
@@ -50,7 +50,6 @@ test01()
   VERIFY( !ec );
   VERIFY( !b );
   b = create_directory(p);
-  VERIFY( !ec );
   VERIFY( !b );
 
   remove_all(p, ec);
index 23d4b9c4ab350b4f123b24535f646d6aaeb1d51d..06c48cb2020d00b26dcdabd1e561059ecd8b85b3 100644 (file)
@@ -44,7 +44,7 @@ test01()
   if (!fs::exists("/tmp"))
     return; // just give up
 
-  std::error_code ec;
+  std::error_code ec = make_error_code(std::errc::invalid_argument);
   fs::path p1 = fs::temp_directory_path(ec);
   VERIFY( !ec );
   VERIFY( exists(p1) );