#!/bin/sh # # Copyright (c) 2006 Yann Dirson, based on t3400 by Amos Waterland # global test_description := ''git cherry should detect patches integrated upstream This test cherry-picks one local change of two into master branch, and checks that git cherry only returns the second patch in the local branch '' source ./test-lib.sh global GIT_AUTHOR_EMAIL := 'bogus_email_address' export GIT_AUTHOR_EMAIL test_expect_success \ 'prepare repository with topic branch, and check cherry finds the 2 patches from there' \ 'echo First > A && git update-index --add A && test_tick && git commit -m "Add A." && git checkout -b my-topic-branch && echo Second > B && git update-index --add B && test_tick && git commit -m "Add B." && echo AnotherSecond > C && git update-index --add C && test_tick && git commit -m "Add C." && git checkout -f master && rm -f B C && echo Third >> A && git update-index A && test_tick && git commit -m "Modify A." && expr "$(echo $(git cherry master my-topic-branch) )" : "+ [^ ]* + .*" ' test_expect_success \ 'check that cherry with limit returns only the top patch'\ 'expr "$(echo $(git cherry master my-topic-branch my-topic-branch^1) )" : "+ [^ ]*" ' test_expect_success \ 'cherry-pick one of the 2 patches, and check cherry recognized one and only one as new' \ 'git cherry-pick my-topic-branch^0 && echo $(git cherry master my-topic-branch) && expr "$(echo $(git cherry master my-topic-branch) )" : "+ [^ ]* - .*" ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"git cherry should detect patches integrated upstream\n"> <"\n"> <"This test cherry-picks one local change of two into master branch, and\n"> <"checks that git cherry only returns the second patch in the local branch\n"> ) } spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_AUTHOR_EMAIL) op: Equal rhs: {(bogus_email_address)} spids: [26] ) ] spids: [26] ) (C {(export)} {(GIT_AUTHOR_EMAIL)}) (C {(test_expect_success)} { (SQ <"prepare repository with topic branch, and check cherry finds the 2 patches from there">) } { (SQ <"echo First > A &&\n"> <" git update-index --add A &&\n"> <" test_tick &&\n"> <" git commit -m \"Add A.\" &&\n"> <"\n"> <" git checkout -b my-topic-branch &&\n"> <"\n"> <" echo Second > B &&\n"> <" git update-index --add B &&\n"> <" test_tick &&\n"> <" git commit -m \"Add B.\" &&\n"> <"\n"> <" echo AnotherSecond > C &&\n"> <" git update-index --add C &&\n"> <" test_tick &&\n"> <" git commit -m \"Add C.\" &&\n"> <"\n"> <" git checkout -f master &&\n"> <" rm -f B C &&\n"> <"\n"> <" echo Third >> A &&\n"> <" git update-index A &&\n"> <" test_tick &&\n"> <" git commit -m \"Modify A.\" &&\n"> <"\n"> <" expr \"$(echo $(git cherry master my-topic-branch) )\" : \"+ [^ ]* + .*\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check that cherry with limit returns only the top patch">)} { (SQ < "expr \"$(echo $(git cherry master my-topic-branch my-topic-branch^1) )\" : \"+ [^ ]*\"\n" > ) } ) (C {(test_expect_success)} { (SQ <"cherry-pick one of the 2 patches, and check cherry recognized one and only one as new">) } { (SQ <"git cherry-pick my-topic-branch^0 &&\n"> <" echo $(git cherry master my-topic-branch) &&\n"> <" expr \"$(echo $(git cherry master my-topic-branch) )\" : \"+ [^ ]* - .*\"\n"> ) } ) (C {(test_done)}) ] )