##// END OF EJS Templates
tests: properly drop back to root dir in test-status.t
Ryan McElroy -
r31423:568d80b2 default
parent child Browse files
Show More
@@ -1,550 +1,552 b''
1 1 $ hg init repo1
2 2 $ cd repo1
3 3 $ mkdir a b a/1 b/1 b/2
4 4 $ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
5 5
6 6 hg status in repo root:
7 7
8 8 $ hg status
9 9 ? a/1/in_a_1
10 10 ? a/in_a
11 11 ? b/1/in_b_1
12 12 ? b/2/in_b_2
13 13 ? b/in_b
14 14 ? in_root
15 15
16 16 hg status . in repo root:
17 17
18 18 $ hg status .
19 19 ? a/1/in_a_1
20 20 ? a/in_a
21 21 ? b/1/in_b_1
22 22 ? b/2/in_b_2
23 23 ? b/in_b
24 24 ? in_root
25 25
26 26 $ hg status --cwd a
27 27 ? a/1/in_a_1
28 28 ? a/in_a
29 29 ? b/1/in_b_1
30 30 ? b/2/in_b_2
31 31 ? b/in_b
32 32 ? in_root
33 33 $ hg status --cwd a .
34 34 ? 1/in_a_1
35 35 ? in_a
36 36 $ hg status --cwd a ..
37 37 ? 1/in_a_1
38 38 ? in_a
39 39 ? ../b/1/in_b_1
40 40 ? ../b/2/in_b_2
41 41 ? ../b/in_b
42 42 ? ../in_root
43 43
44 44 $ hg status --cwd b
45 45 ? a/1/in_a_1
46 46 ? a/in_a
47 47 ? b/1/in_b_1
48 48 ? b/2/in_b_2
49 49 ? b/in_b
50 50 ? in_root
51 51 $ hg status --cwd b .
52 52 ? 1/in_b_1
53 53 ? 2/in_b_2
54 54 ? in_b
55 55 $ hg status --cwd b ..
56 56 ? ../a/1/in_a_1
57 57 ? ../a/in_a
58 58 ? 1/in_b_1
59 59 ? 2/in_b_2
60 60 ? in_b
61 61 ? ../in_root
62 62
63 63 $ hg status --cwd a/1
64 64 ? a/1/in_a_1
65 65 ? a/in_a
66 66 ? b/1/in_b_1
67 67 ? b/2/in_b_2
68 68 ? b/in_b
69 69 ? in_root
70 70 $ hg status --cwd a/1 .
71 71 ? in_a_1
72 72 $ hg status --cwd a/1 ..
73 73 ? in_a_1
74 74 ? ../in_a
75 75
76 76 $ hg status --cwd b/1
77 77 ? a/1/in_a_1
78 78 ? a/in_a
79 79 ? b/1/in_b_1
80 80 ? b/2/in_b_2
81 81 ? b/in_b
82 82 ? in_root
83 83 $ hg status --cwd b/1 .
84 84 ? in_b_1
85 85 $ hg status --cwd b/1 ..
86 86 ? in_b_1
87 87 ? ../2/in_b_2
88 88 ? ../in_b
89 89
90 90 $ hg status --cwd b/2
91 91 ? a/1/in_a_1
92 92 ? a/in_a
93 93 ? b/1/in_b_1
94 94 ? b/2/in_b_2
95 95 ? b/in_b
96 96 ? in_root
97 97 $ hg status --cwd b/2 .
98 98 ? in_b_2
99 99 $ hg status --cwd b/2 ..
100 100 ? ../1/in_b_1
101 101 ? in_b_2
102 102 ? ../in_b
103 103
104 104 combining patterns with root and patterns without a root works
105 105
106 106 $ hg st a/in_a re:.*b$
107 107 ? a/in_a
108 108 ? b/in_b
109 109
110 110 $ cd ..
111 111
112 112 $ hg init repo2
113 113 $ cd repo2
114 114 $ touch modified removed deleted ignored
115 115 $ echo "^ignored$" > .hgignore
116 116 $ hg ci -A -m 'initial checkin'
117 117 adding .hgignore
118 118 adding deleted
119 119 adding modified
120 120 adding removed
121 121 $ touch modified added unknown ignored
122 122 $ hg add added
123 123 $ hg remove removed
124 124 $ rm deleted
125 125
126 126 hg status:
127 127
128 128 $ hg status
129 129 A added
130 130 R removed
131 131 ! deleted
132 132 ? unknown
133 133
134 134 hg status modified added removed deleted unknown never-existed ignored:
135 135
136 136 $ hg status modified added removed deleted unknown never-existed ignored
137 137 never-existed: * (glob)
138 138 A added
139 139 R removed
140 140 ! deleted
141 141 ? unknown
142 142
143 143 $ hg copy modified copied
144 144
145 145 hg status -C:
146 146
147 147 $ hg status -C
148 148 A added
149 149 A copied
150 150 modified
151 151 R removed
152 152 ! deleted
153 153 ? unknown
154 154
155 155 hg status -A:
156 156
157 157 $ hg status -A
158 158 A added
159 159 A copied
160 160 modified
161 161 R removed
162 162 ! deleted
163 163 ? unknown
164 164 I ignored
165 165 C .hgignore
166 166 C modified
167 167
168 168 $ hg status -A -Tjson
169 169 [
170 170 {
171 171 "path": "added",
172 172 "status": "A"
173 173 },
174 174 {
175 175 "copy": "modified",
176 176 "path": "copied",
177 177 "status": "A"
178 178 },
179 179 {
180 180 "path": "removed",
181 181 "status": "R"
182 182 },
183 183 {
184 184 "path": "deleted",
185 185 "status": "!"
186 186 },
187 187 {
188 188 "path": "unknown",
189 189 "status": "?"
190 190 },
191 191 {
192 192 "path": "ignored",
193 193 "status": "I"
194 194 },
195 195 {
196 196 "path": ".hgignore",
197 197 "status": "C"
198 198 },
199 199 {
200 200 "path": "modified",
201 201 "status": "C"
202 202 }
203 203 ]
204 204
205 205 $ hg status -A -Tpickle > pickle
206 206 >>> from __future__ import print_function
207 207 >>> import pickle
208 208 >>> print(sorted((x['status'], x['path']) for x in pickle.load(open("pickle"))))
209 209 [('!', 'deleted'), ('?', 'pickle'), ('?', 'unknown'), ('A', 'added'), ('A', 'copied'), ('C', '.hgignore'), ('C', 'modified'), ('I', 'ignored'), ('R', 'removed')]
210 210 $ rm pickle
211 211
212 212 $ echo "^ignoreddir$" > .hgignore
213 213 $ mkdir ignoreddir
214 214 $ touch ignoreddir/file
215 215
216 216 Test templater support:
217 217
218 218 $ hg status -AT "[{status}]\t{if(copy, '{copy} -> ')}{path}\n"
219 219 [M] .hgignore
220 220 [A] added
221 221 [A] modified -> copied
222 222 [R] removed
223 223 [!] deleted
224 224 [?] ignored
225 225 [?] unknown
226 226 [I] ignoreddir/file
227 227 [C] modified
228 228 $ hg status -AT default
229 229 M .hgignore
230 230 A added
231 231 A copied
232 232 modified
233 233 R removed
234 234 ! deleted
235 235 ? ignored
236 236 ? unknown
237 237 I ignoreddir/file
238 238 C modified
239 239 $ hg status -T compact
240 240 abort: "status" not in template map
241 241 [255]
242 242
243 243 hg status ignoreddir/file:
244 244
245 245 $ hg status ignoreddir/file
246 246
247 247 hg status -i ignoreddir/file:
248 248
249 249 $ hg status -i ignoreddir/file
250 250 I ignoreddir/file
251 251 $ cd ..
252 252
253 253 Check 'status -q' and some combinations
254 254
255 255 $ hg init repo3
256 256 $ cd repo3
257 257 $ touch modified removed deleted ignored
258 258 $ echo "^ignored$" > .hgignore
259 259 $ hg commit -A -m 'initial checkin'
260 260 adding .hgignore
261 261 adding deleted
262 262 adding modified
263 263 adding removed
264 264 $ touch added unknown ignored
265 265 $ hg add added
266 266 $ echo "test" >> modified
267 267 $ hg remove removed
268 268 $ rm deleted
269 269 $ hg copy modified copied
270 270
271 271 Specify working directory revision explicitly, that should be the same as
272 272 "hg status"
273 273
274 274 $ hg status --change "wdir()"
275 275 M modified
276 276 A added
277 277 A copied
278 278 R removed
279 279 ! deleted
280 280 ? unknown
281 281
282 282 Run status with 2 different flags.
283 283 Check if result is the same or different.
284 284 If result is not as expected, raise error
285 285
286 286 $ assert() {
287 287 > hg status $1 > ../a
288 288 > hg status $2 > ../b
289 289 > if diff ../a ../b > /dev/null; then
290 290 > out=0
291 291 > else
292 292 > out=1
293 293 > fi
294 294 > if [ $3 -eq 0 ]; then
295 295 > df="same"
296 296 > else
297 297 > df="different"
298 298 > fi
299 299 > if [ $out -ne $3 ]; then
300 300 > echo "Error on $1 and $2, should be $df."
301 301 > fi
302 302 > }
303 303
304 304 Assert flag1 flag2 [0-same | 1-different]
305 305
306 306 $ assert "-q" "-mard" 0
307 307 $ assert "-A" "-marduicC" 0
308 308 $ assert "-qA" "-mardcC" 0
309 309 $ assert "-qAui" "-A" 0
310 310 $ assert "-qAu" "-marducC" 0
311 311 $ assert "-qAi" "-mardicC" 0
312 312 $ assert "-qu" "-u" 0
313 313 $ assert "-q" "-u" 1
314 314 $ assert "-m" "-a" 1
315 315 $ assert "-r" "-d" 1
316 316 $ cd ..
317 317
318 318 $ hg init repo4
319 319 $ cd repo4
320 320 $ touch modified removed deleted
321 321 $ hg ci -q -A -m 'initial checkin'
322 322 $ touch added unknown
323 323 $ hg add added
324 324 $ hg remove removed
325 325 $ rm deleted
326 326 $ echo x > modified
327 327 $ hg copy modified copied
328 328 $ hg ci -m 'test checkin' -d "1000001 0"
329 329 $ rm *
330 330 $ touch unrelated
331 331 $ hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
332 332
333 333 hg status --change 1:
334 334
335 335 $ hg status --change 1
336 336 M modified
337 337 A added
338 338 A copied
339 339 R removed
340 340
341 341 hg status --change 1 unrelated:
342 342
343 343 $ hg status --change 1 unrelated
344 344
345 345 hg status -C --change 1 added modified copied removed deleted:
346 346
347 347 $ hg status -C --change 1 added modified copied removed deleted
348 348 M modified
349 349 A added
350 350 A copied
351 351 modified
352 352 R removed
353 353
354 354 hg status -A --change 1 and revset:
355 355
356 356 $ hg status -A --change '1|1'
357 357 M modified
358 358 A added
359 359 A copied
360 360 modified
361 361 R removed
362 362 C deleted
363 363
364 364 $ cd ..
365 365
366 366 hg status with --rev and reverted changes:
367 367
368 368 $ hg init reverted-changes-repo
369 369 $ cd reverted-changes-repo
370 370 $ echo a > file
371 371 $ hg add file
372 372 $ hg ci -m a
373 373 $ echo b > file
374 374 $ hg ci -m b
375 375
376 376 reverted file should appear clean
377 377
378 378 $ hg revert -r 0 .
379 379 reverting file
380 380 $ hg status -A --rev 0
381 381 C file
382 382
383 383 #if execbit
384 384 reverted file with changed flag should appear modified
385 385
386 386 $ chmod +x file
387 387 $ hg status -A --rev 0
388 388 M file
389 389
390 390 $ hg revert -r 0 .
391 391 reverting file
392 392
393 393 reverted and committed file with changed flag should appear modified
394 394
395 395 $ hg co -C .
396 396 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
397 397 $ chmod +x file
398 398 $ hg ci -m 'change flag'
399 399 $ hg status -A --rev 1 --rev 2
400 400 M file
401 401 $ hg diff -r 1 -r 2
402 402
403 403 #endif
404 404
405 $ cd ..
406
405 407 hg status of binary file starting with '\1\n', a separator for metadata:
406 408
407 409 $ hg init repo5
408 410 $ cd repo5
409 411 >>> open("010a", "wb").write("\1\nfoo")
410 412 $ hg ci -q -A -m 'initial checkin'
411 413 $ hg status -A
412 414 C 010a
413 415
414 416 >>> open("010a", "wb").write("\1\nbar")
415 417 $ hg status -A
416 418 M 010a
417 419 $ hg ci -q -m 'modify 010a'
418 420 $ hg status -A --rev 0:1
419 421 M 010a
420 422
421 423 $ touch empty
422 424 $ hg ci -q -A -m 'add another file'
423 425 $ hg status -A --rev 1:2 010a
424 426 C 010a
425 427
426 428 $ cd ..
427 429
428 430 test "hg status" with "directory pattern" which matches against files
429 431 only known on target revision.
430 432
431 433 $ hg init repo6
432 434 $ cd repo6
433 435
434 436 $ echo a > a.txt
435 437 $ hg add a.txt
436 438 $ hg commit -m '#0'
437 439 $ mkdir -p 1/2/3/4/5
438 440 $ echo b > 1/2/3/4/5/b.txt
439 441 $ hg add 1/2/3/4/5/b.txt
440 442 $ hg commit -m '#1'
441 443
442 444 $ hg update -C 0 > /dev/null
443 445 $ hg status -A
444 446 C a.txt
445 447
446 448 the directory matching against specified pattern should be removed,
447 449 because directory existence prevents 'dirstate.walk()' from showing
448 450 warning message about such pattern.
449 451
450 452 $ test ! -d 1
451 453 $ hg status -A --rev 1 1/2/3/4/5/b.txt
452 454 R 1/2/3/4/5/b.txt
453 455 $ hg status -A --rev 1 1/2/3/4/5
454 456 R 1/2/3/4/5/b.txt
455 457 $ hg status -A --rev 1 1/2/3
456 458 R 1/2/3/4/5/b.txt
457 459 $ hg status -A --rev 1 1
458 460 R 1/2/3/4/5/b.txt
459 461
460 462 $ hg status --config ui.formatdebug=True --rev 1 1
461 463 status = [
462 464 {*'path': '1/2/3/4/5/b.txt'*}, (glob)
463 465 ]
464 466
465 467 #if windows
466 468 $ hg --config ui.slash=false status -A --rev 1 1
467 469 R 1\2\3\4\5\b.txt
468 470 #endif
469 471
470 472 $ cd ..
471 473
472 474 Status after move overwriting a file (issue4458)
473 475 =================================================
474 476
475 477
476 478 $ hg init issue4458
477 479 $ cd issue4458
478 480 $ echo a > a
479 481 $ echo b > b
480 482 $ hg commit -Am base
481 483 adding a
482 484 adding b
483 485
484 486
485 487 with --force
486 488
487 489 $ hg mv b --force a
488 490 $ hg st --copies
489 491 M a
490 492 b
491 493 R b
492 494 $ hg revert --all
493 495 reverting a
494 496 undeleting b
495 497 $ rm *.orig
496 498
497 499 without force
498 500
499 501 $ hg rm a
500 502 $ hg st --copies
501 503 R a
502 504 $ hg mv b a
503 505 $ hg st --copies
504 506 M a
505 507 b
506 508 R b
507 509
508 510 using ui.statuscopies setting
509 511 $ hg st --config ui.statuscopies=true
510 512 M a
511 513 b
512 514 R b
513 515 $ hg st --config ui.statuscopies=false
514 516 M a
515 517 R b
516 518
517 519 using log status template (issue5155)
518 520 $ hg log -Tstatus -r 'wdir()' -C
519 521 changeset: 2147483647:ffffffffffff
520 522 parent: 0:8c55c58b4c0e
521 523 user: test
522 524 date: * (glob)
523 525 files:
524 526 M a
525 527 b
526 528 R b
527 529
528 530
529 531 Other "bug" highlight, the revision status does not report the copy information.
530 532 This is buggy behavior.
531 533
532 534 $ hg commit -m 'blah'
533 535 $ hg st --copies --change .
534 536 M a
535 537 R b
536 538
537 539 using log status template, the copy information is displayed correctly.
538 540 $ hg log -Tstatus -r. -C
539 541 changeset: 1:6685fde43d21
540 542 tag: tip
541 543 user: test
542 544 date: * (glob)
543 545 summary: blah
544 546 files:
545 547 M a
546 548 b
547 549 R b
548 550
549 551
550 552 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now