[libcxx] [test] Add more tests for renaming directories in fs.op.rename

This was requested during the review of D98640.

Differential Revision: https://reviews.llvm.org/D99982
This commit is contained in:
Martin Storsjö 2021-03-23 14:33:11 +02:00
parent 1f1f8e239b
commit 1e5f68d80a
1 changed files with 27 additions and 0 deletions

View File

@ -127,4 +127,31 @@ TEST_CASE(basic_rename_test)
}
}
TEST_CASE(basic_rename_dir_test)
{
static_test_env env;
const std::error_code set_ec = std::make_error_code(std::errc::address_in_use);
const path new_dir = env.makePath("new_dir");
{ // dir -> dir (with contents)
std::error_code ec = set_ec;
rename(env.Dir, new_dir, ec);
TEST_CHECK(!ec);
TEST_CHECK(!exists(env.Dir));
TEST_CHECK(is_directory(new_dir));
TEST_CHECK(exists(new_dir / "file1"));
}
#ifdef _WIN32
// On Windows, renaming a directory over a file isn't an error (this
// case is skipped in test_error_reporting above).
{ // dir -> file
std::error_code ec = set_ec;
rename(new_dir, env.NonEmptyFile, ec);
TEST_CHECK(!ec);
TEST_CHECK(!exists(new_dir));
TEST_CHECK(is_directory(env.NonEmptyFile));
TEST_CHECK(exists(env.NonEmptyFile / "file1"));
}
#endif
}
TEST_SUITE_END()