diff options
Diffstat (limited to 'toolsrc/src/vcpkg-test/files.cpp')
| -rw-r--r-- | toolsrc/src/vcpkg-test/files.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg-test/files.cpp b/toolsrc/src/vcpkg-test/files.cpp index a8c7c2ba2..429a4ba15 100644 --- a/toolsrc/src/vcpkg-test/files.cpp +++ b/toolsrc/src/vcpkg-test/files.cpp @@ -194,6 +194,62 @@ TEST_CASE ("remove all", "[files]") CHECK_EC_ON_FILE(temp_dir, ec); } +#if defined(_WIN32) +TEST_CASE ("win32_fix_path_case", "[files]") +{ + using vcpkg::Files::win32_fix_path_case; + + // This test assumes that the Windows directory is C:\Windows + + CHECK(win32_fix_path_case(L"") == L""); + + CHECK(win32_fix_path_case(L"C:") == L"C:"); + CHECK(win32_fix_path_case(L"c:") == L"C:"); + CHECK(win32_fix_path_case(L"C:/") == L"C:\\"); + CHECK(win32_fix_path_case(L"C:\\") == L"C:\\"); + CHECK(win32_fix_path_case(L"c:\\") == L"C:\\"); + CHECK(win32_fix_path_case(L"C:\\WiNdOws") == L"C:\\Windows"); + CHECK(win32_fix_path_case(L"c:\\WiNdOws\\") == L"C:\\Windows\\"); + CHECK(win32_fix_path_case(L"C://///////WiNdOws") == L"C:\\Windows"); + CHECK(win32_fix_path_case(L"c:\\/\\/WiNdOws\\/") == L"C:\\Windows\\"); + + auto& fs = vcpkg::Files::get_real_filesystem(); + auto original_cwd = fs.current_path(VCPKG_LINE_INFO); + fs.current_path(L"C:\\", VCPKG_LINE_INFO); + CHECK(win32_fix_path_case(L"\\") == L"\\"); + CHECK(win32_fix_path_case(L"\\/\\WiNdOws") == L"\\Windows"); + CHECK(win32_fix_path_case(L"\\WiNdOws") == L"\\Windows"); + CHECK(win32_fix_path_case(L"\\WiNdOws") == L"\\Windows"); + CHECK(win32_fix_path_case(L"c:WiNdOws") == L"C:Windows"); + CHECK(win32_fix_path_case(L"c:WiNdOws/system32") == L"C:Windows\\System32"); + fs.current_path(original_cwd, VCPKG_LINE_INFO); + + fs.create_directories("SuB/Dir/Ectory", VCPKG_LINE_INFO); + CHECK(win32_fix_path_case(L"sub") == L"SuB"); + CHECK(win32_fix_path_case(L"SUB") == L"SuB"); + CHECK(win32_fix_path_case(L"sub/") == L"SuB\\"); + CHECK(win32_fix_path_case(L"sub/dir") == L"SuB\\Dir"); + CHECK(win32_fix_path_case(L"sub/dir/") == L"SuB\\Dir\\"); + CHECK(win32_fix_path_case(L"sub/dir/ectory") == L"SuB\\Dir\\Ectory"); + CHECK(win32_fix_path_case(L"sub/dir/ectory/") == L"SuB\\Dir\\Ectory\\"); + fs.remove_all("SuB", VCPKG_LINE_INFO); + + CHECK(win32_fix_path_case(L"//nonexistent_server\\nonexistent_share\\") == + L"\\\\nonexistent_server\\nonexistent_share\\"); + CHECK(win32_fix_path_case(L"\\\\nonexistent_server\\nonexistent_share\\") == + L"\\\\nonexistent_server\\nonexistent_share\\"); + CHECK(win32_fix_path_case(L"\\\\nonexistent_server\\nonexistent_share") == + L"\\\\nonexistent_server\\nonexistent_share"); + + CHECK(win32_fix_path_case(L"///three_slashes_not_a_server\\subdir\\") == L"\\three_slashes_not_a_server\\subdir\\"); + + CHECK(win32_fix_path_case(L"\\??\\c:\\WiNdOws") == L"\\??\\c:\\WiNdOws"); + CHECK(win32_fix_path_case(L"\\\\?\\c:\\WiNdOws") == L"\\\\?\\c:\\WiNdOws"); + CHECK(win32_fix_path_case(L"\\\\.\\c:\\WiNdOws") == L"\\\\.\\c:\\WiNdOws"); + CHECK(win32_fix_path_case(L"c:\\/\\/Nonexistent\\/path/here") == L"C:\\Nonexistent\\path\\here"); +} +#endif // _WIN32 + #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) TEST_CASE ("remove all -- benchmarks", "[files][!benchmark]") { |
