Fossil SCM

In the update tests, also check fossil changes after updating.

preben 2024-01-11 17:55 testing-improvements
Commit 6e23e96acd59d1354f30ecc95cdbcb9151af86824fd10524c6b3a2935d63e432
1 file changed +45 -29
+45 -29
--- test/update.test
+++ test/update.test
@@ -30,18 +30,20 @@
3030
return [format "test-%02u-%s.txt" $UPDATE_TEST $desc]
3131
}
3232
3333
# The output is in file name order, so massage $RESULT to remove initial UNCHANGED
3434
# files. Only do this if we have the expected branch information.
35
-proc test_update {testname warning {fossil_args ""}} {
35
+proc test_update {testname message changes {fossil_args ""}} {
3636
fossil update --verbose {*}$fossil_args
3737
if { [regsub {\n-{79}\nupdated-from: [0-9a-z]{40} .*} $::RESULT {} test_result ] } {
3838
regsub {^(?:UNCHANGED [-a-z0-9.]+\n)*} $test_result {} test_result
3939
} else {
4040
set test_result $::RESULT
4141
}
42
- test "update-$testname" {$warning == $test_result}
42
+ test "update-message-$testname" {$message == $test_result}
43
+ fossil changes
44
+ test "update-changes-$testname" {$changes == $::RESULT}
4345
}
4446
4547
# Use a sequence number for file content that is not important for the test.
4648
set UPDATE_SEQ_NO 0
4749
proc write_seq_to_file {fname} {
@@ -63,169 +65,183 @@
6365
# Remaining tests are carried out in the order update_cmd() performs checks.
6466
#
6567
# Common approach for tests below:
6668
# 1. Set the testname
6769
# 2. Set the file name, done by calling update_setup
68
-# 3. Set warning, the expected warning message
70
+# 3. Set message and changes, the expected message message and subsequent changes
6971
# 3. Optionally set up and commit a common base for the next steps
7072
# 4. Commit a change to the repository (new tip)
7173
# 5. Update to the previous version
7274
# 6. Make changes
7375
# 7. Call test_update to attempt and update to tip
76
+
7477
7578
set testname "conflict-standard"
7679
set fname [test_update_setup $testname]
77
-set warning "CONFLICT $fname"
80
+set message "CONFLICT $fname"
81
+set changes "EDITED $fname"
7882
write_seq_to_file $fname
7983
fossil add $fname
8084
fossil commit -m "Add $fname"
8185
fossil up previous
8286
write_seq_to_file $fname
8387
fossil add $fname
84
-test_update $testname $warning -expectError
88
+test_update $testname $message $changes -expectError
8589
8690
set testname "add-overwrites"
8791
set fname [test_update_setup $testname]
88
-set warning "ADD $fname - overwrites an unmanaged file, original copy backed up locally"
92
+set message "ADD $fname - overwrites an unmanaged file, original copy backed up locally"
93
+set changes ""
8994
write_seq_to_file $fname
9095
fossil add $fname
9196
fossil commit -m "Add $fname"
9297
fossil up previous
9398
write_seq_to_file $fname
94
-test_update $testname $warning -expectError
99
+test_update $testname $message $changes -expectError
95100
96101
set testname "add-standard"
97102
set fname [test_update_setup $testname]
98
-set warning "ADD $fname"
103
+set message "ADD $fname"
104
+set changes ""
99105
write_seq_to_file $fname
100106
fossil add $fname
101107
fossil commit -m "Add $fname"
102108
fossil up previous
103
-test_update $testname $warning
109
+test_update $testname $message $changes
104110
105111
set testname "update-change"
106112
set fname [test_update_setup $testname]
107
-set warning "UPDATE $fname - change to unmanaged file"
113
+set message "UPDATE $fname - change to unmanaged file"
114
+set changes "DELETED $fname"
108115
write_seq_to_file $fname
109116
fossil add $fname
110117
fossil commit -m "Add $fname"
111118
write_seq_to_file $fname
112119
fossil commit -m "Update $fname"
113120
fossil up previous
114121
fossil rm --hard $fname
115
-test_update $testname $warning
122
+test_update $testname $message $changes
116123
117124
set testname "update-standard"
118125
set fname [test_update_setup $testname]
119
-set warning "UPDATE $fname"
126
+set message "UPDATE $fname"
127
+set changes ""
120128
write_seq_to_file $fname
121129
fossil add $fname
122130
fossil commit -m "Add $fname"
123131
write_seq_to_file $fname
124132
fossil commit -m "Update $testname"
125133
fossil up previous
126
-test_update $testname $warning
134
+test_update $testname $message $changes
127135
128136
set testname "update-missing"
129137
set fname [test_update_setup $testname]
130
-set warning "UPDATE $fname"
138
+set message "UPDATE $fname"
139
+set changes ""
131140
write_seq_to_file $fname
132141
fossil add $fname
133142
fossil commit -m "Add $fname"
134143
write_seq_to_file $fname
135144
fossil commit -m "Update $fname"
136145
fossil up previous
137146
file delete $fname
138
-test_update $testname $warning
147
+test_update $testname $message $changes
139148
140149
set testname "conflict-deleted"
141150
set fname [test_update_setup $testname]
142
-set warning "CONFLICT $fname - edited locally but deleted by update"
151
+set message "CONFLICT $fname - edited locally but deleted by update"
152
+set changes ""
143153
write_seq_to_file $fname
144154
fossil add $fname
145155
fossil commit -m "Add $fname"
146156
fossil rm --hard $fname
147157
fossil commit -m "Remove $fname"
148158
fossil up previous
149159
file delete $fname
150
-test_update $testname $warning -expectError
160
+test_update $testname $message $changes -expectError
151161
152162
set testname "remove"
153163
set fname [test_update_setup $testname]
154
-set warning "REMOVE $fname"
164
+set message "REMOVE $fname"
165
+set changes ""
155166
write_seq_to_file $fname
156167
fossil add $fname
157168
fossil commit -m "Add $fname"
158169
fossil rm --hard $fname
159170
fossil commit -m "Remove $fname"
160171
fossil up previous
161
-test_update $testname $warning
172
+test_update $testname $message $changes
162173
163174
set testname "merge-renamed"
164175
set fname [test_update_setup $testname]
165
-set warning "MERGE $fname -> $fname.renamed"
176
+set message "MERGE $fname -> $fname.renamed"
177
+set changes "EDITED $fname.renamed"
166178
write_file $fname "center\n"
167179
fossil add $fname
168180
fossil commit -m "Add $fname"
169181
write_file $fname "top\ncenter\n"
170182
fossil mv --hard $fname "$fname.renamed"
171183
fossil commit -m "Update and rename $fname"
172184
fossil up previous
173185
write_file $fname "center\nbelow\n"
174
-test_update $testname $warning
186
+test_update $testname $message $changes
175187
176188
set testname "merge-standard"
177189
set fname [test_update_setup $testname]
178
-set warning "MERGE $fname"
190
+set message "MERGE $fname"
191
+set changes "EDITED $fname"
179192
write_file $fname "center\n"
180193
fossil add $fname
181194
fossil commit -m "Add $fname"
182195
write_file $fname "top\ncenter\n"
183196
fossil commit -m "Update $fname"
184197
fossil up previous
185198
write_file $fname "center\nbelow\n"
186
-test_update $testname $warning
199
+test_update $testname $message $changes
187200
188201
# TODO: test for "Cannot merge symlink" would be platform dependent
189202
190203
set testname "merge-conflict"
191204
set fname [test_update_setup $testname]
192
-set warning "MERGE $fname\n***** 1 merge conflicts in $fname"
205
+set message "MERGE $fname\n***** 1 merge conflicts in $fname"
206
+set changes "CONFLICT $fname"
193207
write_seq_to_file $fname
194208
fossil add $fname
195209
fossil commit -m "Add $fname"
196210
write_seq_to_file $fname
197211
fossil commit -m "Update $fname"
198212
fossil up previous
199213
write_seq_to_file $fname
200
-test_update $testname $warning -expectError
214
+test_update $testname $message $changes -expectError
201215
202216
# TODO: test for "Cannot merge binary file"?
203217
204218
set testname "edited"
205219
set fname [test_update_setup $testname]
206
-set warning "EDITED $fname\nADD $fname.other"
220
+set message "EDITED $fname\nADD $fname.other"
221
+set changes "EDITED $fname"
207222
write_seq_to_file $fname
208223
fossil add $fname
209224
fossil commit -m "Add $fname"
210225
write_seq_to_file "$fname.other"
211226
fossil add $fname.other
212227
fossil commit -m "Add $fname.other"
213228
fossil up previous
214229
write_seq_to_file $fname
215
-test_update $testname $warning
230
+test_update $testname $message $changes
216231
217232
set testname "unchanged"
218233
set fname [test_update_setup $testname]
219
-set warning "ADD $fname\nUNCHANGED $fname.unchanged"
234
+set message "ADD $fname\nUNCHANGED $fname.unchanged"
235
+set changes ""
220236
write_seq_to_file "$fname.unchanged"
221237
fossil add "$fname.unchanged"
222238
fossil commit -m "Add $fname.unchanged"
223239
write_seq_to_file "$fname"
224240
fossil add "$fname"
225241
fossil commit -m "Add $fname"
226242
fossil up previous
227
-test_update $testname $warning
243
+test_update $testname $message $changes
228244
229245
###############################################################################
230246
231247
test_cleanup
232248
--- test/update.test
+++ test/update.test
@@ -30,18 +30,20 @@
30 return [format "test-%02u-%s.txt" $UPDATE_TEST $desc]
31 }
32
33 # The output is in file name order, so massage $RESULT to remove initial UNCHANGED
34 # files. Only do this if we have the expected branch information.
35 proc test_update {testname warning {fossil_args ""}} {
36 fossil update --verbose {*}$fossil_args
37 if { [regsub {\n-{79}\nupdated-from: [0-9a-z]{40} .*} $::RESULT {} test_result ] } {
38 regsub {^(?:UNCHANGED [-a-z0-9.]+\n)*} $test_result {} test_result
39 } else {
40 set test_result $::RESULT
41 }
42 test "update-$testname" {$warning == $test_result}
 
 
43 }
44
45 # Use a sequence number for file content that is not important for the test.
46 set UPDATE_SEQ_NO 0
47 proc write_seq_to_file {fname} {
@@ -63,169 +65,183 @@
63 # Remaining tests are carried out in the order update_cmd() performs checks.
64 #
65 # Common approach for tests below:
66 # 1. Set the testname
67 # 2. Set the file name, done by calling update_setup
68 # 3. Set warning, the expected warning message
69 # 3. Optionally set up and commit a common base for the next steps
70 # 4. Commit a change to the repository (new tip)
71 # 5. Update to the previous version
72 # 6. Make changes
73 # 7. Call test_update to attempt and update to tip
 
74
75 set testname "conflict-standard"
76 set fname [test_update_setup $testname]
77 set warning "CONFLICT $fname"
 
78 write_seq_to_file $fname
79 fossil add $fname
80 fossil commit -m "Add $fname"
81 fossil up previous
82 write_seq_to_file $fname
83 fossil add $fname
84 test_update $testname $warning -expectError
85
86 set testname "add-overwrites"
87 set fname [test_update_setup $testname]
88 set warning "ADD $fname - overwrites an unmanaged file, original copy backed up locally"
 
89 write_seq_to_file $fname
90 fossil add $fname
91 fossil commit -m "Add $fname"
92 fossil up previous
93 write_seq_to_file $fname
94 test_update $testname $warning -expectError
95
96 set testname "add-standard"
97 set fname [test_update_setup $testname]
98 set warning "ADD $fname"
 
99 write_seq_to_file $fname
100 fossil add $fname
101 fossil commit -m "Add $fname"
102 fossil up previous
103 test_update $testname $warning
104
105 set testname "update-change"
106 set fname [test_update_setup $testname]
107 set warning "UPDATE $fname - change to unmanaged file"
 
108 write_seq_to_file $fname
109 fossil add $fname
110 fossil commit -m "Add $fname"
111 write_seq_to_file $fname
112 fossil commit -m "Update $fname"
113 fossil up previous
114 fossil rm --hard $fname
115 test_update $testname $warning
116
117 set testname "update-standard"
118 set fname [test_update_setup $testname]
119 set warning "UPDATE $fname"
 
120 write_seq_to_file $fname
121 fossil add $fname
122 fossil commit -m "Add $fname"
123 write_seq_to_file $fname
124 fossil commit -m "Update $testname"
125 fossil up previous
126 test_update $testname $warning
127
128 set testname "update-missing"
129 set fname [test_update_setup $testname]
130 set warning "UPDATE $fname"
 
131 write_seq_to_file $fname
132 fossil add $fname
133 fossil commit -m "Add $fname"
134 write_seq_to_file $fname
135 fossil commit -m "Update $fname"
136 fossil up previous
137 file delete $fname
138 test_update $testname $warning
139
140 set testname "conflict-deleted"
141 set fname [test_update_setup $testname]
142 set warning "CONFLICT $fname - edited locally but deleted by update"
 
143 write_seq_to_file $fname
144 fossil add $fname
145 fossil commit -m "Add $fname"
146 fossil rm --hard $fname
147 fossil commit -m "Remove $fname"
148 fossil up previous
149 file delete $fname
150 test_update $testname $warning -expectError
151
152 set testname "remove"
153 set fname [test_update_setup $testname]
154 set warning "REMOVE $fname"
 
155 write_seq_to_file $fname
156 fossil add $fname
157 fossil commit -m "Add $fname"
158 fossil rm --hard $fname
159 fossil commit -m "Remove $fname"
160 fossil up previous
161 test_update $testname $warning
162
163 set testname "merge-renamed"
164 set fname [test_update_setup $testname]
165 set warning "MERGE $fname -> $fname.renamed"
 
166 write_file $fname "center\n"
167 fossil add $fname
168 fossil commit -m "Add $fname"
169 write_file $fname "top\ncenter\n"
170 fossil mv --hard $fname "$fname.renamed"
171 fossil commit -m "Update and rename $fname"
172 fossil up previous
173 write_file $fname "center\nbelow\n"
174 test_update $testname $warning
175
176 set testname "merge-standard"
177 set fname [test_update_setup $testname]
178 set warning "MERGE $fname"
 
179 write_file $fname "center\n"
180 fossil add $fname
181 fossil commit -m "Add $fname"
182 write_file $fname "top\ncenter\n"
183 fossil commit -m "Update $fname"
184 fossil up previous
185 write_file $fname "center\nbelow\n"
186 test_update $testname $warning
187
188 # TODO: test for "Cannot merge symlink" would be platform dependent
189
190 set testname "merge-conflict"
191 set fname [test_update_setup $testname]
192 set warning "MERGE $fname\n***** 1 merge conflicts in $fname"
 
193 write_seq_to_file $fname
194 fossil add $fname
195 fossil commit -m "Add $fname"
196 write_seq_to_file $fname
197 fossil commit -m "Update $fname"
198 fossil up previous
199 write_seq_to_file $fname
200 test_update $testname $warning -expectError
201
202 # TODO: test for "Cannot merge binary file"?
203
204 set testname "edited"
205 set fname [test_update_setup $testname]
206 set warning "EDITED $fname\nADD $fname.other"
 
207 write_seq_to_file $fname
208 fossil add $fname
209 fossil commit -m "Add $fname"
210 write_seq_to_file "$fname.other"
211 fossil add $fname.other
212 fossil commit -m "Add $fname.other"
213 fossil up previous
214 write_seq_to_file $fname
215 test_update $testname $warning
216
217 set testname "unchanged"
218 set fname [test_update_setup $testname]
219 set warning "ADD $fname\nUNCHANGED $fname.unchanged"
 
220 write_seq_to_file "$fname.unchanged"
221 fossil add "$fname.unchanged"
222 fossil commit -m "Add $fname.unchanged"
223 write_seq_to_file "$fname"
224 fossil add "$fname"
225 fossil commit -m "Add $fname"
226 fossil up previous
227 test_update $testname $warning
228
229 ###############################################################################
230
231 test_cleanup
232
--- test/update.test
+++ test/update.test
@@ -30,18 +30,20 @@
30 return [format "test-%02u-%s.txt" $UPDATE_TEST $desc]
31 }
32
33 # The output is in file name order, so massage $RESULT to remove initial UNCHANGED
34 # files. Only do this if we have the expected branch information.
35 proc test_update {testname message changes {fossil_args ""}} {
36 fossil update --verbose {*}$fossil_args
37 if { [regsub {\n-{79}\nupdated-from: [0-9a-z]{40} .*} $::RESULT {} test_result ] } {
38 regsub {^(?:UNCHANGED [-a-z0-9.]+\n)*} $test_result {} test_result
39 } else {
40 set test_result $::RESULT
41 }
42 test "update-message-$testname" {$message == $test_result}
43 fossil changes
44 test "update-changes-$testname" {$changes == $::RESULT}
45 }
46
47 # Use a sequence number for file content that is not important for the test.
48 set UPDATE_SEQ_NO 0
49 proc write_seq_to_file {fname} {
@@ -63,169 +65,183 @@
65 # Remaining tests are carried out in the order update_cmd() performs checks.
66 #
67 # Common approach for tests below:
68 # 1. Set the testname
69 # 2. Set the file name, done by calling update_setup
70 # 3. Set message and changes, the expected message message and subsequent changes
71 # 3. Optionally set up and commit a common base for the next steps
72 # 4. Commit a change to the repository (new tip)
73 # 5. Update to the previous version
74 # 6. Make changes
75 # 7. Call test_update to attempt and update to tip
76
77
78 set testname "conflict-standard"
79 set fname [test_update_setup $testname]
80 set message "CONFLICT $fname"
81 set changes "EDITED $fname"
82 write_seq_to_file $fname
83 fossil add $fname
84 fossil commit -m "Add $fname"
85 fossil up previous
86 write_seq_to_file $fname
87 fossil add $fname
88 test_update $testname $message $changes -expectError
89
90 set testname "add-overwrites"
91 set fname [test_update_setup $testname]
92 set message "ADD $fname - overwrites an unmanaged file, original copy backed up locally"
93 set changes ""
94 write_seq_to_file $fname
95 fossil add $fname
96 fossil commit -m "Add $fname"
97 fossil up previous
98 write_seq_to_file $fname
99 test_update $testname $message $changes -expectError
100
101 set testname "add-standard"
102 set fname [test_update_setup $testname]
103 set message "ADD $fname"
104 set changes ""
105 write_seq_to_file $fname
106 fossil add $fname
107 fossil commit -m "Add $fname"
108 fossil up previous
109 test_update $testname $message $changes
110
111 set testname "update-change"
112 set fname [test_update_setup $testname]
113 set message "UPDATE $fname - change to unmanaged file"
114 set changes "DELETED $fname"
115 write_seq_to_file $fname
116 fossil add $fname
117 fossil commit -m "Add $fname"
118 write_seq_to_file $fname
119 fossil commit -m "Update $fname"
120 fossil up previous
121 fossil rm --hard $fname
122 test_update $testname $message $changes
123
124 set testname "update-standard"
125 set fname [test_update_setup $testname]
126 set message "UPDATE $fname"
127 set changes ""
128 write_seq_to_file $fname
129 fossil add $fname
130 fossil commit -m "Add $fname"
131 write_seq_to_file $fname
132 fossil commit -m "Update $testname"
133 fossil up previous
134 test_update $testname $message $changes
135
136 set testname "update-missing"
137 set fname [test_update_setup $testname]
138 set message "UPDATE $fname"
139 set changes ""
140 write_seq_to_file $fname
141 fossil add $fname
142 fossil commit -m "Add $fname"
143 write_seq_to_file $fname
144 fossil commit -m "Update $fname"
145 fossil up previous
146 file delete $fname
147 test_update $testname $message $changes
148
149 set testname "conflict-deleted"
150 set fname [test_update_setup $testname]
151 set message "CONFLICT $fname - edited locally but deleted by update"
152 set changes ""
153 write_seq_to_file $fname
154 fossil add $fname
155 fossil commit -m "Add $fname"
156 fossil rm --hard $fname
157 fossil commit -m "Remove $fname"
158 fossil up previous
159 file delete $fname
160 test_update $testname $message $changes -expectError
161
162 set testname "remove"
163 set fname [test_update_setup $testname]
164 set message "REMOVE $fname"
165 set changes ""
166 write_seq_to_file $fname
167 fossil add $fname
168 fossil commit -m "Add $fname"
169 fossil rm --hard $fname
170 fossil commit -m "Remove $fname"
171 fossil up previous
172 test_update $testname $message $changes
173
174 set testname "merge-renamed"
175 set fname [test_update_setup $testname]
176 set message "MERGE $fname -> $fname.renamed"
177 set changes "EDITED $fname.renamed"
178 write_file $fname "center\n"
179 fossil add $fname
180 fossil commit -m "Add $fname"
181 write_file $fname "top\ncenter\n"
182 fossil mv --hard $fname "$fname.renamed"
183 fossil commit -m "Update and rename $fname"
184 fossil up previous
185 write_file $fname "center\nbelow\n"
186 test_update $testname $message $changes
187
188 set testname "merge-standard"
189 set fname [test_update_setup $testname]
190 set message "MERGE $fname"
191 set changes "EDITED $fname"
192 write_file $fname "center\n"
193 fossil add $fname
194 fossil commit -m "Add $fname"
195 write_file $fname "top\ncenter\n"
196 fossil commit -m "Update $fname"
197 fossil up previous
198 write_file $fname "center\nbelow\n"
199 test_update $testname $message $changes
200
201 # TODO: test for "Cannot merge symlink" would be platform dependent
202
203 set testname "merge-conflict"
204 set fname [test_update_setup $testname]
205 set message "MERGE $fname\n***** 1 merge conflicts in $fname"
206 set changes "CONFLICT $fname"
207 write_seq_to_file $fname
208 fossil add $fname
209 fossil commit -m "Add $fname"
210 write_seq_to_file $fname
211 fossil commit -m "Update $fname"
212 fossil up previous
213 write_seq_to_file $fname
214 test_update $testname $message $changes -expectError
215
216 # TODO: test for "Cannot merge binary file"?
217
218 set testname "edited"
219 set fname [test_update_setup $testname]
220 set message "EDITED $fname\nADD $fname.other"
221 set changes "EDITED $fname"
222 write_seq_to_file $fname
223 fossil add $fname
224 fossil commit -m "Add $fname"
225 write_seq_to_file "$fname.other"
226 fossil add $fname.other
227 fossil commit -m "Add $fname.other"
228 fossil up previous
229 write_seq_to_file $fname
230 test_update $testname $message $changes
231
232 set testname "unchanged"
233 set fname [test_update_setup $testname]
234 set message "ADD $fname\nUNCHANGED $fname.unchanged"
235 set changes ""
236 write_seq_to_file "$fname.unchanged"
237 fossil add "$fname.unchanged"
238 fossil commit -m "Add $fname.unchanged"
239 write_seq_to_file "$fname"
240 fossil add "$fname"
241 fossil commit -m "Add $fname"
242 fossil up previous
243 test_update $testname $message $changes
244
245 ###############################################################################
246
247 test_cleanup
248

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button