chiark / gitweb /
Merge branch 'stable'
[stgit] / t / t0002-status.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 David Kågedal
4 #
5
6 test_description='Basic stg status
7
8 Test that "stg status" works.'
9
10 . ./test-lib.sh
11 stg init
12
13 # Ignore our own output files.
14 cat > .git/info/exclude <<EOF
15 /expected.txt
16 /output.txt
17 EOF
18
19 cat > expected.txt <<EOF
20 EOF
21 test_expect_success 'Run status on empty' '
22     stg status > output.txt &&
23     test_cmp expected.txt output.txt
24 '
25
26 cat > expected.txt <<EOF
27 ? foo
28 EOF
29 test_expect_success 'Status with an untracked file' '
30     touch foo &&
31     stg status > output.txt &&
32     test_cmp expected.txt output.txt
33 '
34 rm -f foo
35
36 cat > expected.txt <<EOF
37 EOF
38 test_expect_success 'Status with an empty directory' '
39     mkdir foo &&
40     stg status > output.txt &&
41     test_cmp expected.txt output.txt
42 '
43
44 cat > expected.txt <<EOF
45 ? foo/
46 EOF
47 test_expect_success 'Status with an untracked file in a subdir' '
48     touch foo/bar &&
49     stg status > output.txt &&
50     test_cmp expected.txt output.txt
51 '
52
53 cat > expected.txt <<EOF
54 A foo/bar
55 EOF
56 test_expect_success 'Status with an added file' '
57     git add foo &&
58     stg status > output.txt &&
59     test_cmp expected.txt output.txt
60 '
61
62 cat > expected.txt <<EOF
63 foo/bar
64 EOF
65 test_expect_success 'Status with an added file and -n option' '
66     stg status -n > output.txt &&
67     test_cmp expected.txt output.txt
68 '
69
70 cat > expected.txt <<EOF
71 EOF
72 test_expect_success 'Status after refresh' '
73     stg new -m "first patch" &&
74     stg refresh &&
75     stg status > output.txt &&
76     test_cmp expected.txt output.txt
77 '
78
79 cat > expected.txt <<EOF
80 M foo/bar
81 EOF
82 test_expect_success 'Status after modification' '
83     echo "wee" >> foo/bar &&
84     stg status > output.txt &&
85     test_cmp expected.txt output.txt
86 '
87
88 cat > expected.txt <<EOF
89 EOF
90 test_expect_success 'Status after refresh' '
91     stg new -m "second patch" && stg refresh &&
92     stg status > output.txt &&
93     test_cmp expected.txt output.txt
94 '
95
96 test_expect_success 'Add another file' '
97     echo lajbans > fie &&
98     git add fie &&
99     stg refresh
100 '
101
102 test_expect_success 'Make a conflicting patch' '
103     stg pop &&
104     stg new -m "third patch" &&
105     echo "woo" >> foo/bar &&
106     stg refresh
107 '
108
109 cat > expected.txt <<EOF
110 ? foo/bar.ancestor
111 ? foo/bar.current
112 ? foo/bar.patched
113 A fie
114 C foo/bar
115 EOF
116 test_expect_success 'Status after conflicting push' '
117     conflict_old stg push &&
118     stg status > output.txt &&
119     test_cmp expected.txt output.txt
120 '
121
122 cat > expected.txt <<EOF
123 C foo/bar
124 EOF
125 test_expect_success 'Status of file' '
126     stg status foo/bar > output.txt &&
127     test_cmp expected.txt output.txt
128 '
129
130 cat > expected.txt <<EOF
131 C foo/bar
132 EOF
133 test_expect_success 'Status of dir' '
134     stg status foo > output.txt &&
135     test_cmp expected.txt output.txt
136 '
137
138 cat > expected.txt <<EOF
139 A fie
140 EOF
141 test_expect_success 'Status of other file' '
142     stg status fie > output.txt &&
143     test_cmp expected.txt output.txt
144 '
145
146 cat > expected.txt <<EOF
147 A fie
148 M foo/bar
149 EOF
150 test_expect_success 'Status after resolving the push' '
151     stg resolved -a &&
152     stg status > output.txt &&
153     test_cmp expected.txt output.txt
154 '
155
156 cat > expected.txt <<EOF
157 A fie
158 D foo/bar
159 EOF
160 test_expect_success 'Status after deleting a file' '
161     rm foo/bar &&
162     stg status > output.txt &&
163     test_cmp expected.txt output.txt
164 '
165
166 cat > expected.txt <<EOF
167 D foo/bar
168 EOF
169 test_expect_success 'Status of disappeared newborn' '
170     stg refresh &&
171     touch foo/bar &&
172     git add foo/bar &&
173     rm foo/bar &&
174     stg status > output.txt &&
175     test_cmp expected.txt output.txt
176 '
177
178 cat > expected.txt <<EOF
179 A fay
180 D fie
181 EOF
182 test_expect_success 'Status after renaming a file' '
183     git rm foo/bar &&
184     git mv fie fay &&
185     stg status > output.txt &&
186     test_cmp expected.txt output.txt
187 '
188
189 test_expect_success 'Status after renaming a file (with rename detection)' '
190     git config stgit.diff-opts -M &&
191     stg status > output.txt &&
192     test_cmp expected.txt output.txt
193 '
194
195 test_done