aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-08-11 01:14:57 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2017-08-11 01:14:57 +0100
commit1ea93d89a98517c69b75a8c229befd340579a882 (patch)
tree211499ffeca0d57aab0add389d0ca9d79c073969
parente1769bdd4cef522ada32aec863feba41116b183a (diff)
downloadgcc-1ea93d89a98517c69b75a8c229befd340579a882.zip
gcc-1ea93d89a98517c69b75a8c229befd340579a882.tar.gz
gcc-1ea93d89a98517c69b75a8c229befd340579a882.tar.bz2
PR libstdc++/81808 skip test if reading directory doesn't fail
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
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc25
2 files changed, 31 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8ebe21c..fd9a6afb 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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):
diff --git a/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc b/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
index e49d2b1..a319aff 100644
--- a/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
@@ -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() );
+ }
}
}