Add mergetool support to the classic StGit infrastructure
[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 A fie
111 C foo/bar
112 EOF
113 test_expect_success 'Status after conflicting push' '
114 conflict_old stg push &&
115 stg status > output.txt &&
116 test_cmp expected.txt output.txt
117 '
118
119 cat > expected.txt <<EOF
120 C foo/bar
121 EOF
122 test_expect_success 'Status of file' '
123 stg status foo/bar > output.txt &&
124 test_cmp expected.txt output.txt
125 '
126
127 cat > expected.txt <<EOF
128 C foo/bar
129 EOF
130 test_expect_success 'Status of dir' '
131 stg status foo > output.txt &&
132 test_cmp expected.txt output.txt
133 '
134
135 cat > expected.txt <<EOF
136 A fie
137 EOF
138 test_expect_success 'Status of other file' '
139 stg status fie > output.txt &&
140 test_cmp expected.txt output.txt
141 '
142
143 cat > expected.txt <<EOF
144 A fie
145 M foo/bar
146 EOF
147 test_expect_success 'Status after resolving the push' '
148 stg resolved -a &&
149 stg status > output.txt &&
150 test_cmp expected.txt output.txt
151 '
152
153 cat > expected.txt <<EOF
154 A fie
155 D foo/bar
156 EOF
157 test_expect_success 'Status after deleting a file' '
158 rm foo/bar &&
159 stg status > output.txt &&
160 test_cmp expected.txt output.txt
161 '
162
163 cat > expected.txt <<EOF
164 D foo/bar
165 EOF
166 test_expect_success 'Status of disappeared newborn' '
167 stg refresh &&
168 touch foo/bar &&
169 git add foo/bar &&
170 rm foo/bar &&
171 stg status > output.txt &&
172 test_cmp expected.txt output.txt
173 '
174
175 cat > expected.txt <<EOF
176 A fay
177 D fie
178 EOF
179 test_expect_success 'Status after renaming a file' '
180 git rm foo/bar &&
181 git mv fie fay &&
182 stg status > output.txt &&
183 test_cmp expected.txt output.txt
184 '
185
186 test_expect_success 'Status after renaming a file (with rename detection)' '
187 git config stgit.diff-opts -M &&
188 stg status > output.txt &&
189 test_cmp expected.txt output.txt
190 '
191
192 test_done