From b988a6fb4179b409c4f2ff6d424dbd03092f6de3 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 12 Dec 2016 19:50:22 +0000 Subject: [PATCH] [libcxx] [test] Change ifstream constructor tests to handle read-only files. Certain source control systems like to set the read-only bit on their files, which interferes with opening "test.dat" for both input and output. Fortunately, we can work around this without losing test coverage. Now, the ifstream.cons tests have comments referring to the ofstream.cons tests. There, we're creating writable files (not checked into source control), where the ifstream constructor tests will succeed. Fixes D26814. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289463 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../fstreams/ifstream.cons/pointer.pass.cpp | 18 ++++++------------ .../fstreams/ifstream.cons/string.pass.cpp | 18 ++++++------------ .../fstreams/ofstream.cons/pointer.pass.cpp | 12 ++++++++++++ .../fstreams/ofstream.cons/string.pass.cpp | 12 ++++++++++++ 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp index f43df3c9f..ef3959cfc 100644 --- a/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp @@ -25,22 +25,16 @@ int main() fs >> x; assert(x == 3.25); } - { - std::ifstream fs("test.dat", std::ios_base::out); - double x = 0; - fs >> x; - assert(x == 3.25); - } + // std::ifstream(const char*, std::ios_base::openmode) is tested in + // test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp + // which creates writable files. { std::wifstream fs("test.dat"); double x = 0; fs >> x; assert(x == 3.25); } - { - std::wifstream fs("test.dat", std::ios_base::out); - double x = 0; - fs >> x; - assert(x == 3.25); - } + // std::wifstream(const char*, std::ios_base::openmode) is tested in + // test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp + // which creates writable files. } diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp index ad5fe5149..d4155ea8e 100644 --- a/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp @@ -25,22 +25,16 @@ int main() fs >> x; assert(x == 3.25); } - { - std::ifstream fs(std::string("test.dat"), std::ios_base::out); - double x = 0; - fs >> x; - assert(x == 3.25); - } + // std::ifstream(const std::string&, std::ios_base::openmode) is tested in + // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp + // which creates writable files. { std::wifstream fs(std::string("test.dat")); double x = 0; fs >> x; assert(x == 3.25); } - { - std::wifstream fs(std::string("test.dat"), std::ios_base::out); - double x = 0; - fs >> x; - assert(x == 3.25); - } + // std::wifstream(const std::string&, std::ios_base::openmode) is tested in + // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp + // which creates writable files. } diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp index bd5832abe..60f925690 100644 --- a/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp @@ -31,6 +31,12 @@ int main() fs >> x; assert(x == 3.25); } + { + std::ifstream fs(temp.c_str(), std::ios_base::out); + double x = 0; + fs >> x; + assert(x == 3.25); + } std::remove(temp.c_str()); { std::wofstream fs(temp.c_str()); @@ -42,5 +48,11 @@ int main() fs >> x; assert(x == 3.25); } + { + std::wifstream fs(temp.c_str(), std::ios_base::out); + double x = 0; + fs >> x; + assert(x == 3.25); + } std::remove(temp.c_str()); } diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp index 7112b17fb..b95db6626 100644 --- a/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp @@ -31,6 +31,12 @@ int main() fs >> x; assert(x == 3.25); } + { + std::ifstream fs(temp, std::ios_base::out); + double x = 0; + fs >> x; + assert(x == 3.25); + } std::remove(temp.c_str()); { std::wofstream fs(temp); @@ -42,5 +48,11 @@ int main() fs >> x; assert(x == 3.25); } + { + std::wifstream fs(temp, std::ios_base::out); + double x = 0; + fs >> x; + assert(x == 3.25); + } std::remove(temp.c_str()); }