Branch Coverage

deps/libgit2/src/libgit2/filter.c
Criterion Covered Total %
branch 194 366 53.0


line true false branch
59 4 91 return (pa < pb) ? -1 : (pa > pb) ? 1 : 0;
80 0 178 if (!scan)
83 352 178 while (*scan) {
84 174 352 while (git__isspace(*scan)) scan++;
86 1669 178 for (start = scan, has_eq = 0; *scan && !git__isspace(*scan); ++scan) {
1495 174 for (start = scan, has_eq = 0; *scan && !git__isspace(*scan); ++scan) {
87 0 1495 if (*scan == '=')
91 352 0 if (scan > start) {
93 352 0 if (has_eq || *start == '-' || *start == '+' || *start == '!')
352 0 if (has_eq || *start == '-' || *start == '+' || *start == '!')
265 87 if (has_eq || *start == '-' || *start == '+' || *start == '!')
0 265 if (has_eq || *start == '-' || *start == '+' || *start == '!')
96 0 352 if (has_eq)
111 352 178 for (i = 0; i < fdef->nattrs; ++i) {
117 0 0 for (scan++; *scan != '='; scan++) /* find '=' */;
141 29 0 fdef ? ((const git_filter_def *)fdef)->filter_name : NULL;
142 29 0 return name ? git__strcmp(key, name) : -1;
147 0 0 const void *filter = fdef ? ((const git_filter_def *)fdef)->filter : NULL;
148 0 0 return (key == filter) ? 0 : -1;
159 0 178 if (filter_def_scan_attrs(&attrs, &nattr, &nmatch, filter->attributes) < 0)
162 0 178 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloc_len, nattr, 2);
0 178 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloc_len, nattr, 2);
163 0 178 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloc_len, alloc_len, sizeof(char *));
0 178 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloc_len, alloc_len, sizeof(char *));
164 0 178 GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, sizeof(git_filter_def));
0 178 GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, sizeof(git_filter_def));
167 0 178 GIT_ERROR_CHECK_ALLOC(fdef);
170 0 178 GIT_ERROR_CHECK_ALLOC(fdef->filter_name);
180 0 178 if (git_vector_insert(&filter_registry.filters, fdef) < 0) {
196 0 87 if (git_rwlock_init(&filter_registry.lock) < 0)
199 0 87 if ((error = git_vector_init(&filter_registry.filters, 2,
205 87 0 GIT_FILTER_CRLF, crlf, GIT_FILTER_CRLF_PRIORITY) < 0 ||
206 0 87 (ident = git_ident_filter_new()) == NULL ||
211 87 0 if (!error)
215 0 87 if (error) {
228 0 0 if (git_rwlock_wrlock(&filter_registry.lock) < 0)
231 0 0 git_vector_foreach(&filter_registry.filters, pos, fdef) {
232 0 0 if (fdef->filter && fdef->filter->shutdown) {
0 0 if (fdef->filter && fdef->filter->shutdown) {
260 5 3 if (!filter_registry_find(pos, name))
272 0 4 GIT_ASSERT_ARG(name);
273 0 4 GIT_ASSERT_ARG(filter);
275 0 4 if (git_rwlock_wrlock(&filter_registry.lock) < 0) {
280 0 4 if (!filter_registry_find(NULL, name)) {
300 0 4 GIT_ASSERT_ARG(name);
303 4 0 if (!strcmp(GIT_FILTER_CRLF, name) || !strcmp(GIT_FILTER_IDENT, name)) {
0 4 if (!strcmp(GIT_FILTER_CRLF, name) || !strcmp(GIT_FILTER_IDENT, name)) {
308 0 4 if (git_rwlock_wrlock(&filter_registry.lock) < 0) {
313 0 4 if ((fdef = filter_registry_lookup(&pos, name)) == NULL) {
321 4 0 if (fdef->initialized && fdef->filter && fdef->filter->shutdown) {
4 0 if (fdef->initialized && fdef->filter && fdef->filter->shutdown) {
2 2 if (fdef->initialized && fdef->filter && fdef->filter->shutdown) {
339 18 0 if (!fdef->initialized && fdef->filter && fdef->filter->initialize) {
18 0 if (!fdef->initialized && fdef->filter && fdef->filter->initialize) {
1 17 if (!fdef->initialized && fdef->filter && fdef->filter->initialize) {
340 0 1 if ((error = fdef->filter->initialize(fdef->filter)) < 0)
354 0 4 if (git_rwlock_rdlock(&filter_registry.lock) < 0) {
359 1 3 if ((fdef = filter_registry_lookup(&pos, name)) == NULL ||
0 1 if ((fdef = filter_registry_lookup(&pos, name)) == NULL ||
360 0 0 (!fdef->initialized && filter_initialize(fdef) < 0))
392 0 1 return git_oid_is_zero(&src->oid) ? NULL : &src->oid;
409 71 0 size_t pathlen = src->path ? strlen(src->path) : 0, alloclen;
411 0 71 GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_filter_list), pathlen);
0 71 GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_filter_list), pathlen);
412 0 71 GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
0 71 GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
415 0 71 GIT_ERROR_CHECK_ALLOC(fl);
417 71 0 if (src->path)
441 0 527 GIT_ERROR_CHECK_ALLOC(strs);
443 0 527 if ((src->options.flags & GIT_FILTER_NO_SYSTEM_ATTRIBUTES) != 0)
446 0 527 if ((src->options.flags & GIT_FILTER_ATTRIBUTES_FROM_HEAD) != 0)
449 0 527 if ((src->options.flags & GIT_FILTER_ATTRIBUTES_FROM_COMMIT) != 0) {
453 0 0 if (src->options.commit_id)
464 0 527 if (error == GIT_ENOTFOUND && !fdef->nmatches) {
0 0 if (error == GIT_ENOTFOUND && !fdef->nmatches) {
470 1314 260 for (i = 0; !error && i < fdef->nattrs; ++i) {
1047 267 for (i = 0; !error && i < fdef->nattrs; ++i) {
474 787 260 if (!want)
480 260 0 if (want_type != found_type)
482 0 0 else if (want_type == GIT_ATTR_VALUE_STRING &&
0 0 else if (want_type == GIT_ATTR_VALUE_STRING &&
483 0 0 strcmp(want, strs[i]) &&
488 260 267 if (error)
525 0 260 if (git_rwlock_rdlock(&filter_registry.lock) < 0) {
536 31 229 if (blob)
539 527 260 git_vector_foreach(&filter_registry.filters, idx, fdef) {
543 527 0 if (!fdef || !fdef->filter)
0 527 if (!fdef || !fdef->filter)
546 527 0 if (fdef->nattrs > 0) {
551 260 267 if (error == GIT_ENOTFOUND) {
554 0 267 } else if (error < 0)
558 18 249 if (!fdef->initialized && (error = filter_initialize(fdef)) < 0)
0 18 if (!fdef->initialized && (error = filter_initialize(fdef)) < 0)
561 265 2 if (fdef->filter->check)
567 192 75 if (error == GIT_PASSTHROUGH)
569 0 75 else if (error < 0)
572 71 4 if (!fl) {
573 0 71 if ((error = filter_list_new(&fl, &src)) < 0)
579 71 4 fe = git_array_alloc(fl->filters);
71 0 fe = git_array_alloc(fl->filters);
580 0 75 GIT_ERROR_CHECK_ALLOC(fe);
590 0 260 if (error && fl != NULL) {
0 0 if (error && fl != NULL) {
610 0 0 if (opts)
637 142 71 if (!fl)
640 75 71 for (i = 0; i < git_array_size(fl->filters); ++i) {
641 75 0 git_filter_entry *fe = git_array_get(fl->filters, i);
642 72 3 if (fe->filter->cleanup)
656 0 0 GIT_ASSERT_ARG(name);
658 0 0 if (!fl)
661 0 0 for (i = 0; i < fl->filters.size; i++) {
662 0 0 if (strcmp(fl->filters.ptr[i].filter_name, name) == 0)
677 0 0 GIT_ASSERT_ARG(fl);
678 0 0 GIT_ASSERT_ARG(filter);
680 0 0 if (git_rwlock_rdlock(&filter_registry.lock) < 0) {
685 0 0 if (git_vector_search2(
692 0 0 if (fdef == NULL) {
697 0 0 if (!fdef->initialized && (error = filter_initialize(fdef)) < 0)
0 0 if (!fdef->initialized && (error = filter_initialize(fdef)) < 0)
700 0 0 fe = git_array_alloc(fl->filters);
0 0 fe = git_array_alloc(fl->filters);
701 0 0 GIT_ERROR_CHECK_ALLOC(fe);
710 40 0 return fl ? git_array_size(fl->filters) : 0;
723 0 63 GIT_ASSERT_ARG(buf_stream);
724 0 63 GIT_ASSERT(buf_stream->complete == 0);
732 0 63 GIT_ASSERT_ARG(buf_stream);
734 0 63 GIT_ASSERT(buf_stream->complete == 0);
763 2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_buffer, filters, in, in_len);
2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_buffer, filters, in, in_len);
777 0 42 if ((error = git_filter_list_stream_buffer(filters,
781 0 42 GIT_ASSERT(writer.complete);
792 40 2 if (!filters || git_filter_list_length(filters) == 0) {
0 40 if (!filters || git_filter_list_length(filters) == 0) {
801 40 0 if (!error)
813 2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_file, filters, repo, path);
2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_file, filters, repo, path);
827 2 17 if ((error = git_filter_list_stream_file(
831 0 17 GIT_ASSERT(writer.complete);
839 0 33 if (!git__is_sizet(rawsize)) {
853 2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_blob, filters, blob);
2 0 GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_blob, filters, blob);
866 0 2 if ((error = git_filter_list_stream_blob(
870 0 2 GIT_ASSERT(writer.complete);
891 0 77 GIT_ASSERT_ARG(buffered_stream);
914 0 79 GIT_ASSERT_ARG(buffered_stream);
917 4 75 if (buffered_stream->write_fn == NULL) {
942 69 10 if (error == GIT_PASSTHROUGH) {
944 8 2 } else if (error == 0) {
955 77 0 if ((error = buffered_stream->target->write(
966 79 0 if (buffered_stream) {
983 0 75 GIT_ERROR_CHECK_ALLOC(buffered_stream);
990 75 0 buffered_stream->output = temp_buf ? temp_buf : &buffered_stream->temp_buf;
995 0 75 if (temp_buf)
1013 0 4 GIT_ERROR_CHECK_ALLOC(buffered_stream);
1020 3 1 buffered_stream->output = temp_buf ? temp_buf : &buffered_stream->temp_buf;
1025 1 3 if (temp_buf)
1040 4 75 GIT_ASSERT(fe->filter->stream || fe->filter->apply);
0 4 GIT_ASSERT(fe->filter->stream || fe->filter->apply);
1046 4 75 if (!fe->filter->stream) {
1054 0 75 GIT_ASSERT(fe->filter->stream);
1071 19 75 if (!filters) {
1077 79 75 for (i = 0; i < git_array_size(filters->filters); ++i) {
1079 17 62 git_array_size(filters->filters) - 1 - i : i;
1081 79 0 git_filter_entry *fe = git_array_get(filters->filters, filter_idx);
1086 0 79 if (error < 0)
1094 0 75 if (error)
1107 79 94 git_vector_foreach(streams, i, stream)
1120 19 0 const char *base = repo ? git_repository_workdir(repo) : NULL;
1126 19 0 if ((error = stream_list_init(
1127 19 0 &stream_start, &filter_streams, filters, target)) < 0 ||
1128 19 0 (error = git_fs_path_join_unrooted(&abspath, path, base, NULL)) < 0 ||
1134 0 19 if ((fd = git_futils_open_ro(abspath.ptr)) < 0) {
1139 19 19 while ((readlen = p_read(fd, buf, sizeof(buf))) > 0) {
1140 0 19 if ((error = stream_start->write(stream_start, buf, readlen)) < 0)
1144 0 19 if (readlen < 0)
1148 19 0 if (initialized)
1151 19 0 if (fd >= 0)
1168 0 75 if ((error = stream_list_init(&stream_start, &filter_streams, filters, target)) < 0)
1172 0 75 if ((error = stream_start->write(stream_start, buffer, len)) < 0)
1176 75 0 if (initialized)
1190 0 33 if (buf_from_blob(&in, blob) < 0)
1193 14 19 if (filters)
1201 0 0 GIT_INIT_STRUCTURE_FROM_TEMPLATE(filter, version, git_filter, GIT_FILTER_INIT);