chiark / gitweb /
Rename "stg assimilate" to "stg repair"
[stgit] / t / t1302-repair-interop.sh
1 #!/bin/sh
2 test_description='Test git/StGit interoperability with "stg repair"'
3 . ./test-lib.sh
4
5 test_expect_success 'Create some git-only history' '
6     echo foo > foo.txt &&
7     git add foo.txt &&
8     git commit -a -m foo &&
9     git tag foo-tag &&
10     for i in 0 1 2 3 4; do
11         echo foo$i >> foo.txt &&
12         git commit -a -m foo$i;
13     done
14 '
15
16 test_expect_success 'Initialize the StGit repository' '
17     stg init
18 '
19
20 test_expect_success 'Create five patches' '
21     for i in 0 1 2 3 4; do
22         stg new p$i -m p$i;
23     done &&
24     [ "$(echo $(stg applied))" = "p0 p1 p2 p3 p4" ] &&
25     [ "$(echo $(stg unapplied))" = "" ]
26 '
27
28 test_expect_success 'Pop two patches with git-reset' '
29     git reset --hard HEAD~2 &&
30     ! stg refresh &&
31     stg repair &&
32     stg refresh &&
33     [ "$(echo $(stg applied))" = "p0 p1 p2" ] &&
34     [ "$(echo $(stg unapplied))" = "p3 p4" ]
35 '
36
37 test_expect_success 'Create a new patch' '
38     stg new q0 -m q0 &&
39     [ "$(echo $(stg applied))" = "p0 p1 p2 q0" ] &&
40     [ "$(echo $(stg unapplied))" = "p3 p4" ]
41 '
42
43 test_expect_success 'Go to an unapplied patch with with git-reset' '
44     git reset --hard $(stg id p3) &&
45     ! stg refresh &&
46     stg repair &&
47     stg refresh &&
48     [ "$(echo $(stg applied))" = "p0 p1 p2 p3" ] &&
49     [ "$(echo $(stg unapplied))" = "q0 p4" ]
50 '
51
52 test_expect_success 'Go back to below the stack base with git-reset' '
53     git reset --hard foo-tag &&
54     stg repair &&
55     [ "$(echo $(stg applied))" = "" ] &&
56     [ "$(echo $(stg unapplied))" = "p0 p1 p2 p3 q0 p4" ]
57 '
58
59 test_done