]> git.proxmox.com Git - libgit2.git/blobdiff - tests/remote/httpproxy.c
Merge https://salsa.debian.org/debian/libgit2 into proxmox/bullseye
[libgit2.git] / tests / remote / httpproxy.c
diff --git a/tests/remote/httpproxy.c b/tests/remote/httpproxy.c
deleted file mode 100644 (file)
index f62a254..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#include "clar_libgit2.h"
-#include "futils.h"
-#include "net.h"
-#include "remote.h"
-
-static git_repository *repo;
-static git_net_url url = GIT_NET_URL_INIT;
-
-static int orig_proxies_need_reset = 0;
-static char *orig_http_proxy = NULL;
-static char *orig_https_proxy = NULL;
-static char *orig_no_proxy = NULL;
-
-void test_remote_httpproxy__initialize(void)
-{
-       git_remote *remote;
-
-       repo = cl_git_sandbox_init("testrepo");
-       cl_git_pass(git_remote_create(&remote, repo, "lg2", "https://github.com/libgit2/libgit2"));
-       cl_git_pass(git_net_url_parse(&url, "https://github.com/libgit2/libgit2"));
-
-       git_remote_free(remote);
-
-       orig_proxies_need_reset = 0;
-}
-
-void test_remote_httpproxy__cleanup(void)
-{
-       if (orig_proxies_need_reset) {
-               cl_setenv("HTTP_PROXY", orig_http_proxy);
-               cl_setenv("HTTPS_PROXY", orig_https_proxy);
-               cl_setenv("NO_PROXY", orig_no_proxy);
-
-               git__free(orig_http_proxy);
-               git__free(orig_https_proxy);
-               git__free(orig_no_proxy);
-       }
-
-       git_net_url_dispose(&url);
-       cl_git_sandbox_cleanup();
-}
-
-static void assert_proxy_is(const char *expected)
-{
-       git_remote *remote;
-       char *proxy;
-
-       cl_git_pass(git_remote_lookup(&remote, repo, "lg2"));
-       cl_git_pass(git_remote__http_proxy(&proxy, remote, &url));
-
-       if (expected)
-               cl_assert_equal_s(proxy, expected);
-       else
-               cl_assert_equal_p(proxy, expected);
-
-       git_remote_free(remote);
-       git__free(proxy);
-}
-
-static void assert_config_match(const char *config, const char *expected)
-{
-       git_remote *remote;
-       char *proxy;
-
-       if (config)
-               cl_repo_set_string(repo, config, expected);
-
-       cl_git_pass(git_remote_lookup(&remote, repo, "lg2"));
-       cl_git_pass(git_remote__http_proxy(&proxy, remote, &url));
-
-       if (expected)
-               cl_assert_equal_s(proxy, expected);
-       else
-               cl_assert_equal_p(proxy, expected);
-
-       git_remote_free(remote);
-       git__free(proxy);
-}
-
-void test_remote_httpproxy__config_overrides(void)
-{
-       /*
-        * http.proxy should be honored, then http.<url>.proxy should
-        * be honored in increasing specificity of the url.  finally,
-        * remote.<name>.proxy is the most specific.
-        */
-       assert_config_match(NULL, NULL);
-       assert_config_match("http.proxy", "http://localhost:1/");
-       assert_config_match("http.https://github.com.proxy", "http://localhost:2/");
-       assert_config_match("http.https://github.com/.proxy", "http://localhost:3/");
-       assert_config_match("http.https://github.com/libgit2.proxy", "http://localhost:4/");
-       assert_config_match("http.https://github.com/libgit2/.proxy", "http://localhost:5/");
-       assert_config_match("http.https://github.com/libgit2/libgit2.proxy", "http://localhost:6/");
-       assert_config_match("remote.lg2.proxy", "http://localhost:7/");
-}
-
-void test_remote_httpproxy__config_empty_overrides(void)
-{
-       /*
-        * with greater specificity, an empty config entry overrides
-        * a set one
-        */
-       assert_config_match("http.proxy", "http://localhost:1/");
-       assert_config_match("http.https://github.com.proxy", "");
-       assert_config_match("http.https://github.com/libgit2/libgit2.proxy", "http://localhost:2/");
-       assert_config_match("remote.lg2.proxy", "");
-}
-
-static void assert_global_config_match(const char *config, const char *expected)
-{
-       git_remote *remote;
-       char *proxy;
-       git_config* cfg;
-
-       if (config) {
-               cl_git_pass(git_config_open_default(&cfg));
-               git_config_set_string(cfg, config, expected);
-               git_config_free(cfg);
-       }
-
-       cl_git_pass(git_remote_create_detached(&remote, "https://github.com/libgit2/libgit2"));
-       cl_git_pass(git_remote__http_proxy(&proxy, remote, &url));
-
-       if (expected)
-               cl_assert_equal_s(proxy, expected);
-       else
-               cl_assert_equal_p(proxy, expected);
-
-       git_remote_free(remote);
-       git__free(proxy);
-}
-
-void test_remote_httpproxy__config_overrides_detached_remote(void)
-{
-       cl_fake_home();
-
-       assert_global_config_match(NULL, NULL);
-       assert_global_config_match("http.proxy", "http://localhost:1/");
-       assert_global_config_match("http.https://github.com.proxy", "http://localhost:2/");
-       assert_global_config_match("http.https://github.com/.proxy", "http://localhost:3/");
-       assert_global_config_match("http.https://github.com/libgit2.proxy", "http://localhost:4/");
-       assert_global_config_match("http.https://github.com/libgit2/.proxy", "http://localhost:5/");
-       assert_global_config_match("http.https://github.com/libgit2/libgit2.proxy", "http://localhost:6/");
-
-       cl_git_pass(git_futils_rmdir_r("home", NULL, GIT_RMDIR_REMOVE_FILES));
-}
-
-void test_remote_httpproxy__env(void)
-{
-       orig_http_proxy = cl_getenv("HTTP_PROXY");
-       orig_https_proxy = cl_getenv("HTTPS_PROXY");
-       orig_no_proxy = cl_getenv("NO_PROXY");
-       orig_proxies_need_reset = 1;
-
-       /* Clear everything for a fresh start */
-       cl_setenv("HTTP_PROXY", NULL);
-       cl_setenv("HTTPS_PROXY", NULL);
-       cl_setenv("NO_PROXY", NULL);
-
-       /* HTTP proxy is ignored for HTTPS */
-       cl_setenv("HTTP_PROXY", "http://localhost:9/");
-       assert_proxy_is(NULL);
-
-       /* HTTPS proxy is honored for HTTPS */
-       cl_setenv("HTTPS_PROXY", "http://localhost:10/");
-       assert_proxy_is("http://localhost:10/");
-
-       /* NO_PROXY is honored */
-       cl_setenv("NO_PROXY", "github.com:443");
-       assert_proxy_is(NULL);
-
-       cl_setenv("NO_PROXY", "github.com:80");
-       assert_proxy_is("http://localhost:10/");
-
-       cl_setenv("NO_PROXY", "github.com");
-       assert_proxy_is(NULL);
-
-       cl_setenv("NO_PROXY", "github.dev,github.com,github.foo");
-       assert_proxy_is(NULL);
-
-       cl_setenv("HTTPS_PROXY", "");
-       assert_proxy_is(NULL);
-
-       /* configuration overrides environment variables */
-       cl_setenv("HTTPS_PROXY", "http://localhost:10/");
-       cl_setenv("NO_PROXY", "github.none");
-       assert_config_match("http.https://github.com.proxy", "http://localhost:11/");
-}