From: Yann Dirson Date: Wed, 28 Feb 2007 08:41:42 +0000 (+0000) Subject: Add a testcase for the safety of pull-policy='pull'. X-Git-Tag: v0.13~145 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/commitdiff_plain/e0d32236084276e0e509180ab7629ab23aee11c5 Add a testcase for the safety of pull-policy='pull'. This testcase demonstrates a long-standing problem with the handling of conflicts on a rewinding branch, when "stg pull" calls git-pull. Signed-off-by: Yann Dirson --- diff --git a/t/t2101-pull-policy-pull.sh b/t/t2101-pull-policy-pull.sh new file mode 100755 index 0000000..793491c --- /dev/null +++ b/t/t2101-pull-policy-pull.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# +# Copyright (c) 2007 Yann Dirson +# + +test_description='Excercise pull-policy "fetch-rebase".' + +. ./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 upstream + +test_expect_success \ + 'Setup upstream repo, clone it, and add patches to the clone' \ + ' + (cd upstream && stg init) && + stg clone upstream clone && + (cd clone && + git repo-config branch.master.stgit.pull-policy pull && + git repo-config --list && + stg new c1 -m c1 && + echo a > file && stg add file && stg refresh + ) + ' + +test_expect_success \ + 'Add non-rewinding commit upstream and pull it from clone' \ + ' + (cd upstream && stg new u1 -m u1 && + echo a > file2 && stg add file2 && stg refresh) && + (cd clone && stg pull) && + test -e clone/file2 + ' + +# note: with pre-1.5 Git the clone is not automatically recorded +# as rewinding, and thus heads/origin is not moved, but the stack +# is still correctly rebased + +test_expect_failure \ + 'Rewind/rewrite upstream commit and pull it from clone, without --merged' \ + ' + (cd upstream && echo b >> file2 && stg refresh) && + (cd clone && stg pull) + ' + +test_expect_success \ + '"Solve" the conflict (pretend there is none)' \ + '(cd clone && + git add file2 && EDITOR=cat git commit)' + +test_expect_success \ + 'Push the stack back' \ + '(cd clone && stg push -a)' + +test_done diff --git a/t/t2102-pull-policy-rebase.sh b/t/t2102-pull-policy-rebase.sh new file mode 100755 index 0000000..e1398a3 --- /dev/null +++ b/t/t2102-pull-policy-rebase.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# +# Copyright (c) 2007 Yann Dirson +# + +test_description='Excercise pull-policy "fetch-rebase".' + +. ./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 upstream + +test_expect_success \ + 'Setup upstream repo, clone it, and add patches to the clone' \ + ' + (cd upstream && stg init) && + stg clone upstream clone && + (cd clone && + git repo-config branch.master.stgit.pull-policy fetch-rebase && + git repo-config --list && + stg new c1 -m c1 && + echo a > file && stg add file && stg refresh + ) + ' + +test_expect_success \ + 'Add non-rewinding commit upstream and pull it from clone' \ + ' + (cd upstream && stg new u1 -m u1 && + echo a > file2 && stg add file2 && stg refresh) && + (cd clone && stg pull) && + test -e clone/file2 + ' + +# note: with pre-1.5 Git the clone is not automatically recorded +# as rewinding, and thus heads/origin is not moved, but the stack +# is still correctly rebased +test_expect_success \ + 'Rewind/rewrite upstream commit and pull it from clone' \ + ' + (cd upstream && echo b >> file2 && stg refresh) && + (cd clone && stg pull) && + test `wc -l > file2 && stg refresh) && + (cd clone && git fetch && stg pull) && + test `wc -l file3 && stg add file3 && stg refresh) && + (cd clone && stg commit && stg new c2 -m c2 && + echo a >> file && stg refresh) + ' +test_expect_failure \ + 'Try to and commit a patch in clone' \ + '(cd clone && stg pull)' + +test_done