| From 6aed7c7ee8831ed08201cde54c3d79571b168ccf Mon Sep 17 00:00:00 2001 |
| From: Johannes Schindelin <johannes.schindelin@gmx.de> |
| Date: Sat, 12 May 2018 22:16:51 +0200 |
| Subject: is_{hfs,ntfs}_dotgitmodules: add tests |
| |
| commit dc2d9ba3187fcd0ca8eeab9aa9ddef70cf8627a6 upstream. |
| |
| This tests primarily for NTFS issues, but also adds one example of an |
| HFS+ issue. |
| |
| Thanks go to Congyi Wu for coming up with the list of examples where |
| NTFS would possibly equate the filename with `.gitmodules`. |
| |
| Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> |
| Signed-off-by: Jeff King <peff@peff.net> |
| Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> |
| --- |
| t/helper/test-path-utils.c | 20 +++++++++ |
| t/t0060-path-utils.sh | 86 ++++++++++++++++++++++++++++++++++++++ |
| 2 files changed, 106 insertions(+) |
| |
| diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c |
| index 1ebe0f750c..77517a43ed 100644 |
| --- a/t/helper/test-path-utils.c |
| +++ b/t/helper/test-path-utils.c |
| @@ -1,5 +1,6 @@ |
| #include "cache.h" |
| #include "string-list.h" |
| +#include "utf8.h" |
| |
| /* |
| * A "string_list_each_func_t" function that normalizes an entry from |
| @@ -156,6 +157,11 @@ static struct test_data dirname_data[] = { |
| { NULL, NULL } |
| }; |
| |
| +static int is_dotgitmodules(const char *path) |
| +{ |
| + return is_hfs_dotgitmodules(path) || is_ntfs_dotgitmodules(path); |
| +} |
| + |
| int cmd_main(int argc, const char **argv) |
| { |
| if (argc == 3 && !strcmp(argv[1], "normalize_path_copy")) { |
| @@ -256,6 +262,20 @@ int cmd_main(int argc, const char **argv) |
| if (argc == 2 && !strcmp(argv[1], "dirname")) |
| return test_function(dirname_data, dirname, argv[1]); |
| |
| + if (argc > 2 && !strcmp(argv[1], "is_dotgitmodules")) { |
| + int res = 0, expect = 1, i; |
| + for (i = 2; i < argc; i++) |
| + if (!strcmp("--not", argv[i])) |
| + expect = !expect; |
| + else if (expect != is_dotgitmodules(argv[i])) |
| + res = error("'%s' is %s.gitmodules", argv[i], |
| + expect ? "not " : ""); |
| + else |
| + fprintf(stderr, "ok: '%s' is %s.gitmodules\n", |
| + argv[i], expect ? "" : "not "); |
| + return !!res; |
| + } |
| + |
| fprintf(stderr, "%s: unknown function name: %s\n", argv[0], |
| argv[1] ? argv[1] : "(there was none)"); |
| return 1; |
| diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh |
| index 444b5a4df8..f2e58b4604 100755 |
| --- a/t/t0060-path-utils.sh |
| +++ b/t/t0060-path-utils.sh |
| @@ -347,4 +347,90 @@ test_submodule_relative_url "(null)" "ssh://hostname:22/repo" "../subrepo" "ssh: |
| test_submodule_relative_url "(null)" "user@host:path/to/repo" "../subrepo" "user@host:path/to/subrepo" |
| test_submodule_relative_url "(null)" "user@host:repo" "../subrepo" "user@host:subrepo" |
| |
| +test_expect_success 'match .gitmodules' ' |
| + test-path-utils is_dotgitmodules \ |
| + .gitmodules \ |
| + \ |
| + .git${u200c}modules \ |
| + \ |
| + .Gitmodules \ |
| + .gitmoduleS \ |
| + \ |
| + ".gitmodules " \ |
| + ".gitmodules." \ |
| + ".gitmodules " \ |
| + ".gitmodules. " \ |
| + ".gitmodules ." \ |
| + ".gitmodules.." \ |
| + ".gitmodules " \ |
| + ".gitmodules. " \ |
| + ".gitmodules . " \ |
| + ".gitmodules ." \ |
| + \ |
| + ".Gitmodules " \ |
| + ".Gitmodules." \ |
| + ".Gitmodules " \ |
| + ".Gitmodules. " \ |
| + ".Gitmodules ." \ |
| + ".Gitmodules.." \ |
| + ".Gitmodules " \ |
| + ".Gitmodules. " \ |
| + ".Gitmodules . " \ |
| + ".Gitmodules ." \ |
| + \ |
| + GITMOD~1 \ |
| + gitmod~1 \ |
| + GITMOD~2 \ |
| + gitmod~3 \ |
| + GITMOD~4 \ |
| + \ |
| + "GITMOD~1 " \ |
| + "gitmod~2." \ |
| + "GITMOD~3 " \ |
| + "gitmod~4. " \ |
| + "GITMOD~1 ." \ |
| + "gitmod~2 " \ |
| + "GITMOD~3. " \ |
| + "gitmod~4 . " \ |
| + \ |
| + GI7EBA~1 \ |
| + gi7eba~9 \ |
| + \ |
| + GI7EB~10 \ |
| + GI7EB~11 \ |
| + GI7EB~99 \ |
| + GI7EB~10 \ |
| + GI7E~100 \ |
| + GI7E~101 \ |
| + GI7E~999 \ |
| + ~1000000 \ |
| + ~9999999 \ |
| + \ |
| + --not \ |
| + ".gitmodules x" \ |
| + ".gitmodules .x" \ |
| + \ |
| + " .gitmodules" \ |
| + \ |
| + ..gitmodules \ |
| + \ |
| + gitmodules \ |
| + \ |
| + .gitmodule \ |
| + \ |
| + ".gitmodules x " \ |
| + ".gitmodules .x" \ |
| + \ |
| + GI7EBA~ \ |
| + GI7EBA~0 \ |
| + GI7EBA~~1 \ |
| + GI7EBA~X \ |
| + Gx7EBA~1 \ |
| + GI7EBX~1 \ |
| + \ |
| + GI7EB~1 \ |
| + GI7EB~01 \ |
| + GI7EB~1X |
| +' |
| + |
| test_done |
| -- |
| 2.17.0.921.gf22659ad46 |
| |