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
This commit is contained in:
parent
ddb92ab95f
commit
69af1c04e0
5 changed files with 47 additions and 33 deletions
|
@ -1,3 +1,15 @@
|
|||
2016-10-27 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* 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 <fdumont@gcc.gnu.org>
|
||||
|
||||
* include/bits/stl_map.h (map()): Make default.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -32,13 +32,13 @@
|
|||
# include <utime.h>
|
||||
#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
|
||||
|
|
Loading…
Add table
Reference in a new issue