mirror of git://gcc.gnu.org/git/gcc.git
Improve tests for error reporting in Filesystem TS
* testsuite/experimental/filesystem/iterators/ recursive_directory_iterator.cc: Ensure that error_code arguments are cleared when required. * testsuite/experimental/filesystem/operations/create_directory.cc: Remove redundant check. * testsuite/experimental/filesystem/operations/temp_directory_path.cc: Ensure that error_code argument is cleared when required. From-SVN: r253897
This commit is contained in:
parent
551124d561
commit
db62ad7c66
|
|
@ -1,5 +1,13 @@
|
||||||
2017-10-19 Jonathan Wakely <jwakely@redhat.com>
|
2017-10-19 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
* testsuite/experimental/filesystem/iterators/
|
||||||
|
recursive_directory_iterator.cc: Ensure that error_code arguments are
|
||||||
|
cleared when required.
|
||||||
|
* testsuite/experimental/filesystem/operations/create_directory.cc:
|
||||||
|
Remove redundant check.
|
||||||
|
* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
|
||||||
|
Ensure that error_code argument is cleared when required.
|
||||||
|
|
||||||
* include/experimental/bits/fs_path.h (path::iterator++(int))
|
* include/experimental/bits/fs_path.h (path::iterator++(int))
|
||||||
(path::iterator--(int)): Fix for paths with only one component.
|
(path::iterator--(int)): Fix for paths with only one component.
|
||||||
* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
|
* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ namespace fs = std::experimental::filesystem;
|
||||||
void
|
void
|
||||||
test01()
|
test01()
|
||||||
{
|
{
|
||||||
|
const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
|
||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
|
|
||||||
// Test non-existent path.
|
// Test non-existent path.
|
||||||
|
|
@ -37,15 +38,19 @@ test01()
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
||||||
// Test empty directory.
|
// Test empty directory.
|
||||||
|
ec = bad_ec;
|
||||||
create_directory(p, fs::current_path(), ec);
|
create_directory(p, fs::current_path(), ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
ec = bad_ec;
|
||||||
iter = fs::recursive_directory_iterator(p, ec);
|
iter = fs::recursive_directory_iterator(p, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
||||||
// Test non-empty directory.
|
// Test non-empty directory.
|
||||||
create_directories(p / "d1/d2");
|
ec = bad_ec;
|
||||||
|
create_directories(p / "d1/d2", ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
ec = bad_ec;
|
||||||
iter = fs::recursive_directory_iterator(p, ec);
|
iter = fs::recursive_directory_iterator(p, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter != end(iter) );
|
VERIFY( iter != end(iter) );
|
||||||
|
|
@ -56,6 +61,7 @@ test01()
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
||||||
// Test inaccessible directory.
|
// Test inaccessible directory.
|
||||||
|
ec = bad_ec;
|
||||||
permissions(p, fs::perms::none, ec);
|
permissions(p, fs::perms::none, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
iter = fs::recursive_directory_iterator(p, ec);
|
iter = fs::recursive_directory_iterator(p, ec);
|
||||||
|
|
@ -64,15 +70,19 @@ test01()
|
||||||
|
|
||||||
// Test inaccessible directory, skipping permission denied.
|
// Test inaccessible directory, skipping permission denied.
|
||||||
const auto opts = fs::directory_options::skip_permission_denied;
|
const auto opts = fs::directory_options::skip_permission_denied;
|
||||||
|
ec = bad_ec;
|
||||||
iter = fs::recursive_directory_iterator(p, opts, ec);
|
iter = fs::recursive_directory_iterator(p, opts, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
||||||
// Test inaccessible sub-directory.
|
// Test inaccessible sub-directory.
|
||||||
|
ec = bad_ec;
|
||||||
permissions(p, fs::perms::owner_all, ec);
|
permissions(p, fs::perms::owner_all, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
ec = bad_ec;
|
||||||
permissions(p/"d1/d2", fs::perms::none, ec);
|
permissions(p/"d1/d2", fs::perms::none, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
ec = bad_ec;
|
||||||
iter = fs::recursive_directory_iterator(p, ec);
|
iter = fs::recursive_directory_iterator(p, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter != end(iter) );
|
VERIFY( iter != end(iter) );
|
||||||
|
|
@ -84,12 +94,14 @@ test01()
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
||||||
// Test inaccessible sub-directory, skipping permission denied.
|
// Test inaccessible sub-directory, skipping permission denied.
|
||||||
|
ec = bad_ec;
|
||||||
iter = fs::recursive_directory_iterator(p, opts, ec);
|
iter = fs::recursive_directory_iterator(p, opts, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter != end(iter) );
|
VERIFY( iter != end(iter) );
|
||||||
VERIFY( iter->path() == p/"d1" );
|
VERIFY( iter->path() == p/"d1" );
|
||||||
++iter; // should recurse into d1
|
++iter; // should recurse into d1
|
||||||
VERIFY( iter->path() == p/"d1/d2" );
|
VERIFY( iter->path() == p/"d1/d2" );
|
||||||
|
ec = bad_ec;
|
||||||
iter.increment(ec); // should fail to recurse into p/d1/d2, so skip it
|
iter.increment(ec); // should fail to recurse into p/d1/d2, so skip it
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter == end(iter) );
|
VERIFY( iter == end(iter) );
|
||||||
|
|
@ -101,12 +113,15 @@ test01()
|
||||||
void
|
void
|
||||||
test02()
|
test02()
|
||||||
{
|
{
|
||||||
|
const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
|
||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
const auto p = __gnu_test::nonexistent_path();
|
const auto p = __gnu_test::nonexistent_path();
|
||||||
|
ec = bad_ec;
|
||||||
create_directories(p / "d1/d2", ec);
|
create_directories(p / "d1/d2", ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
|
||||||
// Test post-increment (libstdc++/71005)
|
// Test post-increment (libstdc++/71005)
|
||||||
|
ec = bad_ec;
|
||||||
auto iter = fs::recursive_directory_iterator(p, ec);
|
auto iter = fs::recursive_directory_iterator(p, ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( iter != end(iter) );
|
VERIFY( iter != end(iter) );
|
||||||
|
|
@ -126,7 +141,7 @@ test02()
|
||||||
void
|
void
|
||||||
test03()
|
test03()
|
||||||
{
|
{
|
||||||
std::error_code ec;
|
std::error_code ec = make_error_code(std::errc::invalid_argument);
|
||||||
const auto p = __gnu_test::nonexistent_path();
|
const auto p = __gnu_test::nonexistent_path();
|
||||||
create_directories(p / "longer_than_small_string_buffer", ec);
|
create_directories(p / "longer_than_small_string_buffer", ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,6 @@ test01()
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( !b );
|
VERIFY( !b );
|
||||||
b = create_directory(p);
|
b = create_directory(p);
|
||||||
VERIFY( !ec );
|
|
||||||
VERIFY( !b );
|
VERIFY( !b );
|
||||||
|
|
||||||
remove_all(p, ec);
|
remove_all(p, ec);
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ test01()
|
||||||
if (!fs::exists("/tmp"))
|
if (!fs::exists("/tmp"))
|
||||||
return; // just give up
|
return; // just give up
|
||||||
|
|
||||||
std::error_code ec;
|
std::error_code ec = make_error_code(std::errc::invalid_argument);
|
||||||
fs::path p1 = fs::temp_directory_path(ec);
|
fs::path p1 = fs::temp_directory_path(ec);
|
||||||
VERIFY( !ec );
|
VERIFY( !ec );
|
||||||
VERIFY( exists(p1) );
|
VERIFY( exists(p1) );
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue