From 6b63589e3512cb8ad895dcac8482850c2f256f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 25 Feb 2012 19:00:58 +0100 Subject: [PATCH] config: add more comprehensive multivar tests --- tests-clar/config/multivar.c | 82 ++++++++++++++++++++++++++++++------ 1 file 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); + +}