aboutsummaryrefslogtreecommitdiffstats
path: root/t/helper/test-userdiff.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-04-20 17:23:34 -0700
committerJunio C Hamano <gitster@pobox.com>2021-04-20 17:23:34 -0700
commitab99efc817d463ddcd507a6457d33cd7643ed6dd (patch)
tree2b1597971df4d0e396e63e5c323f5c65281282fb /t/helper/test-userdiff.c
parentMerge branch 'ar/userdiff-scheme' (diff)
parentblame tests: simplify userdiff driver test (diff)
downloadgit-ab99efc817d463ddcd507a6457d33cd7643ed6dd.tar.gz
git-ab99efc817d463ddcd507a6457d33cd7643ed6dd.zip
Merge branch 'ab/userdiff-tests'
A bit of code clean-up and a lot of test clean-up around userdiff area. * ab/userdiff-tests: blame tests: simplify userdiff driver test blame tests: don't rely on t/t4018/ directory userdiff: remove support for "broken" tests userdiff tests: list builtin drivers via test-tool userdiff tests: explicitly test "default" pattern userdiff: add and use for_each_userdiff_driver() userdiff style: normalize pascal regex declaration userdiff style: declare patterns with consistent style userdiff style: re-order drivers in alphabetical order
Diffstat (limited to 't/helper/test-userdiff.c')
-rw-r--r--t/helper/test-userdiff.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/t/helper/test-userdiff.c b/t/helper/test-userdiff.c
new file mode 100644
index 0000000000..f013f8a31e
--- /dev/null
+++ b/t/helper/test-userdiff.c
@@ -0,0 +1,46 @@
+#include "test-tool.h"
+#include "cache.h"
+#include "userdiff.h"
+#include "config.h"
+
+static int driver_cb(struct userdiff_driver *driver,
+ enum userdiff_driver_type type, void *priv)
+{
+ enum userdiff_driver_type *want_type = priv;
+ if (type & *want_type && driver->funcname.pattern)
+ puts(driver->name);
+ return 0;
+}
+
+static int cmd__userdiff_config(const char *var, const char *value, void *cb)
+{
+ if (userdiff_config(var, value) < 0)
+ return -1;
+ return 0;
+}
+
+int cmd__userdiff(int argc, const char **argv)
+{
+ enum userdiff_driver_type want = 0;
+ if (argc != 2)
+ return 1;
+
+ if (!strcmp(argv[1], "list-drivers"))
+ want = (USERDIFF_DRIVER_TYPE_BUILTIN |
+ USERDIFF_DRIVER_TYPE_CUSTOM);
+ else if (!strcmp(argv[1], "list-builtin-drivers"))
+ want = USERDIFF_DRIVER_TYPE_BUILTIN;
+ else if (!strcmp(argv[1], "list-custom-drivers"))
+ want = USERDIFF_DRIVER_TYPE_CUSTOM;
+ else
+ return error("unknown argument %s", argv[1]);
+
+ if (want & USERDIFF_DRIVER_TYPE_CUSTOM) {
+ setup_git_directory();
+ git_config(cmd__userdiff_config, NULL);
+ }
+
+ for_each_userdiff_driver(driver_cb, &want);
+
+ return 0;
+}