Support for test against clang 7.0.0 std::filesystem and fixing some recursive_directory_iterator test cases

This commit is contained in:
Steffen Schuemann 2018-09-23 14:15:54 +02:00
parent d097c9535a
commit 5595cfe848
2 changed files with 8 additions and 6 deletions

View File

@ -13,7 +13,7 @@ if(CMAKE_GENERATOR STREQUAL Xcode)
target_link_libraries(filesystem_test_cov PRIVATE --coverage) target_link_libraries(filesystem_test_cov PRIVATE --coverage)
endif() endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 8.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 7.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0))
include_directories(/usr/local/opt/llvm/include) include_directories(/usr/local/opt/llvm/include)
link_directories(/usr/local/opt/llvm/lib) link_directories(/usr/local/opt/llvm/lib)
add_executable(std_filesystem_test test/filesystem_test.cpp filesystem.h test/catch.hpp) add_executable(std_filesystem_test test/filesystem_test.cpp filesystem.h test/catch.hpp)

View File

@ -217,7 +217,7 @@ TEST_CASE("30.10.8.4.1 path constructors and destructor", "[filesystem][path][fs
CHECK("//host/foo/bar" == fs::path("//host/foo/bar")); CHECK("//host/foo/bar" == fs::path("//host/foo/bar"));
} }
#if !defined(GHC_OS_WINDOWS) && !(defined(GCC_VERSION) && GCC_VERSION < 80100) #if !defined(GHC_OS_WINDOWS) && !(defined(GCC_VERSION) && GCC_VERSION < 80100) && !defined(USE_STD_FS)
std::locale loc; std::locale loc;
bool testUTF8Locale = false; bool testUTF8Locale = false;
try { try {
@ -1074,12 +1074,14 @@ TEST_CASE("30.10.14 class recursive_directory_iterator", "[filesystem][recursive
fs::recursive_directory_iterator rd1(t.path()); fs::recursive_directory_iterator rd1(t.path());
CHECK(fs::recursive_directory_iterator(rd1) != fs::recursive_directory_iterator()); CHECK(fs::recursive_directory_iterator(rd1) != fs::recursive_directory_iterator());
fs::recursive_directory_iterator rd2(t.path()); fs::recursive_directory_iterator rd2(t.path());
CHECK(fs::recursive_directory_iterator(std::move(rd2)) == rd1); CHECK(fs::recursive_directory_iterator(std::move(rd2)) != fs::recursive_directory_iterator());
fs::recursive_directory_iterator rd3(t.path(), fs::directory_options::skip_permission_denied); fs::recursive_directory_iterator rd3(t.path(), fs::directory_options::skip_permission_denied);
CHECK(rd3.options() == fs::directory_options::skip_permission_denied); CHECK(rd3.options() == fs::directory_options::skip_permission_denied);
fs::recursive_directory_iterator rd4; fs::recursive_directory_iterator rd4;
rd4 = std::move(rd3); rd4 = std::move(rd3);
CHECK(rd4 == rd1); CHECK(rd4 != fs::recursive_directory_iterator());
CHECK_NOTHROW(++rd4);
CHECK(rd4 == fs::recursive_directory_iterator());
fs::recursive_directory_iterator rd5; fs::recursive_directory_iterator rd5;
rd5 = rd4; rd5 = rd4;
} }
@ -1165,7 +1167,7 @@ TEST_CASE("30.10.15.3 copy", "[filesystem][operations][fs.op.copy]")
generateFile("dir1/file2"); generateFile("dir1/file2");
fs::create_directory("dir1/dir2"); fs::create_directory("dir1/dir2");
generateFile("dir1/dir2/file3"); generateFile("dir1/dir2/file3");
CHECK_NOTHROW(fs::copy("dir1", "dir3", fs::copy_options::create_symlinks | fs::copy_options::recursive)); REQUIRE_NOTHROW(fs::copy("dir1", "dir3", fs::copy_options::create_symlinks | fs::copy_options::recursive));
CHECK(!ec); CHECK(!ec);
CHECK(fs::exists("dir3/file1")); CHECK(fs::exists("dir3/file1"));
CHECK(fs::is_symlink("dir3/file1")); CHECK(fs::is_symlink("dir3/file1"));
@ -1186,7 +1188,7 @@ TEST_CASE("30.10.15.3 copy", "[filesystem][operations][fs.op.copy]")
auto f2hl = fs::hard_link_count("dir1/file2"); auto f2hl = fs::hard_link_count("dir1/file2");
auto f3hl = fs::hard_link_count("dir1/dir2/file3"); auto f3hl = fs::hard_link_count("dir1/dir2/file3");
CHECK_NOTHROW(fs::copy("dir1", "dir3", fs::copy_options::create_hard_links | fs::copy_options::recursive, ec)); CHECK_NOTHROW(fs::copy("dir1", "dir3", fs::copy_options::create_hard_links | fs::copy_options::recursive, ec));
CHECK(!ec); REQUIRE(!ec);
CHECK(fs::exists("dir3/file1")); CHECK(fs::exists("dir3/file1"));
CHECK(fs::hard_link_count("dir1/file1") == f1hl + 1); CHECK(fs::hard_link_count("dir1/file1") == f1hl + 1);
CHECK(fs::exists("dir3/file2")); CHECK(fs::exists("dir3/file2"));