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.
This commit is contained in:
Jonathan Wakely 2022-06-23 14:25:49 +01:00
parent 124a9e08b7
commit 7c1c7e120c
2 changed files with 14 additions and 4 deletions

View File

@ -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

View File

@ -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