Merge pull request #6851 from libgit2/ethomson/url_ports

This commit is contained in:
Edward Thomson
2024-07-13 16:37:11 +01:00
committed by GitHub
4 changed files with 113 additions and 4 deletions

View File

@@ -387,6 +387,7 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
port = GIT_STR_INIT, path = GIT_STR_INIT,
query = GIT_STR_INIT, fragment = GIT_STR_INIT;
const char *default_port;
int port_specified = 0;
int error = 0;
if (parser->scheme_len) {
@@ -408,10 +409,13 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
(error = git_str_decode_percent(&host, parser->host, parser->host_len)) < 0)
goto done;
if (parser->port_len)
if (parser->port_len) {
port_specified = 1;
error = git_str_put(&port, parser->port, parser->port_len);
else if (parser->scheme_len && (default_port = default_port_for_scheme(scheme.ptr)) != NULL)
} else if (parser->scheme_len &&
(default_port = default_port_for_scheme(scheme.ptr)) != NULL) {
error = git_str_puts(&port, default_port);
}
if (error < 0)
goto done;
@@ -440,6 +444,7 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
url->fragment = git_str_detach(&fragment);
url->username = git_str_detach(&user);
url->password = git_str_detach(&password);
url->port_specified = port_specified;
error = 0;
@@ -785,10 +790,12 @@ int git_net_url_parse_scp(git_net_url *url, const char *given)
GIT_ASSERT(host_len);
GIT_ERROR_CHECK_ALLOC(url->host = git__strndup(host, host_len));
if (port_len)
if (port_len) {
url->port_specified = 1;
GIT_ERROR_CHECK_ALLOC(url->port = git__strndup(port, port_len));
else
} else {
GIT_ERROR_CHECK_ALLOC(url->port = git__strdup(default_port));
}
GIT_ASSERT(path);
GIT_ERROR_CHECK_ALLOC(url->path = git__strdup(path));

View File

@@ -35,6 +35,8 @@ typedef struct git_net_url {
char *fragment;
char *username;
char *password;
unsigned int port_specified;
} git_net_url;
#define GIT_NET_URL_INIT { NULL }

View File

