]>
Commit | Line | Data |
---|---|---|
b91db270 YD |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Yann Dirson, based on t3400 by Amos Waterland | |
4 | # | |
5 | ||
5be60078 | 6 | test_description='git cherry should detect patches integrated upstream |
b91db270 | 7 | |
cbc75a12 | 8 | This test cherry-picks one local change of two into main branch, and |
5be60078 | 9 | checks that git cherry only returns the second patch in the local branch |
b91db270 | 10 | ' |
cbc75a12 | 11 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
12 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
13 | ||
b91db270 YD |
14 | . ./test-lib.sh |
15 | ||
0e46e704 BD |
16 | GIT_AUTHOR_EMAIL=bogus_email_address |
17 | export GIT_AUTHOR_EMAIL | |
b91db270 | 18 | |
0a6cb5c4 JC |
19 | test_expect_success 'prepare repository with topic branch, and check cherry finds the 2 patches from there' ' |
20 | echo First > A && | |
21 | git update-index --add A && | |
22 | test_tick && | |
23 | git commit -m "Add A." && | |
24 | ||
25 | git checkout -b my-topic-branch && | |
26 | ||
27 | echo Second > B && | |
28 | git update-index --add B && | |
29 | test_tick && | |
30 | git commit -m "Add B." && | |
31 | ||
32 | echo AnotherSecond > C && | |
33 | git update-index --add C && | |
34 | test_tick && | |
35 | git commit -m "Add C." && | |
36 | ||
37 | git checkout -f main && | |
38 | rm -f B C && | |
39 | ||
40 | echo Third >> A && | |
41 | git update-index A && | |
42 | test_tick && | |
43 | git commit -m "Modify A." && | |
44 | ||
45 | expr "$(echo $(git cherry main my-topic-branch) )" : "+ [^ ]* + .*" | |
b91db270 YD |
46 | ' |
47 | ||
0a6cb5c4 JC |
48 | test_expect_success 'check that cherry with limit returns only the top patch' ' |
49 | expr "$(echo $(git cherry main my-topic-branch my-topic-branch^1) )" : "+ [^ ]*" | |
b91db270 YD |
50 | ' |
51 | ||
0a6cb5c4 JC |
52 | test_expect_success 'cherry-pick one of the 2 patches, and check cherry recognized one and only one as new' ' |
53 | git cherry-pick my-topic-branch^0 && | |
54 | echo $(git cherry main my-topic-branch) && | |
55 | expr "$(echo $(git cherry main my-topic-branch) )" : "+ [^ ]* - .*" | |
b91db270 YD |
56 | ' |
57 | ||
82a62015 RS |
58 | test_expect_success 'cherry ignores whitespace' ' |
59 | git switch --orphan=upstream-with-space && | |
60 | test_commit initial file && | |
61 | >expect && | |
62 | git switch --create=feature-without-space && | |
63 | ||
64 | # A spaceless file on the feature branch. Expect a match upstream. | |
65 | printf space >file && | |
66 | git add file && | |
67 | git commit -m"file without space" && | |
68 | git log --format="- %H" -1 >>expect && | |
69 | ||
70 | # A further change. Should not match upstream. | |
71 | test_commit change file && | |
72 | git log --format="+ %H" -1 >>expect && | |
73 | ||
74 | git switch upstream-with-space && | |
75 | # Same as the spaceless file, just with spaces and on upstream. | |
76 | test_commit "file with space" file "s p a c e" file-with-space && | |
77 | git cherry upstream-with-space feature-without-space >actual && | |
78 | test_cmp expect actual | |
79 | ' | |
80 | ||
b91db270 | 81 | test_done |