Branch Coverage

deps/libgit2/src/config.c
Criterion Covered Total %
branch 203 454 44.7


line true false branch
27 2021 855 if (!entry)
54 1062 535 for (i = 0; i < cfg->backends.length; ++i) {
56 1062 0 GIT_REFCOUNT_DEC(internal, backend_internal_free);
1062 0 GIT_REFCOUNT_DEC(internal, backend_internal_free);
67 5 550 if (cfg == NULL)
70 535 15 GIT_REFCOUNT_DEC(cfg, config_free);
535 0 GIT_REFCOUNT_DEC(cfg, config_free);
86 0 535 GIT_ERROR_CHECK_ALLOC(cfg);
90 0 535 if (git_vector_init(&cfg->backends, 3, config_backend_cmp) < 0) {
111 96 0 assert(cfg && path);
0 96 assert(cfg && path);
114 47 49 if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
0 47 if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
0 0 if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
119 0 96 if (git_config_backend_from_file(&file, path) < 0)
122 0 96 if ((res = git_config_add_backend(cfg, file, level, repo, force)) < 0) {
141 0 5 if (git_config_new(&config) < 0)
144 0 5 if ((error = git_config_add_file_ondisk(config, path, GIT_CONFIG_LEVEL_LOCAL, NULL, 0)) < 0)
161 0 483 if (git_config_new(&config) < 0)
164 966 483 git_vector_foreach(&in->backends, i, internal) {
167 0 966 if ((error = internal->backend->snapshot(&b, internal->backend)) < 0)
170 0 966 if ((error = git_config_add_backend(config, b, internal->level, NULL, 0)) < 0) {
176 0 483 if (error < 0)
198 0 0 if (level == GIT_CONFIG_HIGHEST_LEVEL) {
201 0 0 git_vector_foreach(&cfg->backends, i, internal) {
202 0 0 if (internal->level == level)
207 0 0 if (pos == -1) {
236 0 0 git_vector_foreach(&cfg->backends, i, internal) {
237 0 0 if (internal->level == level)
241 0 0 if (pos == -1)
246 0 0 if (git_vector_remove(&cfg->backends, pos) < 0)
249 0 0 GIT_REFCOUNT_DEC(internal, backend_internal_free);
0 0 GIT_REFCOUNT_DEC(internal, backend_internal_free);
261 0 1062 if (force)
264 0 1062 if ((result = git_vector_insert_sorted(&cfg->backends,
278 0 0 if (!git_config_open_level(cfg_out, cfg, GIT_CONFIG_LEVEL_XDG))
293 0 0 if ((res = find_backend_by_level(&internal, cfg_parent, level)) < 0)
296 0 0 if ((res = git_config_new(&cfg)) < 0)
299 0 0 if ((res = git_config__add_internal(cfg, internal, level, true)) < 0) {
319 1062 0 assert(cfg && backend);
0 1062 assert(cfg && backend);
321 0 1062 GIT_ERROR_CHECK_VERSION(backend, GIT_CONFIG_BACKEND_VERSION, "git_config_backend");
323 0 1062 if ((result = backend->open(backend, level, repo)) < 0)
327 0 1062 GIT_ERROR_CHECK_ALLOC(internal);
334 0 1062 if ((result = git_config__add_internal(cfg, internal, level, force)) < 0) {
358 104 51 for (; i > 0; --i) {
360 104 0 if (!internal || !internal->backend)
0 104 if (!internal || !internal->backend)
378 853 52 if (iter->current != NULL &&
802 51 if (iter->current != NULL &&
383 51 52 if (error < 0 && error != GIT_ITEROVER)
0 51 if (error < 0 && error != GIT_ITEROVER)
387 51 104 if (find_next_backend(&i, iter->cfg, iter->i) < 0)
394 52 52 if (iter->current)
399 0 104 if (error == GIT_ENOTFOUND)
402 0 104 if (error < 0)
407 52 52 if (error == GIT_ITEROVER)
426 453 26 while ((error = all_iter_next(entry, _iter)) == 0) {
428 439 14 if (git_regexp_match(&iter->regex, (*entry)->name) != 0)
442 52 0 if (iter->current)
461 0 26 GIT_ERROR_CHECK_ALLOC(iter);
479 2 26 if (regexp == NULL)
483 0 26 GIT_ERROR_CHECK_ALLOC(iter);
485 0 26 if ((result = git_regexp_compile(&iter->regex, regexp, 0)) < 0) {
517 0 0 assert(backend && cb);
0 0 assert(backend && cb);
519 0 0 if (regexp && git_regexp_compile(®ex, regexp, 0) < 0)
0 0 if (regexp && git_regexp_compile(®ex, regexp, 0) < 0)
522 0 0 if ((error = backend->iterator(&iter, backend)) < 0) {
527 0 0 while (!(iter->next(&entry, iter) < 0)) {
529 0 0 if (regexp && git_regexp_match(®ex, entry->name) != 0)
0 0 if (regexp && git_regexp_match(®ex, entry->name) != 0)
533 0 0 if ((error = cb(entry, payload)) != 0) {
539 0 0 if (regexp != NULL)
557 0 9 if ((error = git_config_iterator_glob_new(&iter, cfg, regexp)) < 0)
560 26 8 while (!(error = git_config_next(&entry, iter))) {
561 1 25 if ((error = cb(entry, payload)) != 0) {
569 8 1 if (error == GIT_ITEROVER)
597 0 60 if (git_vector_length(&cfg->backends) == 0) {
604 60 0 git_vector_foreach(&cfg->backends, i, backend) {
605 60 0 if (!backend->backend->readonly) {
621 0 15 if (get_backend_for_use(&backend, cfg, name, BACKEND_USE_DELETE) < 0)
641 12 5 return git_config_set_string(cfg, name, value ? "true" : "false");
649 0 40 if (!value) {
654 0 40 if (get_backend_for_use(&backend, cfg, name, BACKEND_USE_SET) < 0)
659 40 0 if (!error && GIT_REFCOUNT_OWNER(cfg) != NULL)
21 19 if (!error && GIT_REFCOUNT_OWNER(cfg) != NULL)
675 0 0 if ((error = git_config__lookup_entry(&ce, config, key, false)) < 0)
678 0 0 if (!ce && only_if_existing) /* entry doesn't exist */
0 0 if (!ce && only_if_existing) /* entry doesn't exist */
680 0 0 if (ce && !overwrite_existing) /* entry would be overwritten */
0 0 if (ce && !overwrite_existing) /* entry would be overwritten */
682 0 0 if (value && ce && ce->value && !strcmp(ce->value, value)) /* no change */
0 0 if (value && ce && ce->value && !strcmp(ce->value, value)) /* no change */
0 0 if (value && ce && ce->value && !strcmp(ce->value, value)) /* no change */
0 0 if (value && ce && ce->value && !strcmp(ce->value, value)) /* no change */
684 0 0 if (!value && (!ce || !ce->value)) /* asked to delete absent entry */
0 0 if (!value && (!ce || !ce->value)) /* asked to delete absent entry */
0 0 if (!value && (!ce || !ce->value)) /* asked to delete absent entry */
687 0 0 if (!value)
727 445 2490 if (normalize_name) {
728 0 445 if ((res = git_config__normalize_name(name, &normalized)) < 0)
734 5015 2080 git_vector_foreach(&cfg->backends, i, internal) {
735 5015 0 if (!internal || !internal->backend)
0 5015 if (!internal || !internal->backend)
739 855 4160 if (res != GIT_ENOTFOUND)
746 2080 855 if (res == GIT_ENOTFOUND)
747 157 1923 res = (want_errors > GET_ALL_ERRORS) ? 0 : config_error_notfound(name);
748 0 855 else if (res && (want_errors == GET_NO_ERRORS)) {
0 0 else if (res && (want_errors == GET_NO_ERRORS)) {
768 284 1538 return get_entry(
782 0 0 if ((ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS)) < 0)
796 28 0 if ((ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS)) < 0)
810 1 45 if ((ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS)) < 0)
824 30 46 if ((ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS)) < 0)
838 396 198 git_vector_foreach(&cfg->backends, i, internal) {
839 396 0 if (!internal || !internal->backend)
0 396 if (!internal || !internal->backend)
842 0 396 if (!internal->backend->readonly)
854 0 0 if ((error = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS)) < 0)
869 0 198 if (!is_readonly(cfg)) {
875 171 27 *out = !ret ? (entry->value ? entry->value : "") : NULL;
171 0 *out = !ret ? (entry->value ? entry->value : "") : NULL;
892 15 7 str = !ret ? (entry->value ? entry->value : "") : NULL;
15 0 str = !ret ? (entry->value ? entry->value : "") : NULL;
894 15 7 if (str)
909 0 14 ret = (entry && entry->value) ? git__strdup(entry->value) : fallback_value ? git__strdup(fallback_value) : NULL;
0 0 ret = (entry && entry->value) ? git__strdup(entry->value) : fallback_value ? git__strdup(fallback_value) : NULL;
14 0 ret = (entry && entry->value) ? git__strdup(entry->value) : fallback_value ? git__strdup(fallback_value) : NULL;
923 225 373 if (entry && git_config_parse_bool(&val, entry->value) < 0)
0 225 if (entry && git_config_parse_bool(&val, entry->value) < 0)
938 0 56 if (entry && git_config_parse_int32(&val, entry->value) < 0)
0 0 if (entry && git_config_parse_int32(&val, entry->value) < 0)
953 0 20 if ((err = git_config_multivar_iterator_new(&iter, cfg, name, regexp)) < 0)
957 10 20 while ((err = iter->next(&entry, iter)) == 0) {
960 0 10 if ((err = cb(entry, payload)) != 0) {
967 20 0 if (err == GIT_ITEROVER)
970 10 10 if (found == 0 && err == 0)
10 0 if (found == 0 && err == 0)
989 389 24 while ((error = iter->iter->next(entry, iter->iter)) == 0) {
990 374 15 if (git__strcmp(iter->name, (*entry)->name))
993 15 0 if (!iter->have_regex)
996 0 0 if (git_regexp_match(&iter->regex, (*entry)->value) == 0)
1010 0 24 if (iter->have_regex)
1021 0 24 if ((error = git_config_iterator_new(&inner, cfg)) < 0)
1025 0 24 GIT_ERROR_CHECK_ALLOC(iter);
1027 0 24 if ((error = git_config__normalize_name(name, &iter->name)) < 0)
1030 0 24 if (regexp != NULL) {
1031 0 0 if ((error = git_regexp_compile(&iter->regex, regexp, 0)) < 0)
1056 0 5 if (get_backend_for_use(&backend, cfg, name, BACKEND_USE_DELETE) < 0)
1066 0 0 if (get_backend_for_use(&backend, cfg, name, BACKEND_USE_DELETE) < 0)
1079 0 998 if (iter == NULL)
1110 45 0 if (ret != GIT_OK)
1121 0 45 if (git_sysdir_get(&paths, GIT_SYSDIR_GLOBAL) < 0)
1125 45 0 if (!paths || !git_buf_len(paths))
0 45 if (!paths || !git_buf_len(paths))
1129 225 45 for (sep = start = git_buf_cstr(paths); *sep; ++sep) {
1130 0 225 if (*sep == GIT_PATH_LIST_SEPARATOR &&
0 0 if (*sep == GIT_PATH_LIST_SEPARATOR &&
1131 0 0 (sep <= start || sep[-1] != '\\'))
1135 0 45 if (git_buf_set(buf, start, (size_t)(sep - start)) < 0)
1147 0 1 if ((error = git_config_new(&cfg)) < 0)
1150 1 0 if (!git_config_find_global(&buf) || !git_config__global_location(&buf)) {
1 0 if (!git_config_find_global(&buf) || !git_config__global_location(&buf)) {
1155 1 0 if (!error && !git_config_find_xdg(&buf))
0 1 if (!error && !git_config_find_xdg(&buf))
1159 1 0 if (!error && !git_config_find_system(&buf))
0 1 if (!error && !git_config_find_system(&buf))
1163 1 0 if (!error && !git_config_find_programdata(&buf))
0 1 if (!error && !git_config_find_programdata(&buf))
1169 0 1 if (error) {
1185 0 0 assert(cfg);
1188 0 0 if (!internal || !internal->backend) {
0 0 if (!internal || !internal->backend) {
1194 0 0 if ((error = backend->lock(backend)) < 0)
1205 0 0 assert(cfg);
1208 0 0 if (!internal || !internal->backend) {
0 0 if (!internal || !internal->backend) {
1230 0 23 if (!value)
1233 53 0 for (i = 0; i < map_n; ++i) {
1241 32 14 if (git__parse_bool(&bool_val, value) == 0 &&
16 16 if (git__parse_bool(&bool_val, value) == 0 &&
1250 0 0 if (git_config_parse_int32(out, value) == 0)
1255 7 0 if (strcasecmp(value, m->str_match) == 0) {
1273 0 0 for (i = 0; i < map_n; i++) {
1276 0 0 if (m->map_value != enum_val)
1290 590 0 if (git__parse_bool(out, value) == 0)
1293 0 0 if (git_config_parse_int32(out, value) == 0) {
1307 45 0 if (!value || git__strntol64(&num, value, strlen(value), &num_end, 0) < 0)
45 0 if (!value || git__strntol64(&num, value, strlen(value), &num_end, 0) < 0)
1327 0 0 if (num_end[1] != '\0')
1341 0 0 git_error_set(GIT_ERROR_CONFIG, "failed to parse '%s' as an integer", value ? value : "(null)");
1350 0 45 if (git_config_parse_int64(&tmp, value) < 0)
1354 0 45 if (truncate != tmp)
1361 0 0 git_error_set(GIT_ERROR_CONFIG, "failed to parse '%s' as a 32-bit integer", value ? value : "(null)");
1367 0 0 assert(out && value);
0 0 assert(out && value);
1371 0 0 if (value[0] == '~') {
1372 0 0 if (value[1] != '\0' && value[1] != '/') {
0 0 if (value[1] != '\0' && value[1] != '/') {
1377 0 0 return git_sysdir_expand_global_file(out, value[1] ? &value[2] : NULL);
1387 0 1060 if (start == end)
1391 7076 529 for (scan = start; *scan; ++scan) {
1392 2921 4155 if (end && scan >= end)
531 2390 if (end && scan >= end)
1394 6545 0 if (isalnum(*scan))
1396 0 0 else if (*scan != '-' || scan == start)
0 0 else if (*scan != '-' || scan == start)
1400 0 1060 if (scan == start)
1412 529 0 assert(in && out);
0 529 assert(in && out);
1415 0 529 GIT_ERROR_CHECK_ALLOC(name);
1420 529 0 if (fdot == NULL || fdot == name || ldot == NULL || !ldot[1])
529 0 if (fdot == NULL || fdot == name || ldot == NULL || !ldot[1])
529 0 if (fdot == NULL || fdot == name || ldot == NULL || !ldot[1])
529 0 if (fdot == NULL || fdot == name || ldot == NULL || !ldot[1])
1429 792 529 while (fdot < ldot)
1430 0 792 if (*fdot++ == '\n')
1456 2 2 if (base_len > 0 &&
2 0 if (base_len > 0 &&
1465 4 0 if (!error)
1483 0 3 if ((error = git_buf_puts(&pattern, "\\..+")) < 0)
1486 0 3 if ((error = git_repository_config__weakptr(&config, repo)) < 0)
1493 0 3 if ((error = git_buf_join(&replace, '.', new_section_name, "")) < 0)
1496 2 1 if (new_section_name != NULL &&
0 2 if (new_section_name != NULL &&
1516 0 0 GIT_INIT_STRUCTURE_FROM_TEMPLATE(