Merge branch 'js/run-command-updates' (early part)
[git] / t / t3501-revert-cherry-pick.sh
1 #!/bin/sh
2
3 test_description='test cherry-pick and revert with renames
4
5   --
6    + rename2: renames oops to opos
7   +  rename1: renames oops to spoo
8   +  added:   adds extra line to oops
9   ++ initial: has lines in oops
10
11 '
12
13 . ./test-lib.sh
14
15 test_expect_success setup '
16
17         for l in a b c d e f g h i j k l m n o
18         do
19                 echo $l$l$l$l$l$l$l$l$l
20         done >oops &&
21
22         test_tick &&
23         git add oops &&
24         git commit -m initial &&
25         git tag initial &&
26
27         test_tick &&
28         echo "Add extra line at the end" >>oops &&
29         git commit -a -m added &&
30         git tag added &&
31
32         test_tick &&
33         git mv oops spoo &&
34         git commit -m rename1 &&
35         git tag rename1 &&
36
37         test_tick &&
38         git checkout -b side initial &&
39         git mv oops opos &&
40         git commit -m rename2 &&
41         git tag rename2
42 '
43
44 test_expect_success 'cherry-pick after renaming branch' '
45
46         git checkout rename2 &&
47         git cherry-pick added &&
48         test $(git rev-parse HEAD^) = $(git rev-parse rename2) &&
49         test -f opos &&
50         grep "Add extra line at the end" opos
51
52 '
53
54 test_expect_success 'revert after renaming branch' '
55
56         git checkout rename1 &&
57         git revert added &&
58         test $(git rev-parse HEAD^) = $(git rev-parse rename1) &&
59         test -f spoo &&
60         ! grep "Add extra line at the end" spoo
61
62 '
63
64 test_expect_success 'revert forbidden on dirty working tree' '
65
66         echo content >extra_file &&
67         git add extra_file &&
68         test_must_fail git revert HEAD 2>errors &&
69         grep "Dirty index" errors
70
71 '
72
73 test_done