chiark / gitweb /
b2fbfcf63657ef9ca62c88767f3132c7c3d58023
[stgit] / t / t2102-pull-policy-rebase.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Yann Dirson
4 #
5
6 test_description='Excercise pull-policy "rebase".'
7
8 . ./test-lib.sh
9
10 test_expect_success \
11     'Fork stack off parent branch, and add patches to the stack' \
12     '
13     git branch -m master parent &&
14     stg init &&
15     stg branch --create stack &&
16     git repo-config branch.stack.stgit.pull-policy rebase &&
17     git repo-config --list &&
18     stg new c1 -m c1 &&
19     echo a > file && stg add file && stg refresh
20     '
21
22 test_expect_success \
23     'Add non-rewinding commit in parent and pull the stack' \
24     '
25     stg branch parent && stg new u1 -m u1 &&
26     echo b > file2 && stg add file2 && stg refresh &&
27     stg branch stack && stg pull &&
28     test -e file2
29     '
30
31 test_expect_success \
32     'Rewind/rewrite commit in parent and pull the stack' \
33     '
34     stg branch parent && echo b >> file2 && stg refresh &&
35     stg branch stack && stg pull &&
36     test `wc -l <file2` = 2
37     '
38
39 # this one exercises the guard against commits
40 # (use a new file to avoid mistaking a conflict for a success)
41 test_expect_success \
42     'New commit in parent and commit a patch in stack' \
43     '
44     stg branch parent && stg new u2 -m u2 &&
45      echo c > file3 && stg add file3 && stg refresh &&
46     stg branch stack && stg commit && stg new c2 -m c2 &&
47      echo a >> file && stg refresh
48     '
49 test_expect_success \
50     'Try to pull/rebase now that stack base has moved' \
51     '! stg pull'
52
53 test_expect_success \
54     'Force the pull/rebase, but do not push yet' \
55     'stg pull --force --nopush'
56 test_expect_success \
57     '...check we lost the committed patch' \
58     '! test -e file'
59 test_expect_success \
60     '...and check we get a conflict while pushing' \
61     '! stg push'
62
63 test_done