From 69af1c04e077e1a8f9d561368fc5ee972e0685e9 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 27 Oct 2016 12:01:49 +0100 Subject: [PATCH] Adjust precision of filesystem::last_write_time tests * testsuite/experimental/filesystem/iterators/directory_iterator.cc: Use end() function to get end iterator. * testsuite/experimental/filesystem/iterators/pop.cc: Remove printf statements that were present for debugging. * testsuite/experimental/filesystem/iterators/ recursive_directory_iterator.cc: Use end() function to get end iterator. * testsuite/experimental/filesystem/operations/last_write_time.cc: Only require file timestamps to be accurate to one second. From-SVN: r241616 --- libstdc++-v3/ChangeLog | 12 +++++++++ .../iterators/directory_iterator.cc | 14 +++++----- .../experimental/filesystem/iterators/pop.cc | 4 --- .../iterators/recursive_directory_iterator.cc | 26 +++++++++---------- .../filesystem/operations/last_write_time.cc | 24 ++++++++++------- 5 files changed, 47 insertions(+), 33 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d3a07b6885e..958d75bec3a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,15 @@ +2016-10-27 Jonathan Wakely + + * testsuite/experimental/filesystem/iterators/directory_iterator.cc: + Use end() function to get end iterator. + * testsuite/experimental/filesystem/iterators/pop.cc: Remove printf + statements that were present for debugging. + * testsuite/experimental/filesystem/iterators/ + recursive_directory_iterator.cc: Use end() function to get end + iterator. + * testsuite/experimental/filesystem/operations/last_write_time.cc: + Only require file timestamps to be accurate to one second. + 2016-10-26 François Dumont * include/bits/stl_map.h (map()): Make default. diff --git a/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc b/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc index 5788700317f..d1f2c543513 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc @@ -34,14 +34,14 @@ test01() const auto p = __gnu_test::nonexistent_path(); fs::directory_iterator iter(p, ec); VERIFY( ec ); - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); // Test empty directory. create_directory(p, fs::current_path(), ec); VERIFY( !ec ); iter = fs::directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); // Test non-empty directory. create_directory_symlink(p, p / "l", ec); @@ -51,20 +51,20 @@ test01() VERIFY( iter != fs::directory_iterator() ); VERIFY( iter->path() == p/"l" ); ++iter; - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible directory. permissions(p, fs::perms::none, ec); VERIFY( !ec ); iter = fs::directory_iterator(p, ec); VERIFY( ec ); - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible directory, skipping permission denied. const auto opts = fs::directory_options::skip_permission_denied; iter = fs::directory_iterator(p, opts, ec); VERIFY( !ec ); - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); permissions(p, fs::perms::owner_all, ec); remove_all(p, ec); @@ -82,12 +82,12 @@ test02() // Test post-increment (libstdc++/71005) auto iter = fs::directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter != fs::directory_iterator() ); + VERIFY( iter != end(iter) ); const auto entry1 = *iter; const auto entry2 = *iter++; VERIFY( entry1 == entry2 ); VERIFY( entry1.path() == p/"l" ); - VERIFY( iter == fs::directory_iterator() ); + VERIFY( iter == end(iter) ); remove_all(p, ec); } diff --git a/libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc b/libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc index d247ab47ddc..9306c0331ee 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc @@ -84,14 +84,10 @@ test03() std::advance(dir, i); int expected_depth = i; VERIFY( dir.depth() == expected_depth ); - __builtin_printf("%d %d %s\n", i, dir.depth(), dir->path().c_str()); dir.pop(ec); VERIFY( !ec ); if (dir != end(dir)) - { - __builtin_printf("%d %d %s\n", i, dir.depth(), dir->path().c_str()); VERIFY( dir.depth() == (expected_depth - 1) ); - } dir = fs::recursive_directory_iterator(p); std::advance(dir, i); diff --git a/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc b/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc index 79aa178f152..3dc7ba2df65 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc @@ -34,39 +34,39 @@ test01() const auto p = __gnu_test::nonexistent_path(); fs::recursive_directory_iterator iter(p, ec); VERIFY( ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test empty directory. create_directory(p, fs::current_path(), ec); VERIFY( !ec ); iter = fs::recursive_directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test non-empty directory. create_directories(p / "d1/d2"); VERIFY( !ec ); iter = fs::recursive_directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter != fs::recursive_directory_iterator() ); + VERIFY( iter != end(iter) ); VERIFY( iter->path() == p/"d1" ); ++iter; VERIFY( iter->path() == p/"d1/d2" ); ++iter; - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible directory. permissions(p, fs::perms::none, ec); VERIFY( !ec ); iter = fs::recursive_directory_iterator(p, ec); VERIFY( ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible directory, skipping permission denied. const auto opts = fs::directory_options::skip_permission_denied; iter = fs::recursive_directory_iterator(p, opts, ec); VERIFY( !ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible sub-directory. permissions(p, fs::perms::owner_all, ec); @@ -75,24 +75,24 @@ test01() VERIFY( !ec ); iter = fs::recursive_directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter != fs::recursive_directory_iterator() ); + VERIFY( iter != end(iter) ); VERIFY( iter->path() == p/"d1" ); ++iter; // should recurse into d1 VERIFY( iter->path() == p/"d1/d2" ); iter.increment(ec); // should fail to recurse into p/d1/d2 VERIFY( ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); // Test inaccessible sub-directory, skipping permission denied. iter = fs::recursive_directory_iterator(p, opts, ec); VERIFY( !ec ); - VERIFY( iter != fs::recursive_directory_iterator() ); + VERIFY( iter != end(iter) ); VERIFY( iter->path() == p/"d1" ); ++iter; // should recurse into d1 VERIFY( iter->path() == p/"d1/d2" ); iter.increment(ec); // should fail to recurse into p/d1/d2, so skip it VERIFY( !ec ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); permissions(p/"d1/d2", fs::perms::owner_all, ec); remove_all(p, ec); @@ -109,7 +109,7 @@ test02() // Test post-increment (libstdc++/71005) auto iter = fs::recursive_directory_iterator(p, ec); VERIFY( !ec ); - VERIFY( iter != fs::recursive_directory_iterator() ); + VERIFY( iter != end(iter) ); const auto entry1 = *iter; const auto entry2 = *iter++; VERIFY( entry1 == entry2 ); @@ -118,7 +118,7 @@ test02() const auto entry4 = *iter++; VERIFY( entry3 == entry4 ); VERIFY( entry3.path() == p/"d1/d2" ); - VERIFY( iter == fs::recursive_directory_iterator() ); + VERIFY( iter == end(iter) ); remove_all(p, ec); } @@ -145,7 +145,7 @@ test04() { // libstdc++/71004 const fs::recursive_directory_iterator it; - VERIFY( it == fs::recursive_directory_iterator() ); + VERIFY( it == end(it) ); } void diff --git a/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc b/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc index 74be4f94dda..a60a25f4a62 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc @@ -32,13 +32,13 @@ # include #endif +using time_type = std::experimental::filesystem::file_time_type; + void test01() { // read times - using time_type = std::experimental::filesystem::file_time_type; - auto p = __gnu_test::nonexistent_path(); std::error_code ec; time_type mtime = last_write_time(p, ec); @@ -105,13 +105,19 @@ test01() #endif } +bool approx_equal(time_type file_time, time_type expected) +{ + auto delta = expected - file_time; + if (delta < delta.zero()) + delta = -delta; + return delta < std::chrono::seconds(1); +} + void test02() { // write times - using time_type = std::experimental::filesystem::file_time_type; - __gnu_test::scoped_file f; std::error_code ec; time_type time; @@ -119,27 +125,27 @@ test02() time = last_write_time(f.path); last_write_time(f.path, time, ec); VERIFY( !ec ); - VERIFY( last_write_time(f.path) == time ); + VERIFY( approx_equal(last_write_time(f.path), time) ); time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); last_write_time(f.path, time, ec); VERIFY( !ec ); - VERIFY( last_write_time(f.path) == time ); + VERIFY( approx_equal(last_write_time(f.path), time) ); time += std::chrono::milliseconds(1000 * 60 * 20 + 15); last_write_time(f.path, time, ec); VERIFY( !ec ); - VERIFY( last_write_time(f.path) == time ); + VERIFY( approx_equal(last_write_time(f.path), time) ); time = time_type(); last_write_time(f.path, time, ec); VERIFY( !ec ); - VERIFY( last_write_time(f.path) == time ); + VERIFY( approx_equal(last_write_time(f.path), time) ); time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); last_write_time(f.path, time, ec); VERIFY( !ec ); - VERIFY( last_write_time(f.path) == time ); + VERIFY( approx_equal(last_write_time(f.path), time) ); } int -- 2.30.2