mirror of
https://github.com/gulrak/filesystem.git
synced 2026-07-31 00:36:12 +08:00
71 lines
1.6 KiB
C++
71 lines
1.6 KiB
C++
#include <ghc/filesystem.hpp>
|
|
|
|
#ifdef GHC_WITH_EXCEPTIONS
|
|
#error "This test must be compiled without exception support"
|
|
#endif
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
namespace fs = ghc::filesystem;
|
|
|
|
if (argc != 2) {
|
|
return 1;
|
|
}
|
|
|
|
const fs::path regular_file(argv[1]);
|
|
const fs::path test_directory = regular_file.parent_path();
|
|
std::error_code ec;
|
|
const fs::path proximate = fs::proximate(test_directory, ec);
|
|
if (ec || proximate.empty()) {
|
|
return 2;
|
|
}
|
|
|
|
fs::directory_iterator invalid_iter(regular_file, ec);
|
|
if (!ec || invalid_iter != fs::directory_iterator()) {
|
|
return 3;
|
|
}
|
|
|
|
ec.clear();
|
|
fs::recursive_directory_iterator invalid_recursive_iter(regular_file, ec);
|
|
if (!ec || invalid_recursive_iter != fs::recursive_directory_iterator()) {
|
|
return 4;
|
|
}
|
|
|
|
ec.clear();
|
|
fs::directory_iterator iter(test_directory, ec);
|
|
if (ec) {
|
|
return 5;
|
|
}
|
|
if (iter != fs::directory_iterator()) {
|
|
iter++;
|
|
}
|
|
for (; iter != fs::directory_iterator(); ++iter) {
|
|
}
|
|
|
|
for (const auto& entry : fs::directory_iterator(test_directory, ec)) {
|
|
(void)entry;
|
|
}
|
|
if (ec) {
|
|
return 6;
|
|
}
|
|
|
|
fs::recursive_directory_iterator recursive_iter(test_directory, ec);
|
|
if (ec) {
|
|
return 7;
|
|
}
|
|
if (recursive_iter != fs::recursive_directory_iterator()) {
|
|
recursive_iter++;
|
|
}
|
|
for (; recursive_iter != fs::recursive_directory_iterator(); ++recursive_iter) {
|
|
}
|
|
|
|
for (const auto& entry : fs::recursive_directory_iterator(test_directory, ec)) {
|
|
(void)entry;
|
|
}
|
|
if (ec) {
|
|
return 8;
|
|
}
|
|
|
|
return 0;
|
|
}
|