t / lib-read-tree.shon commit Merge branch 'uk/merge-subtree-doc-update' (5d8b3e5)
   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}