summaryrefslogtreecommitdiff
path: root/tests-clar
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-02-25 19:00:58 +0100
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-02-25 19:01:02 +0100
commit6b63589e3512cb8ad895dcac8482850c2f256f29 (patch)
tree4bbdb7290cd521b1c30f9ae692a1d4156f5c21c6 /tests-clar
parent0a43d7cb19bb229688bec6acececed159e5d0648 (diff)
downloadlibgit2-6b63589e3512cb8ad895dcac8482850c2f256f29.tar.gz
config: add more comprehensive multivar tests
Diffstat (limited to 'tests-clar')
-rw-r--r--tests-clar/config/multivar.c82
1 files changed, 69 insertions, 13 deletions
diff --git a/tests-clar/config/multivar.c b/tests-clar/config/multivar.c
index 4cf5a37d6..bccdc1289 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);
+
+}