include(ExternalProject/shared_internal_commands) function(test_resolve parentUrl relativeUrl expectedResult) _ep_resolve_relative_git_remote(result "${parentUrl}" "${relativeUrl}") if(NOT result STREQUAL expectedResult) message(SEND_ERROR "URL resolved to unexpected result:\n" " Expected: ${expectedResult}\n" " Actual : ${result}" ) endif() endfunction() test_resolve( "https://example.com/group/parent" "../other" "https://example.com/group/other" ) test_resolve( "https://example.com/group/parent" "../../alt/other" "https://example.com/alt/other" ) test_resolve( "git@example.com:group/parent" "../other" "git@example.com:group/other" ) test_resolve( "git@example.com:group/parent" "../../alt/other" "git@example.com:alt/other" ) test_resolve( "git@example.com:/group/parent" "../other" "git@example.com:/group/other" ) test_resolve( "git@example.com:/group/parent" "../../alt/other" "git@example.com:/alt/other" ) test_resolve( "git+ssh://git@example.com:group/parent" "../other" "git+ssh://git@example.com:group/other" ) test_resolve( "ssh://git@example.com:1234/group/parent" "../../alt/other" "ssh://git@example.com:1234/alt/other" ) test_resolve( "file:///group/parent" "../other" "file:///group/other" ) test_resolve( "file:///group/parent" "../../alt/other" "file:///alt/other" ) test_resolve( "file:///~/group/parent" "../../other" "file:///~/other" ) test_resolve( "/group/parent" "../other" "/group/other" ) test_resolve( "/group/parent" "../../alt/other" "/alt/other" ) test_resolve( "C:/group/parent" "../other" "C:/group/other" ) test_resolve( "C:/group/parent" "../../alt/other" "C:/alt/other" ) test_resolve( "x-Test+v1.0://example.com/group/parent" "../other" "x-Test+v1.0://example.com/group/other" ) # IPv6 literals test_resolve( "http://[::1]/group/parent" "../../alt/other" "http://[::1]/alt/other" ) test_resolve( "git@[::1]:group/parent" "../../alt/other" "git@[::1]:alt/other" )