@@ -26,76 +26,74 @@ namespace fs = std::filesystem;
26
26
using namespace fs ;
27
27
28
28
#if defined(_WIN32)
29
- static void set_last_write_time_in_iteration (const fs::path& dir)
30
- {
31
- // Windows can postpone updating last write time for file especially for
32
- // directory because last write time of directory depends of its childs.
33
- // See
34
- // https://learn.microsoft.com/en-us/windows/win32/sysinfo/file-times
35
- // To force updating file entries calls "last_write_time" with own value.
36
- const recursive_directory_iterator endIt{};
37
-
38
- std::error_code ec;
39
- recursive_directory_iterator it (dir, ec);
29
+ static void set_last_write_time_in_iteration (const fs::path& dir) {
30
+ // Windows can postpone updating last write time for file especially for
31
+ // directory because last write time of directory depends of its childs.
32
+ // See
33
+ // https://learn.microsoft.com/en-us/windows/win32/sysinfo/file-times
34
+ // To force updating file entries calls "last_write_time" with own value.
35
+ const recursive_directory_iterator endIt{};
36
+
37
+ std::error_code ec;
38
+ recursive_directory_iterator it (dir, ec);
39
+ assert (!ec);
40
+
41
+ file_time_type now_time = file_time_type::clock::now ();
42
+ for (; it != endIt; ++it) {
43
+ const path entry = *it;
44
+ last_write_time (entry, now_time, ec);
40
45
assert (!ec);
46
+ }
41
47
42
- file_time_type now_time = file_time_type::clock::now ();
43
- for ( ; it != endIt; ++it) {
44
- const path entry = *it;
45
- last_write_time (entry, now_time, ec);
46
- assert (!ec);
47
- }
48
-
49
- assert (it == endIt);
48
+ assert (it == endIt);
50
49
}
51
- #endif
52
-
53
- static void test_cache_and_refresh_in_iteration ()
54
- {
55
- static_test_env static_env;
56
- const path testDir = static_env.Dir ;
57
- #if defined(_WIN32)
58
- set_last_write_time_in_iteration (testDir);
59
- #endif
60
- const std::set<path> dir_contents (static_env.RecDirIterationList .begin (),
61
- static_env.RecDirIterationList .end ());
62
- const recursive_directory_iterator endIt{};
63
-
64
- std::error_code ec;
65
- recursive_directory_iterator it (testDir, ec);
66
- assert (!ec);
50
+ #endif
67
51
68
- std::set<path> unseen_entries = dir_contents;
69
- while (!unseen_entries.empty ()) {
70
- assert (it != endIt);
71
- const directory_entry& entry = *it;
72
-
73
- assert (unseen_entries.erase (entry.path ()) == 1 );
74
-
75
- file_status symlink_status = entry.symlink_status ();
76
- file_status status = entry.status ();
77
- std::uintmax_t file_size = entry.is_regular_file () ? entry.file_size () : 0 ;
78
- file_time_type last_write_time = entry.last_write_time ();
79
-
80
- directory_entry mutable_entry = *it;
81
- mutable_entry.refresh ();
82
- file_status upd_symlink_status = mutable_entry.symlink_status ();
83
- file_status upd_status = mutable_entry.status ();
84
- std::uintmax_t upd_file_size = mutable_entry.is_regular_file () ? mutable_entry.file_size () : 0 ;
85
- file_time_type upd_last_write_time = mutable_entry.last_write_time ();
86
- assert (upd_symlink_status == symlink_status);
87
- assert (upd_status == status);
88
- assert (upd_file_size == file_size);
89
- assert (upd_last_write_time == last_write_time);
90
-
91
- recursive_directory_iterator& it_ref = it.increment (ec);
92
- assert (!ec);
93
- assert (&it_ref == &it);
94
- }
52
+ static void test_cache_and_refresh_in_iteration () {
53
+ static_test_env static_env;
54
+ const path testDir = static_env.Dir ;
55
+ #if defined(_WIN32)
56
+ set_last_write_time_in_iteration (testDir);
57
+ #endif
58
+ const std::set<path> dir_contents (static_env.RecDirIterationList .begin (), static_env.RecDirIterationList .end ());
59
+ const recursive_directory_iterator endIt{};
60
+
61
+ std::error_code ec;
62
+ recursive_directory_iterator it (testDir, ec);
63
+ assert (!ec);
64
+
65
+ std::set<path> unseen_entries = dir_contents;
66
+ while (!unseen_entries.empty ()) {
67
+ assert (it != endIt);
68
+ const directory_entry& entry = *it;
69
+
70
+ assert (unseen_entries.erase (entry.path ()) == 1 );
71
+
72
+ file_status symlink_status = entry.symlink_status ();
73
+ file_status status = entry.status ();
74
+ std::uintmax_t file_size = entry.is_regular_file () ? entry.file_size () : 0 ;
75
+ file_time_type last_write_time = entry.last_write_time ();
76
+
77
+ directory_entry mutable_entry = *it;
78
+ mutable_entry.refresh ();
79
+ file_status upd_symlink_status = mutable_entry.symlink_status ();
80
+ file_status upd_status = mutable_entry.status ();
81
+ std::uintmax_t upd_file_size = mutable_entry.is_regular_file () ? mutable_entry.file_size () : 0 ;
82
+ file_time_type upd_last_write_time = mutable_entry.last_write_time ();
83
+ assert (upd_symlink_status.type () == symlink_status.type () &&
84
+ upd_symlink_status.permissions () == symlink_status.permissions ());
85
+ assert (upd_status.type () == status.type () && upd_status.permissions () == status.permissions ());
86
+ assert (upd_file_size == file_size);
87
+ assert (upd_last_write_time == last_write_time);
88
+
89
+ recursive_directory_iterator& it_ref = it.increment (ec);
90
+ assert (!ec);
91
+ assert (&it_ref == &it);
92
+ }
95
93
}
96
94
97
95
int main (int , char **) {
98
- test_cache_and_refresh_in_iteration ();
96
+ test_cache_and_refresh_in_iteration ();
99
97
100
- return 0 ;
98
+ return 0 ;
101
99
}
0 commit comments