@@ -27,6 +27,7 @@ void test_url_parse__hostname_trivial(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_root(void)
@@ -41,6 +42,7 @@ void test_url_parse__hostname_root(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_implied_root(void)
@@ -55,6 +57,7 @@ void test_url_parse__hostname_implied_root(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_numeric(void)
@@ -69,6 +72,7 @@ void test_url_parse__hostname_numeric(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_implied_root_custom_port(void)
@@ -83,6 +87,22 @@ void test_url_parse__hostname_implied_root_custom_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__specified_default_port(void)
{
cl_git_pass(git_net_url_parse(&conndata, "http://example.com:80/"));
cl_assert_equal_s(conndata.scheme, "http");
cl_assert_equal_s(conndata.host, "example.com");
cl_assert_equal_s(conndata.port, "80");
cl_assert_equal_s(conndata.path, "/");
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_implied_root_empty_port(void)
@@ -97,6 +117,7 @@ void test_url_parse__hostname_implied_root_empty_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_encoded_password(void)
@@ -112,6 +133,7 @@ void test_url_parse__hostname_encoded_password(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_user(void)
@@ -127,6 +149,7 @@ void test_url_parse__hostname_user(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_user_pass(void)
@@ -143,6 +166,7 @@ void test_url_parse__hostname_user_pass(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_port(void)
@@ -159,6 +183,7 @@ void test_url_parse__hostname_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_empty_port(void)
@@ -173,6 +198,7 @@ void test_url_parse__hostname_empty_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__hostname_user_port(void)
@@ -189,6 +215,7 @@ void test_url_parse__hostname_user_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_user_pass_port(void)
@@ -205,6 +232,7 @@ void test_url_parse__hostname_user_pass_port(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_user_pass_port_query(void)
@@ -221,6 +249,7 @@ void test_url_parse__hostname_user_pass_port_query(void)
cl_assert_equal_s(conndata.query, "query=q&foo=bar&z=asdf");
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_user_pass_port_fragment(void)
@@ -237,6 +266,7 @@ void test_url_parse__hostname_user_pass_port_fragment(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_s(conndata.fragment, "fragment");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__hostname_user_pass_port_query_fragment(void)
@@ -253,6 +283,7 @@ void test_url_parse__hostname_user_pass_port_query_fragment(void)
cl_assert_equal_s(conndata.query, "query=q&foo=bar&z=asdf");
cl_assert_equal_s(conndata.fragment, "fragment");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__fragment_with_question_mark(void)
@@ -269,6 +300,7 @@ void test_url_parse__fragment_with_question_mark(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_s(conndata.fragment, "fragment_with?question_mark");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
/* IPv4 addresses */
@@ -283,6 +315,7 @@ void test_url_parse__ipv4_trivial(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_root(void)
@@ -295,6 +328,7 @@ void test_url_parse__ipv4_root(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_implied_root(void)
@@ -307,6 +341,7 @@ void test_url_parse__ipv4_implied_root(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_implied_root_custom_port(void)
@@ -319,6 +354,7 @@ void test_url_parse__ipv4_implied_root_custom_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv4_implied_root_empty_port(void)
@@ -331,6 +367,7 @@ void test_url_parse__ipv4_implied_root_empty_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_encoded_password(void)
@@ -344,6 +381,7 @@ void test_url_parse__ipv4_encoded_password(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass/is@bad");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv4_user(void)
@@ -357,6 +395,7 @@ void test_url_parse__ipv4_user(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_user_pass(void)
@@ -370,6 +409,7 @@ void test_url_parse__ipv4_user_pass(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_port(void)
@@ -383,6 +423,7 @@ void test_url_parse__ipv4_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv4_empty_port(void)
@@ -395,6 +436,7 @@ void test_url_parse__ipv4_empty_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv4_user_port(void)
@@ -408,6 +450,7 @@ void test_url_parse__ipv4_user_port(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv4_user_pass_port(void)
@@ -421,6 +464,7 @@ void test_url_parse__ipv4_user_pass_port(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
/* IPv6 addresses */
@@ -435,6 +479,7 @@ void test_url_parse__ipv6_trivial(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_root(void)
@@ -447,6 +492,7 @@ void test_url_parse__ipv6_root(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_implied_root(void)
@@ -459,6 +505,7 @@ void test_url_parse__ipv6_implied_root(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_implied_root_custom_port(void)
@@ -471,6 +518,7 @@ void test_url_parse__ipv6_implied_root_custom_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv6_implied_root_empty_port(void)
@@ -483,6 +531,7 @@ void test_url_parse__ipv6_implied_root_empty_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_encoded_password(void)
@@ -496,6 +545,7 @@ void test_url_parse__ipv6_encoded_password(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass/is@bad");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv6_user(void)
@@ -509,6 +559,7 @@ void test_url_parse__ipv6_user(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_user_pass(void)
@@ -522,6 +573,7 @@ void test_url_parse__ipv6_user_pass(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_port(void)
@@ -535,6 +587,7 @@ void test_url_parse__ipv6_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv6_empty_port(void)
@@ -547,6 +600,7 @@ void test_url_parse__ipv6_empty_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__ipv6_user_port(void)
@@ -560,6 +614,7 @@ void test_url_parse__ipv6_user_port(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv6_user_pass_port(void)
@@ -573,6 +628,7 @@ void test_url_parse__ipv6_user_pass_port(void)
cl_assert_equal_s(conndata.username, "user");
cl_assert_equal_s(conndata.password, "pass");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ipv6_invalid_addresses(void)
@@ -681,6 +737,7 @@ void test_url_parse__empty_scheme(void)
cl_assert_equal_p(conndata.query, NULL);
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__invalid_scheme_is_relative(void)
@@ -695,12 +752,14 @@ void test_url_parse__invalid_scheme_is_relative(void)
cl_assert_equal_s(conndata.query, "query_string=yes");
cl_assert_equal_p(conndata.fragment, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__scheme_case_is_normalized(void)
{
cl_git_pass(git_net_url_parse(&conndata, "GIT+SSH://host:42/path/to/project"));
cl_assert_equal_s(conndata.scheme, "git+ssh");
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__nonhierarchical_scheme(void)
@@ -713,6 +772,7 @@ void test_url_parse__nonhierarchical_scheme(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__no_scheme_relative_path(void)
@@ -725,6 +785,7 @@ void test_url_parse__no_scheme_relative_path(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__no_scheme_absolute_path(void)
@@ -737,6 +798,7 @@ void test_url_parse__no_scheme_absolute_path(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__empty_path(void)
@@ -749,6 +811,7 @@ void test_url_parse__empty_path(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__empty_path_with_empty_authority(void)
@@ -761,6 +824,7 @@ void test_url_parse__empty_path_with_empty_authority(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_parse__http_follows_the_rfc(void)
@@ -778,6 +842,7 @@ void test_url_parse__ssh_from_terrible_google_rfc_violating_products(void)
cl_assert_equal_s(conndata.username, "my.email.address@gmail.com");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__ssh_with_password_from_terrible_google_rfc_violating_products(void)
@@ -790,6 +855,7 @@ void test_url_parse__ssh_with_password_from_terrible_google_rfc_violating_produc
cl_assert_equal_s(conndata.username, "my.email.address@gmail.com");
cl_assert_equal_s(conndata.password, "seekret");
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_parse__spaces_in_the_name(void)
@@ -802,4 +868,5 @@ void test_url_parse__spaces_in_the_name(void)
cl_assert_equal_s(conndata.username, "libgit2");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}

View File

@@ -25,6 +25,7 @@ void test_url_scp__hostname_trivial(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__hostname_bracketed(void)
@@ -37,6 +38,7 @@ void test_url_scp__hostname_bracketed(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__hostname_root(void)
@@ -49,6 +51,7 @@ void test_url_scp__hostname_root(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__hostname_user(void)
@@ -61,6 +64,7 @@ void test_url_scp__hostname_user(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__hostname_user_bracketed(void)
@@ -73,6 +77,7 @@ void test_url_scp__hostname_user_bracketed(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__hostname_port(void)
@@ -85,6 +90,20 @@ void test_url_scp__hostname_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__hostname_specified_default_port(void)
{
cl_git_pass(git_net_url_parse_scp(&conndata, "[example.com:22]:/resource"));
cl_assert_equal_s(conndata.scheme, "ssh");
cl_assert_equal_s(conndata.host, "example.com");
cl_assert_equal_s(conndata.port, "22");
cl_assert_equal_s(conndata.path, "/resource");
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__hostname_user_port(void)
@@ -97,6 +116,7 @@ void test_url_scp__hostname_user_port(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__ipv4_trivial(void)
@@ -109,6 +129,7 @@ void test_url_scp__ipv4_trivial(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__ipv4_bracketed(void)
@@ -121,6 +142,7 @@ void test_url_scp__ipv4_bracketed(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__ipv4_user(void)
@@ -133,6 +155,7 @@ void test_url_scp__ipv4_user(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__ipv4_port(void)
@@ -145,6 +168,7 @@ void test_url_scp__ipv4_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__ipv4_user_port(void)
@@ -157,6 +181,7 @@ void test_url_scp__ipv4_user_port(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__ipv6_trivial(void)
@@ -169,6 +194,7 @@ void test_url_scp__ipv6_trivial(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__ipv6_user(void)
@@ -181,6 +207,7 @@ void test_url_scp__ipv6_user(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__ipv6_port(void)
@@ -193,6 +220,7 @@ void test_url_scp__ipv6_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__ipv6_user_port(void)
@@ -205,6 +233,7 @@ void test_url_scp__ipv6_user_port(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__hexhost_and_port(void)
@@ -217,6 +246,7 @@ void test_url_scp__hexhost_and_port(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 1);
}
void test_url_scp__malformed_ipv6_one(void)
@@ -229,6 +259,7 @@ void test_url_scp__malformed_ipv6_one(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__malformed_ipv6_two(void)
@@ -241,6 +272,7 @@ void test_url_scp__malformed_ipv6_two(void)
cl_assert_equal_p(conndata.username, NULL);
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__malformed_ipv6_with_user(void)
@@ -253,6 +285,7 @@ void test_url_scp__malformed_ipv6_with_user(void)
cl_assert_equal_s(conndata.username, "git");
cl_assert_equal_p(conndata.password, NULL);
cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
cl_assert_equal_i(conndata.port_specified, 0);
}
void test_url_scp__invalid_addresses(void)