Browse Source
Change the userdiff test to list the builtin drivers via the test-tool, using the new for_each_userdiff_driver() API function. This gets rid of the need to modify this part of the test every time a new pattern is added, seemaint2ff6c34612
(userdiff: support Bash, 2020-10-22) and09dad9256a
(userdiff: support Markdown, 2020-05-02) for two recent examples. I only need the "list-builtin-drivers "argument here, but let's add "list-custom-drivers" and "list-drivers" too, just because it's easy. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>


5 changed files with 68 additions and 27 deletions
@ -0,0 +1,46 @@
@@ -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; |
||||
} |
Loading…
Reference in new issue