| #!/bin/sh |
| |
| test_description='rev-list testing in-commit-order' |
| |
| TEST_PASSES_SANITIZE_LEAK=true |
| . ./test-lib.sh |
| |
| test_expect_success 'setup a commit history with trees, blobs' ' |
| for x in one two three four |
| do |
| echo $x >$x && |
| git add $x && |
| git commit -m "add file $x" || |
| return 1 |
| done && |
| for x in four three |
| do |
| git rm $x && |
| git commit -m "remove $x" || |
| return 1 |
| done |
| ' |
| |
| test_expect_success 'rev-list --in-commit-order' ' |
| git rev-list --in-commit-order --objects HEAD >actual.raw && |
| cut -d" " -f1 >actual <actual.raw && |
| |
| git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && |
| HEAD^{commit} |
| HEAD^{tree} |
| HEAD^{tree}:one |
| HEAD^{tree}:two |
| HEAD~1^{commit} |
| HEAD~1^{tree} |
| HEAD~1^{tree}:three |
| HEAD~2^{commit} |
| HEAD~2^{tree} |
| HEAD~2^{tree}:four |
| HEAD~3^{commit} |
| # HEAD~3^{tree} skipped, same as HEAD~1^{tree} |
| HEAD~4^{commit} |
| # HEAD~4^{tree} skipped, same as HEAD^{tree} |
| HEAD~5^{commit} |
| HEAD~5^{tree} |
| EOF |
| grep -v "#" >expect <expect.raw && |
| |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'rev-list lists blobs and trees after commits' ' |
| git rev-list --objects HEAD >actual.raw && |
| cut -d" " -f1 >actual <actual.raw && |
| |
| git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && |
| HEAD^{commit} |
| HEAD~1^{commit} |
| HEAD~2^{commit} |
| HEAD~3^{commit} |
| HEAD~4^{commit} |
| HEAD~5^{commit} |
| HEAD^{tree} |
| HEAD^{tree}:one |
| HEAD^{tree}:two |
| HEAD~1^{tree} |
| HEAD~1^{tree}:three |
| HEAD~2^{tree} |
| HEAD~2^{tree}:four |
| # HEAD~3^{tree} skipped, same as HEAD~1^{tree} |
| # HEAD~4^{tree} skipped, same as HEAD^{tree} |
| HEAD~5^{tree} |
| EOF |
| grep -v "#" >expect <expect.raw && |
| |
| test_cmp expect actual |
| ' |
| |
| test_done |