1# Helper functions to check if read-tree would succeed/fail as expected with
2# and without the dry-run option. They also test that the dry-run does not
3# write the index and that together with -u it doesn't touch the work tree.
4#
5read_tree_must_succeed () {
6	git ls-files -s >pre-dry-run &&
7	git read-tree -n "$@" &&
8	git ls-files -s >post-dry-run &&
9	test_cmp pre-dry-run post-dry-run &&
10	git read-tree "$@"
11}
12
13read_tree_must_fail () {
14	git ls-files -s >pre-dry-run &&
15	test_must_fail git read-tree -n "$@" &&
16	git ls-files -s >post-dry-run &&
17	test_cmp pre-dry-run post-dry-run &&
18	test_must_fail git read-tree "$@"
19}
20
21read_tree_u_must_succeed () {
22	git ls-files -s >pre-dry-run &&
23	git diff-files -p >pre-dry-run-wt &&
24	git read-tree -n "$@" &&
25	git ls-files -s >post-dry-run &&
26	git diff-files -p >post-dry-run-wt &&
27	test_cmp pre-dry-run post-dry-run &&
28	test_cmp pre-dry-run-wt post-dry-run-wt &&
29	git read-tree "$@"
30}
31
32read_tree_u_must_fail () {
33	git ls-files -s >pre-dry-run &&
34	git diff-files -p >pre-dry-run-wt &&
35	test_must_fail git read-tree -n "$@" &&
36	git ls-files -s >post-dry-run &&
37	git diff-files -p >post-dry-run-wt &&
38	test_cmp pre-dry-run post-dry-run &&
39	test_cmp pre-dry-run-wt post-dry-run-wt &&
40	test_must_fail git read-tree "$@"
41}
42