t / t4057-diff-combined-paths.shon commit t7510: invoke git as part of &&-chain (41a74bd)
   1#!/bin/sh
   2
   3test_description='combined diff show only paths that are different to all parents'
   4
   5. ./test-lib.sh
   6
   7# verify that diffc.expect matches output of
   8# $(git diff -c --name-only HEAD HEAD^ HEAD^2)
   9diffc_verify () {
  10        git diff -c --name-only HEAD HEAD^ HEAD^2 >diffc.actual &&
  11        test_cmp diffc.expect diffc.actual
  12}
  13
  14test_expect_success 'trivial merge - combine-diff empty' '
  15        for i in $(test_seq 1 9)
  16        do
  17                echo $i >$i.txt &&
  18                git add $i.txt
  19        done &&
  20        git commit -m "init" &&
  21        git checkout -b side &&
  22        for i in $(test_seq 2 9)
  23        do
  24                echo $i/2 >>$i.txt
  25        done &&
  26        git commit -a -m "side 2-9" &&
  27        git checkout master &&
  28        echo 1/2 >1.txt &&
  29        git commit -a -m "master 1" &&
  30        git merge side &&
  31        >diffc.expect &&
  32        diffc_verify
  33'
  34
  35
  36test_expect_success 'only one trully conflicting path' '
  37        git checkout side &&
  38        for i in $(test_seq 2 9)
  39        do
  40                echo $i/3 >>$i.txt
  41        done &&
  42        echo "4side" >>4.txt &&
  43        git commit -a -m "side 2-9 +4" &&
  44        git checkout master &&
  45        for i in $(test_seq 1 9)
  46        do
  47                echo $i/3 >>$i.txt
  48        done &&
  49        echo "4master" >>4.txt &&
  50        git commit -a -m "master 1-9 +4" &&
  51        test_must_fail git merge side &&
  52        cat <<-\EOF >4.txt &&
  53        4
  54        4/2
  55        4/3
  56        4master
  57        4side
  58        EOF
  59        git add 4.txt &&
  60        git commit -m "merge side (2)" &&
  61        echo 4.txt >diffc.expect &&
  62        diffc_verify
  63'
  64
  65test_expect_success 'merge introduces new file' '
  66        git checkout side &&
  67        for i in $(test_seq 5 9)
  68        do
  69                echo $i/4 >>$i.txt
  70        done &&
  71        git commit -a -m "side 5-9" &&
  72        git checkout master &&
  73        for i in $(test_seq 1 3)
  74        do
  75                echo $i/4 >>$i.txt
  76        done &&
  77        git commit -a -m "master 1-3 +4hello" &&
  78        git merge side &&
  79        echo "Hello World" >4hello.txt &&
  80        git add 4hello.txt &&
  81        git commit --amend &&
  82        echo 4hello.txt >diffc.expect &&
  83        diffc_verify
  84'
  85
  86test_expect_success 'merge removed a file' '
  87        git checkout side &&
  88        for i in $(test_seq 5 9)
  89        do
  90                echo $i/5 >>$i.txt
  91        done &&
  92        git commit -a -m "side 5-9" &&
  93        git checkout master &&
  94        for i in $(test_seq 1 3)
  95        do
  96                echo $i/4 >>$i.txt
  97        done &&
  98        git commit -a -m "master 1-3" &&
  99        git merge side &&
 100        git rm 4.txt &&
 101        git commit --amend &&
 102        echo 4.txt >diffc.expect &&
 103        diffc_verify
 104'
 105
 106test_done