summaryrefslogtreecommitdiff
path: root/t/helper
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2018-07-20 16:33:25 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-07-20 22:38:56 (GMT)
commit1fee1242577ae23b32c33ff1122402bb228f2692 (patch)
tree3120c581683f0e34652c17ef9d3d8f9cce2541e0 /t/helper
parent1792bc125069e3e5b59f0158e259335a07aa7cf5 (diff)
downloadgit-1fee1242577ae23b32c33ff1122402bb228f2692.zip
git-1fee1242577ae23b32c33ff1122402bb228f2692.tar.gz
git-1fee1242577ae23b32c33ff1122402bb228f2692.tar.bz2
test-reach: test commit_contains
The commit_contains method has two modes which depend on the given ref_filter struct. We have the "normal" algorithm (which is also the typically-slow operation) and the "tag" algorithm. This difference is essentially what changes performance for 'git branch --contains' versus 'git tag --contains'. There are thoughts that the data shapes used by these two applications justify the different implementations. Create tests using 'test-tool reach commit_contains [--tag]' to cover both methods. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper')
-rw-r--r--t/helper/test-reach.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index c79729c..eb21103 100644
--- a/t/helper/test-reach.c
+++ b/t/helper/test-reach.c
@@ -4,6 +4,7 @@
#include "commit-reach.h"
#include "config.h"
#include "parse-options.h"
+#include "ref-filter.h"
#include "string-list.h"
#include "tag.h"
@@ -112,6 +113,17 @@ int cmd__reach(int ac, const char **av)
print_sorted_commit_ids(list);
} else if (!strcmp(av[1], "can_all_from_reach")) {
printf("%s(X,Y):%d\n", av[1], can_all_from_reach(X, Y, 1));
+ } else if (!strcmp(av[1], "commit_contains")) {
+ struct ref_filter filter;
+ struct contains_cache cache;
+ init_contains_cache(&cache);
+
+ if (ac > 2 && !strcmp(av[2], "--tag"))
+ filter.with_commit_tag_algo = 1;
+ else
+ filter.with_commit_tag_algo = 0;
+
+ printf("%s(_,A,X,_):%d\n", av[1], commit_contains(&filter, A, X, &cache));
}
exit(0);