summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/experimental/filesystem/fs.op.funcs
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-02-17 01:00:37 +0000
committerEric Fiselier <eric@efcs.ca>2017-02-17 01:00:37 +0000
commit57b93eb78fda3b4bd32de3a10ba953ead3e51040 (patch)
tree12f77c9243c4ef22156d0716d072ee9d25ae73d7 /libcxx/test/std/experimental/filesystem/fs.op.funcs
parent1ede03d5d2109214ebae6599723baecf8aec5402 (diff)
downloadbcm5719-llvm-57b93eb78fda3b4bd32de3a10ba953ead3e51040.tar.gz
bcm5719-llvm-57b93eb78fda3b4bd32de3a10ba953ead3e51040.zip
add tests for ENAMETOOLONG
llvm-svn: 295390
Diffstat (limited to 'libcxx/test/std/experimental/filesystem/fs.op.funcs')
-rw-r--r--libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.exists/exists.pass.cpp9
-rw-r--r--libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp25
2 files changed, 25 insertions, 9 deletions
diff --git a/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.exists/exists.pass.cpp b/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.exists/exists.pass.cpp
index 252ced6fd65..2b9f57e7e95 100644
--- a/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.exists/exists.pass.cpp
+++ b/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.exists/exists.pass.cpp
@@ -85,4 +85,13 @@ TEST_CASE(test_exists_fails)
TEST_CHECK_THROW(filesystem_error, exists(file));
}
+TEST_CASE(test_name_too_long) {
+ std::string long_name(2500, 'a');
+ const path file(long_name);
+
+ std::error_code ec;
+ TEST_CHECK(exists(file, ec) == false);
+ TEST_CHECK(ec);
+}
+
TEST_SUITE_END()
diff --git a/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp b/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp
index 2c76caf74c8..fdc3d2b4a61 100644
--- a/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp
+++ b/libcxx/test/std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp
@@ -65,29 +65,36 @@ TEST_CASE(test_status_cannot_resolve)
const std::error_code set_ec =
std::make_error_code(std::errc::address_in_use);
- const std::error_code expect_ec =
+ const std::error_code perm_ec =
std::make_error_code(std::errc::permission_denied);
+ const std::error_code name_too_long_ec =
+ std::make_error_code(std::errc::filename_too_long);
- const path cases[] = {
- file, sym
+ struct TestCase {
+ path p;
+ std::error_code expect_ec;
+ } const TestCases[] = {
+ {file, perm_ec},
+ {sym, perm_ec},
+ {path(std::string(2500, 'a')), name_too_long_ec}
};
- for (auto& p : cases)
+ for (auto& TC : TestCases)
{
{ // test non-throwing case
std::error_code ec = set_ec;
- file_status st = status(p, ec);
- TEST_CHECK(ec == expect_ec);
+ file_status st = status(TC.p, ec);
+ TEST_CHECK(ec == TC.expect_ec);
TEST_CHECK(st.type() == file_type::none);
TEST_CHECK(st.permissions() == perms::unknown);
}
#ifndef TEST_HAS_NO_EXCEPTIONS
{ // test throwing case
try {
- status(p);
+ status(TC.p);
} catch (filesystem_error const& err) {
- TEST_CHECK(err.path1() == p);
+ TEST_CHECK(err.path1() == TC.p);
TEST_CHECK(err.path2() == "");
- TEST_CHECK(err.code() == expect_ec);
+ TEST_CHECK(err.code() == TC.expect_ec);
}
}
#endif
OpenPOWER on IntegriCloud