diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp --- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp @@ -80,7 +80,6 @@ } } - TEST_CASE(create_directory_through_symlinks) { scoped_test_env env; const path root = env.create_dir("dir"); @@ -97,4 +96,39 @@ } } +TEST_CASE(dest_is_file) +{ + scoped_test_env env; + const path file = env.create_file("file", 42); + std::error_code ec = GetTestEC(); + TEST_CHECK(fs::create_directories(file, ec) == false); + TEST_CHECK(ec); + TEST_CHECK(is_regular_file(file)); +} + +TEST_CASE(dest_part_is_file) +{ + scoped_test_env env; + const path file = env.create_file("file"); + const path dir = env.make_env_path("file/dir1"); + std::error_code ec = GetTestEC(); + TEST_CHECK(fs::create_directories(dir, ec) == false); + TEST_CHECK(ec); + TEST_CHECK(is_regular_file(file)); + TEST_CHECK(!exists(dir)); +} + +TEST_CASE(dest_final_part_is_file) +{ + scoped_test_env env; + env.create_dir("dir"); + const path file = env.create_file("dir/file"); + const path dir = env.make_env_path("dir/file/dir1"); + std::error_code ec = GetTestEC(); + TEST_CHECK(fs::create_directories(dir, ec) == false); + TEST_CHECK(ec); + TEST_CHECK(is_regular_file(file)); + TEST_CHECK(!exists(dir)); +} + TEST_SUITE_END()