PR libstdc++/81808 skip test if reading directory doesn't fail
authorJonathan Wakely <jwakely@redhat.com>
Fri, 11 Aug 2017 00:14:57 +0000 (01:14 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 11 Aug 2017 00:14:57 +0000 (01:14 +0100)
PR libstdc++/81808
* testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
that allow opening a directory as a FILE and reading from it.

From-SVN: r251041

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc

index 8ebe21c9c11675656b1e54c83a27df19fcde910c..fd9a6afbc3cc433f10d06e951f0ba7b76390800e 100644 (file)
@@ -1,3 +1,9 @@
+2017-08-11  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/81808
+       * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
+       that allow opening a directory as a FILE and reading from it.
+
 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
 
        * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
index e49d2b1ad1f5f4d39c31128e0ec750f5912be48a..a319aff1c62b16b1969d7c0c138fabecbcfcb2b6 100644 (file)
@@ -17,6 +17,8 @@
 
 // { dg-require-fileio "" }
 
+// PR libstdc++/53984
+
 #include <fstream>
 #include <testsuite_hooks.h>
 
@@ -26,9 +28,32 @@ test01()
   std::ifstream in(".");
   if (in)
   {
+    char c;
+    if (in.get(c))
+    {
+      // Reading a directory doesn't produce an error on this target
+      // so the formatted input functions below wouldn't fail anyway
+      // (see PR libstdc++/81808).
+      return;
+    }
     int x;
+    in.clear();
+    // Formatted input function should set badbit, but not throw:
     in >> x;
     VERIFY( in.bad() );
+
+    in.clear();
+    in.exceptions(std::ios::badbit);
+    try
+    {
+      // Formatted input function should set badbit, and throw:
+      in >> x;
+      VERIFY( false );
+    }
+    catch (const std::exception&)
+    {
+      VERIFY( in.bad() );
+    }
   }
 }