Code

Merge branch 'ph/rerere-doc' into maint-1.7.8
[git.git] / t / t4023-diff-rename-typechange.sh
1 #!/bin/sh
3 test_description='typechange rename detection'
5 . ./test-lib.sh
7 test_expect_success SYMLINKS setup '
9         rm -f foo bar &&
10         cat "$TEST_DIRECTORY"/../COPYING >foo &&
11         ln -s linklink bar &&
12         git add foo bar &&
13         git commit -a -m Initial &&
14         git tag one &&
16         rm -f foo bar &&
17         cat "$TEST_DIRECTORY"/../COPYING >bar &&
18         ln -s linklink foo &&
19         git add foo bar &&
20         git commit -a -m Second &&
21         git tag two &&
23         rm -f foo bar &&
24         cat "$TEST_DIRECTORY"/../COPYING >foo &&
25         git add foo &&
26         git commit -a -m Third &&
27         git tag three &&
29         mv foo bar &&
30         ln -s linklink foo &&
31         git add foo bar &&
32         git commit -a -m Fourth &&
33         git tag four &&
35         # This is purely for sanity check
37         rm -f foo bar &&
38         cat "$TEST_DIRECTORY"/../COPYING >foo &&
39         cat "$TEST_DIRECTORY"/../Makefile >bar &&
40         git add foo bar &&
41         git commit -a -m Fifth &&
42         git tag five &&
44         rm -f foo bar &&
45         cat "$TEST_DIRECTORY"/../Makefile >foo &&
46         cat "$TEST_DIRECTORY"/../COPYING >bar &&
47         git add foo bar &&
48         git commit -a -m Sixth &&
49         git tag six
51 '
53 test_expect_success SYMLINKS 'cross renames to be detected for regular files' '
55         git diff-tree five six -r --name-status -B -M | sort >actual &&
56         {
57                 echo "R100      foo     bar"
58                 echo "R100      bar     foo"
59         } | sort >expect &&
60         test_cmp expect actual
62 '
64 test_expect_success SYMLINKS 'cross renames to be detected for typechange' '
66         git diff-tree one two -r --name-status -B -M | sort >actual &&
67         {
68                 echo "R100      foo     bar"
69                 echo "R100      bar     foo"
70         } | sort >expect &&
71         test_cmp expect actual
73 '
75 test_expect_success SYMLINKS 'moves and renames' '
77         git diff-tree three four -r --name-status -B -M | sort >actual &&
78         {
79                 echo "R100      foo     bar"
80                 echo "T100      foo"
81         } | sort >expect &&
82         test_cmp expect actual
84 '
86 test_done