blob: cfec6960a29fba3793fdd1d57f2923893bfcab2c [file] [log] [blame]
#!/bin/sh
#
# Copyright (c) 2006 Yann Dirson
#
test_description='Exercise pushing patches applied upstream.
Especially, consider the case of a patch that adds a file, while a
subsequent one modifies it, so we have to use --merged for push to
detect the merge. Reproduce the common workflow where one does not
specify --merged, then rollback and retry with the correct flag.'
. ./test-lib.sh
# don't need this repo, but better not drop it, see t1100
#rm -rf .git
# Need a repo to clone
test_create_repo foo
test_expect_success \
'Clone tree and setup changes' '
stg clone foo bar &&
(
cd bar && stg new p1 -m p1 &&
printf "a\nc\n" > file && stg add file && stg refresh &&
stg new p2 -m p2 &&
printf "a\nb\nc\n" > file && stg refresh &&
[ "$(echo $(stg applied))" = "p1 p2" ] &&
[ "$(echo $(stg unapplied))" = "" ]
)
'
test_expect_success \
'Port those patches to orig tree' '
(
cd foo &&
GIT_DIR=../bar/.git git-format-patch --stdout \
$(cd ../bar && stg id base@master)..HEAD | git-am -3 -k
)
'
test_expect_success \
'Pull to sync with parent, preparing for the problem' \
"(cd bar && stg pop --all &&
stg pull
)
"
test_expect_success \
'Attempt to push the first of those patches without --merged' \
"(cd bar && ! stg push
)
"
test_expect_success \
'Rollback the push' '
(
cd bar && stg push --undo &&
[ "$(echo $(stg applied))" = "" ] &&
[ "$(echo $(stg unapplied))" = "p1 p2" ]
)
'
test_expect_success \
'Push those patches while checking they were merged upstream' '
(
cd bar && stg push --merged --all
[ "$(echo $(stg applied))" = "p1 p2" ] &&
[ "$(echo $(stg unapplied))" = "" ]
)
'
test_done