diff options
| author | Daniel Ferreira <bnmvco@gmail.com> | 2019-07-10 20:58:57 -0300 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-07-11 13:52:15 -0700 |
| commit | 150791adbf1eb432af0b895d81eef5c2717aa6cc (patch) | |
| tree | 672c58235fc45bce91789b316ce0473da36dee05 /t/helper/test-dir-iterator.c | |
| parent | clone: better handle symlinked files at .git/objects/ (diff) | |
| download | git-150791adbf1eb432af0b895d81eef5c2717aa6cc.tar.gz git-150791adbf1eb432af0b895d81eef5c2717aa6cc.zip | |
dir-iterator: add tests for dir-iterator API
Create t/helper/test-dir-iterator.c, which prints relevant information
about a directory tree iterated over with dir-iterator.
Create t/t0066-dir-iterator.sh, which tests that dir-iterator does
iterate through a whole directory tree as expected.
Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
[matheus.bernardino: update to use test-tool and some minor aesthetics]
Helped-by: Matheus Tavares <matheus.bernardino@usp.br>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper/test-dir-iterator.c')
| -rw-r--r-- | t/helper/test-dir-iterator.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/t/helper/test-dir-iterator.c b/t/helper/test-dir-iterator.c new file mode 100644 index 0000000000..84f50bed8c --- /dev/null +++ b/t/helper/test-dir-iterator.c @@ -0,0 +1,33 @@ +#include "test-tool.h" +#include "git-compat-util.h" +#include "strbuf.h" +#include "iterator.h" +#include "dir-iterator.h" + +/* Argument is a directory path to iterate over */ +int cmd__dir_iterator(int argc, const char **argv) +{ + struct strbuf path = STRBUF_INIT; + struct dir_iterator *diter; + + if (argc < 2) + die("BUG: test-dir-iterator needs one argument"); + + strbuf_add(&path, argv[1], strlen(argv[1])); + + diter = dir_iterator_begin(path.buf); + + while (dir_iterator_advance(diter) == ITER_OK) { + if (S_ISDIR(diter->st.st_mode)) + printf("[d] "); + else if (S_ISREG(diter->st.st_mode)) + printf("[f] "); + else + printf("[?] "); + + printf("(%s) [%s] %s\n", diter->relative_path, diter->basename, + diter->path.buf); + } + + return 0; +} |
