libstdc++: Properly remove temporary directories in filesystem tests
Although these tests use filesystem::remove_all to clean up, that fails
because it uses recursive_directory_iterator which is intentionally
bodged by the custom readdir defined in the test.
Just use POSIX rmdir to clean up. We don't need to use _rmdir or _wrmdir
for Windows, because we'll never reach test02() on targets where the
custom readdir doesn't interpose the one from libc.
libstdc++-v3/ChangeLog:
* testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
rmdir to remove directories.
* testsuite/experimental/filesystem/iterators/error_reporting.cc:
Likewise.
(cherry picked from commit 7c1c7e120c
)
This commit is contained in:
parent
ce40e06ea9
commit
e3b4dcfb58
|
@ -107,7 +107,7 @@ void
|
|||
test02()
|
||||
{
|
||||
namespace fs = std::filesystem;
|
||||
auto dir = __gnu_test::nonexistent_path();
|
||||
const auto dir = __gnu_test::nonexistent_path();
|
||||
fs::create_directories(dir/"subdir");
|
||||
|
||||
std::error_code ec;
|
||||
|
@ -137,7 +137,12 @@ test02()
|
|||
}
|
||||
#endif
|
||||
|
||||
fs::remove_all(dir, ec);
|
||||
// Cannot use fs::remove_all here because that uses
|
||||
// recursive_directory_iterator which would use the fake readdir above.
|
||||
#ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS
|
||||
::rmdir((dir/"subdir").c_str());
|
||||
::rmdir(dir.c_str());
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -99,7 +99,7 @@ void
|
|||
test02()
|
||||
{
|
||||
namespace fs = std::experimental::filesystem;
|
||||
auto dir = __gnu_test::nonexistent_path();
|
||||
const auto dir = __gnu_test::nonexistent_path();
|
||||
fs::create_directories(dir/"subdir");
|
||||
|
||||
std::error_code ec;
|
||||
|
@ -129,7 +129,12 @@ test02()
|
|||
}
|
||||
#endif
|
||||
|
||||
fs::remove_all(dir, ec);
|
||||
// Cannot use fs::remove_all here because that depends on
|
||||
// recursive_directory_iterator which would use the fake readdir above.
|
||||
#ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS
|
||||
::rmdir((dir/"subdir").c_str());
|
||||
::rmdir(dir.c_str());
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
|
|
Loading…
Reference in New Issue