]>
git.proxmox.com Git - libgit2.git/blob - tests/config/memory.c
1 #include "clar_libgit2.h"
3 #include "config_backend.h"
5 static git_config_backend
*backend
;
7 void test_config_memory__initialize(void)
12 void test_config_memory__cleanup(void)
14 git_config_backend_free(backend
);
17 static void assert_config_contains(git_config_backend
*backend
,
18 const char *name
, const char *value
)
20 git_config_entry
*entry
;
21 cl_git_pass(git_config_backend_get_string(&entry
, backend
, name
));
22 cl_assert_equal_s(entry
->value
, value
);
25 struct expected_entry
{
31 static int contains_all_cb(const git_config_entry
*entry
, void *payload
)
33 struct expected_entry
*entries
= (struct expected_entry
*) payload
;
36 for (i
= 0; entries
[i
].name
; i
++) {
37 if (strcmp(entries
[i
].name
, entry
->name
) ||
38 strcmp(entries
[i
].value
, entry
->value
))
42 cl_fail("Entry seen more than once");
47 cl_fail("Unexpected entry");
51 static void assert_config_contains_all(git_config_backend
*backend
,
52 struct expected_entry
*entries
)
56 cl_git_pass(git_config_backend_foreach(backend
, contains_all_cb
, entries
));
58 for (i
= 0; entries
[i
].name
; i
++)
59 cl_assert(entries
[i
].seen
);
62 static void setup_backend(const char *cfg
)
64 cl_git_pass(git_config_backend_from_string(&backend
, cfg
, strlen(cfg
)));
65 cl_git_pass(git_config_backend_open(backend
, 0, NULL
));
68 void test_config_memory__write_operations_fail(void)
71 cl_git_fail(git_config_backend_set_string(backend
, "general.foo", "var"));
72 cl_git_fail(git_config_backend_delete(backend
, "general.foo"));
73 cl_git_fail(git_config_backend_lock(backend
));
74 cl_git_fail(git_config_backend_unlock(backend
, 0));
77 void test_config_memory__simple(void)
83 assert_config_contains(backend
, "general.foo", "bar");
86 void test_config_memory__malformed_fails_to_open(void)
91 cl_git_pass(git_config_backend_from_string(&backend
, cfg
, strlen(cfg
)));
92 cl_git_fail(git_config_backend_open(backend
, 0, NULL
));
95 void test_config_memory__multiple_vars(void)
101 assert_config_contains(backend
, "general.foo", "bar");
102 assert_config_contains(backend
, "general.key", "value");
105 void test_config_memory__multiple_sections(void)
113 assert_config_contains(backend
, "general.foo", "bar");
114 assert_config_contains(backend
, "other.key", "value");
117 void test_config_memory__multivar_gets_correct_string(void)
123 assert_config_contains(backend
, "general.foo", "bar2");
126 void test_config_memory__foreach_sees_multivar(void)
128 struct expected_entry entries
[] = {
129 { "general.foo", "bar1", 0 },
130 { "general.foo", "bar2", 0 },
138 assert_config_contains_all(backend
, entries
);