summaryrefslogtreecommitdiff
path: root/t/helper/test-parse-pathspec-file.c
diff options
context:
space:
mode:
authorAlexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>2019-12-31 10:15:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-01-15 20:14:20 (GMT)
commitd0d0a357a18c5ce2e9586db28de753309e19f282 (patch)
treee6fd3bd83be71f8ec32b3797092a8a5ad3b69022 /t/helper/test-parse-pathspec-file.c
parent568cabb2fed8e5e61057ac678a70a565dffd0763 (diff)
downloadgit-d0d0a357a18c5ce2e9586db28de753309e19f282.zip
git-d0d0a357a18c5ce2e9586db28de753309e19f282.tar.gz
git-d0d0a357a18c5ce2e9586db28de753309e19f282.tar.bz2
t: directly test parse_pathspec_file()
Previously, `parse_pathspec_file()` was tested indirectly by invoking git commands with properly crafted inputs. As demonstrated by the previous bugfix, testing complicated black boxes indirectly can lead to tests that silently test the wrong thing. Introduce direct tests for `parse_pathspec_file()`. Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper/test-parse-pathspec-file.c')
-rw-r--r--t/helper/test-parse-pathspec-file.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/t/helper/test-parse-pathspec-file.c b/t/helper/test-parse-pathspec-file.c
new file mode 100644
index 0000000..02f4ccf
--- /dev/null
+++ b/t/helper/test-parse-pathspec-file.c
@@ -0,0 +1,33 @@
+#include "test-tool.h"
+#include "parse-options.h"
+#include "pathspec.h"
+#include "gettext.h"
+
+int cmd__parse_pathspec_file(int argc, const char **argv)
+{
+ struct pathspec pathspec;
+ const char *pathspec_from_file = 0;
+ int pathspec_file_nul = 0, i;
+
+ static const char *const usage[] = {
+ "test-tool parse-pathspec-file --pathspec-from-file [--pathspec-file-nul]",
+ NULL
+ };
+
+ struct option options[] = {
+ OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
+ OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
+ OPT_END()
+ };
+
+ parse_options(argc, argv, 0, options, usage, 0);
+
+ parse_pathspec_file(&pathspec, 0, 0, 0, pathspec_from_file,
+ pathspec_file_nul);
+
+ for (i = 0; i < pathspec.nr; i++)
+ printf("%s\n", pathspec.items[i].original);
+
+ clear_pathspec(&pathspec);
+ return 0;
+}