Skip to content

Commit

Permalink
[libcxx] [test] Change ifstream constructor tests to handle read-only…
Browse files Browse the repository at this point in the history
… 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.

llvm-svn: 289463
  • Loading branch information
StephanTLavavej committed Dec 12, 2016
1 parent 14530fc commit 1738e9d
Showing 4 changed files with 36 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -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.
}
Original file line number Diff line number Diff line change
@@ -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.
}
Original file line number Diff line number Diff line change
@@ -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());
}
Original file line number Diff line number Diff line change
@@ -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());
}

0 comments on commit 1738e9d

Please sign in to comment.