config: add more comprehensive multivar tests
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
diff --git a/tests-clar/config/multivar.c b/tests-clar/config/multivar.c
index 4cf5a37..bccdc12 100644
--- a/tests-clar/config/multivar.c
+++ b/tests-clar/config/multivar.c
@@ -1,10 +1,22 @@
#include "clar_libgit2.h"
+static const char *_name = "remote.fancy.url";
+
+void test_config_multivar__initialize(void)
+{
+ cl_fixture_sandbox("config");
+}
+
+void test_config_multivar__cleanup(void)
+{
+ cl_fixture_cleanup("config");
+}
+
static int mv_read_cb(const char *name, const char *GIT_UNUSED(value), void *data)
{
int *n = (int *) data;
- if (!strcmp(name, "remote.fancy.url"))
+ if (!strcmp(name, _name))
(*n)++;
return 0;
@@ -35,17 +47,16 @@ static int cb(const char *GIT_UNUSED(val), void *data)
void test_config_multivar__get(void)
{
git_config *cfg;
- const char *name = "remote.fancy.url";
int n;
- cl_git_pass(git_config_open_ondisk(&cfg, cl_fixture("config/config11")));
+ cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, NULL, cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
cl_assert(n == 2);
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, "example", cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, "example", cb, &n));
cl_assert(n == 1);
git_config_free(cfg);
@@ -54,19 +65,17 @@ void test_config_multivar__get(void)
void test_config_multivar__add(void)
{
git_config *cfg;
- const char *name = "remote.fancy.url";
int n;
- cl_fixture_sandbox("config");
cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
- cl_git_pass(git_config_set_multivar(cfg, name, "^$", "git://git.otherplace.org/libgit2"));
+ cl_git_pass(git_config_set_multivar(cfg, _name, "nonexistant", "git://git.otherplace.org/libgit2"));
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, NULL, cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
cl_assert(n == 3);
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, "otherplace", cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, "otherplace", cb, &n));
cl_assert(n == 1);
git_config_free(cfg);
@@ -76,13 +85,60 @@ void test_config_multivar__add(void)
cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, NULL, cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
cl_assert(n == 3);
-
n = 0;
- cl_git_pass(git_config_get_multivar(cfg, name, "otherplace", cb, &n));
+ cl_git_pass(git_config_get_multivar(cfg, _name, "otherplace", cb, &n));
cl_assert(n == 1);
git_config_free(cfg);
}
+
+void test_config_multivar__replace(void)
+{
+ git_config *cfg;
+ int n;
+
+ cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
+
+ n = 0;
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
+ cl_assert(n == 2);
+
+ cl_git_pass(git_config_set_multivar(cfg, _name, "github", "git://git.otherplace.org/libgit2"));
+
+ n = 0;
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
+ cl_assert(n == 2);
+
+ git_config_free(cfg);
+
+ cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
+
+ n = 0;
+ cl_git_pass(git_config_get_multivar(cfg, _name, NULL, cb, &n));
+ cl_assert(n == 2);
+}
+
+void test_config_multivar__replace_multiple(void)
+{
+ git_config *cfg;
+ int n;
+
+ cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
+ cl_git_pass(git_config_set_multivar(cfg, _name, "git://", "git://git.otherplace.org/libgit2"));
+
+ n = 0;
+ cl_git_pass(git_config_get_multivar(cfg, _name, "otherplace", cb, &n));
+ cl_assert(n == 2);
+
+ git_config_free(cfg);
+
+ cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
+
+ n = 0;
+ cl_git_pass(git_config_get_multivar(cfg, _name, "otherplace", cb, &n));
+ cl_assert(n == 2);
+
+}