chiark / gitweb /
stgit.el: Add "d" for a few diff commands, similar to git.el
[stgit] / t / t1300-uncommit.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2006 Catalin Marinas
4 #
5
6 test_description='Test the uncommit command.
7
8 '
9
10 . ./test-lib.sh
11
12 test_expect_success \
13         'Initialize the StGIT repository' \
14         'stg init
15 '
16
17 test_expect_success \
18         'Create the first patch' \
19         '
20         stg new foo -m "Foo Patch" &&
21         echo foo > test &&
22         git add test &&
23         stg refresh
24         '
25
26 test_expect_success \
27         'Create the second patch' \
28         '
29         stg new bar -m "Bar Patch" &&
30         echo bar > test &&
31         git add test &&
32         stg refresh
33         '
34
35 test_expect_success \
36         'Commit the patches' \
37         '
38         stg commit --all
39         '
40
41 test_expect_success \
42         'Uncommit the patches using names' \
43         '
44         stg uncommit bar foo &&
45         [ "$(stg id foo)" = "$(stg id bar^)" ] &&
46         stg commit --all
47         '
48
49 test_expect_success \
50         'Uncommit the patches using prefix' \
51         '
52         stg uncommit --number=2 foobar &&
53         [ "$(stg id foobar1)" = "$(stg id foobar2^)" ] &&
54         stg commit --all
55         '
56
57 test_expect_success \
58         'Uncommit the patches using auto names' \
59         '
60         stg uncommit --number=2 &&
61         [ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
62         stg commit --all
63         '
64
65 test_expect_success \
66         'Uncommit the patches one by one' \
67         '
68         stg uncommit &&
69         stg uncommit &&
70         [ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
71         stg commit --all
72         '
73
74 test_expect_success \
75     'Uncommit the patches with --to' '
76     stg uncommit --to HEAD^ &&
77     [ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
78     stg commit --all
79 '
80
81 test_expect_success 'Uncommit a commit with not precisely one parent' '
82     command_error stg uncommit -n 5  &&
83     [ "$(echo $(stg series))" = "" ]
84 '
85
86 # stg uncommit should work even when top != head, and should not touch
87 # the head.
88 test_expect_success 'Uncommit when top != head' '
89     stg new -m foo &&
90     git reset --hard HEAD^ &&
91     h=$(git rev-parse HEAD)
92     stg uncommit bar &&
93     test $(git rev-parse HEAD) = $h &&
94     test "$(echo $(stg series))" = "+ bar > foo"
95 '
96
97 test_done