1#!/bin/sh
2
3test_description='git apply handling criss-cross rename patch.'
4. ./test-lib.sh
5
6create_file() {
7 cnt=0
8 while test $cnt -le 100
9 do
10 cnt=$(($cnt + 1))
11 echo "$2" >> "$1"
12 done
13}
14
15test_expect_success 'setup' '
16 create_file file1 "File1 contents" &&
17 create_file file2 "File2 contents" &&
18 create_file file3 "File3 contents" &&
19 git add file1 file2 file3 &&
20 git commit -m 1
21'
22
23test_expect_success 'criss-cross rename' '
24 mv file1 tmp &&
25 mv file2 file1 &&
26 mv tmp file2 &&
27 cp file1 file1-swapped &&
28 cp file2 file2-swapped
29'
30
31test_expect_success 'diff -M -B' '
32 git diff -M -B > diff &&
33 git reset --hard
34
35'
36
37test_expect_success 'apply' '
38 git apply diff &&
39 test_cmp file1 file1-swapped &&
40 test_cmp file2 file2-swapped
41'
42
43test_expect_success 'criss-cross rename' '
44 git reset --hard &&
45 mv file1 tmp &&
46 mv file2 file1 &&
47 mv file3 file2 &&
48 mv tmp file3 &&
49 cp file1 file1-swapped &&
50 cp file2 file2-swapped &&
51 cp file3 file3-swapped
52'
53
54test_expect_success 'diff -M -B' '
55 git diff -M -B > diff &&
56 git reset --hard
57'
58
59test_expect_success 'apply' '
60 git apply diff &&
61 test_cmp file1 file1-swapped &&
62 test_cmp file2 file2-swapped &&
63 test_cmp file3 file3-swapped
64'
65
66test_done