diff --git a/t/t1010-mktree.sh b/t/t1010-mktree.sh index cecba55d451f2d..42f72acabc3268 100755 --- a/t/t1010-mktree.sh +++ b/t/t1010-mktree.sh @@ -117,4 +117,77 @@ test_expect_success PIPE 'mktree --batch survives a concurrent repack retiring a ) ' +test_expect_success 'mktree --batch writes one tree per input block' ' + { + cat top && + echo && + cat top.withsub + } >input && + cat tree tree.withsub >expect && + git mktree --batch actual && + test_cmp expect actual +' + +test_expect_success 'mktree --batch ignores a trailing blank line' ' + { + cat top && + echo && + cat top.withsub && + echo + } >input && + cat tree tree.withsub >expect && + git mktree --batch actual && + test_cmp expect actual +' + +test_expect_success 'mktree --batch: two blank lines give an empty tree' ' + { + cat top && + echo && + echo && + cat top.withsub + } >input && + { + cat tree && + git mktree expect && + git mktree --batch actual && + test_cmp expect actual +' + +test_expect_success 'mktree rejects a blank line without --batch' ' + { + cat top && + echo && + cat top.withsub + } >input && + test_must_fail git mktree err && + test_grep "blank line only valid in batch mode" err +' + +test_expect_success 'mktree --batch -z reads NUL-terminated input' ' + { + git ls-tree -z $(cat tree) && + printf "\0" && + git ls-tree -z $(cat tree.withsub) + } >input && + cat tree tree.withsub >expect && + git mktree --batch -z actual && + test_cmp expect actual +' + +test_expect_success 'mktree --batch stops at a tree with a missing object' ' + missing=$(test_oid deadbeef) && + { + cat top && + echo && + printf "100644 blob %s\tmissing\n" "$missing" && + echo && + cat top.withsub + } >input && + test_must_fail git mktree --batch actual && + test_cmp tree actual +' + test_done