mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
Add test for fetch proxy memleak
This commit is contained in:
@@ -3,9 +3,19 @@
|
||||
static git_repository *_repo;
|
||||
static int counter;
|
||||
|
||||
static char *_remote_proxy_scheme = NULL;
|
||||
static char *_remote_proxy_host = NULL;
|
||||
static char *_remote_proxy_user = NULL;
|
||||
static char *_remote_proxy_pass = NULL;
|
||||
|
||||
void test_online_fetch__initialize(void)
|
||||
{
|
||||
cl_git_pass(git_repository_init(&_repo, "./fetch", 0));
|
||||
|
||||
_remote_proxy_scheme = cl_getenv("GITTEST_REMOTE_PROXY_SCHEME");
|
||||
_remote_proxy_host = cl_getenv("GITTEST_REMOTE_PROXY_HOST");
|
||||
_remote_proxy_user = cl_getenv("GITTEST_REMOTE_PROXY_USER");
|
||||
_remote_proxy_pass = cl_getenv("GITTEST_REMOTE_PROXY_PASS");
|
||||
}
|
||||
|
||||
void test_online_fetch__cleanup(void)
|
||||
@@ -14,6 +24,11 @@ void test_online_fetch__cleanup(void)
|
||||
_repo = NULL;
|
||||
|
||||
cl_fixture_cleanup("./fetch");
|
||||
|
||||
git__free(_remote_proxy_scheme);
|
||||
git__free(_remote_proxy_host);
|
||||
git__free(_remote_proxy_user);
|
||||
git__free(_remote_proxy_pass);
|
||||
}
|
||||
|
||||
static int update_tips(const char *refname, const git_oid *a, const git_oid *b, void *data)
|
||||
@@ -207,3 +222,28 @@ void test_online_fetch__twice(void)
|
||||
|
||||
git_remote_free(remote);
|
||||
}
|
||||
|
||||
void test_online_fetch__proxy(void)
|
||||
{
|
||||
git_remote *remote;
|
||||
git_buf url = GIT_BUF_INIT;
|
||||
git_fetch_options fetch_opts;
|
||||
|
||||
if (!_remote_proxy_host || !_remote_proxy_user || !_remote_proxy_pass)
|
||||
cl_skip();
|
||||
|
||||
cl_git_pass(git_buf_printf(&url, "%s://%s:%s@%s/",
|
||||
_remote_proxy_scheme ? _remote_proxy_scheme : "http",
|
||||
_remote_proxy_user, _remote_proxy_pass, _remote_proxy_host));
|
||||
|
||||
cl_git_pass(git_fetch_options_init(&fetch_opts, GIT_FETCH_OPTIONS_VERSION));
|
||||
fetch_opts.proxy_opts.type = GIT_PROXY_SPECIFIED;
|
||||
fetch_opts.proxy_opts.url = url.ptr;
|
||||
|
||||
cl_git_pass(git_remote_create(&remote, _repo, "test", "https://github.com/libgit2/TestGitRepository.git"));
|
||||
cl_git_pass(git_remote_connect(remote, GIT_DIRECTION_FETCH, NULL, &fetch_opts.proxy_opts, NULL));
|
||||
cl_git_pass(git_remote_fetch(remote, NULL, &fetch_opts, NULL));
|
||||
|
||||
git_remote_free(remote);
|
||||
git_buf_dispose(&url);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user