#!/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
