##// END OF EJS Templates
tests: make test-status.t compatible with test-check-module-imports.t...
Pulkit Goyal -
r42010:2105ed01 default
parent child Browse files
Show More
@@ -1,654 +1,655 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 tweaking defaults works
111 111 $ hg status --cwd a --config ui.tweakdefaults=yes
112 112 ? 1/in_a_1
113 113 ? in_a
114 114 ? ../b/1/in_b_1
115 115 ? ../b/2/in_b_2
116 116 ? ../b/in_b
117 117 ? ../in_root
118 118 $ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes
119 119 ? a/1/in_a_1 (glob)
120 120 ? a/in_a (glob)
121 121 ? b/1/in_b_1 (glob)
122 122 ? b/2/in_b_2 (glob)
123 123 ? b/in_b (glob)
124 124 ? in_root
125 125 $ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes
126 126 ? 1/in_a_1
127 127 ? in_a
128 128 ? ../b/1/in_b_1
129 129 ? ../b/2/in_b_2
130 130 ? ../b/in_b
131 131 ? ../in_root (glob)
132 132
133 133 relative paths can be requested
134 134
135 135 $ hg status --cwd a --config ui.relative-paths=yes
136 136 ? 1/in_a_1
137 137 ? in_a
138 138 ? ../b/1/in_b_1
139 139 ? ../b/2/in_b_2
140 140 ? ../b/in_b
141 141 ? ../in_root
142 142
143 143 $ hg status --cwd a . --config ui.relative-paths=legacy
144 144 ? 1/in_a_1
145 145 ? in_a
146 146 $ hg status --cwd a . --config ui.relative-paths=no
147 147 ? a/1/in_a_1
148 148 ? a/in_a
149 149
150 150 commands.status.relative overrides ui.relative-paths
151 151
152 152 $ cat >> $HGRCPATH <<EOF
153 153 > [ui]
154 154 > relative-paths = False
155 155 > [commands]
156 156 > status.relative = True
157 157 > EOF
158 158 $ hg status --cwd a
159 159 ? 1/in_a_1
160 160 ? in_a
161 161 ? ../b/1/in_b_1
162 162 ? ../b/2/in_b_2
163 163 ? ../b/in_b
164 164 ? ../in_root
165 165 $ HGPLAIN=1 hg status --cwd a
166 166 ? a/1/in_a_1 (glob)
167 167 ? a/in_a (glob)
168 168 ? b/1/in_b_1 (glob)
169 169 ? b/2/in_b_2 (glob)
170 170 ? b/in_b (glob)
171 171 ? in_root
172 172
173 173 if relative paths are explicitly off, tweakdefaults doesn't change it
174 174 $ cat >> $HGRCPATH <<EOF
175 175 > [commands]
176 176 > status.relative = False
177 177 > EOF
178 178 $ hg status --cwd a --config ui.tweakdefaults=yes
179 179 ? a/1/in_a_1
180 180 ? a/in_a
181 181 ? b/1/in_b_1
182 182 ? b/2/in_b_2
183 183 ? b/in_b
184 184 ? in_root
185 185
186 186 $ cd ..
187 187
188 188 $ hg init repo2
189 189 $ cd repo2
190 190 $ touch modified removed deleted ignored
191 191 $ echo "^ignored$" > .hgignore
192 192 $ hg ci -A -m 'initial checkin'
193 193 adding .hgignore
194 194 adding deleted
195 195 adding modified
196 196 adding removed
197 197 $ touch modified added unknown ignored
198 198 $ hg add added
199 199 $ hg remove removed
200 200 $ rm deleted
201 201
202 202 hg status:
203 203
204 204 $ hg status
205 205 A added
206 206 R removed
207 207 ! deleted
208 208 ? unknown
209 209
210 210 hg status modified added removed deleted unknown never-existed ignored:
211 211
212 212 $ hg status modified added removed deleted unknown never-existed ignored
213 213 never-existed: * (glob)
214 214 A added
215 215 R removed
216 216 ! deleted
217 217 ? unknown
218 218
219 219 $ hg copy modified copied
220 220
221 221 hg status -C:
222 222
223 223 $ hg status -C
224 224 A added
225 225 A copied
226 226 modified
227 227 R removed
228 228 ! deleted
229 229 ? unknown
230 230
231 231 hg status -A:
232 232
233 233 $ hg status -A
234 234 A added
235 235 A copied
236 236 modified
237 237 R removed
238 238 ! deleted
239 239 ? unknown
240 240 I ignored
241 241 C .hgignore
242 242 C modified
243 243
244 244 $ hg status -A -T '{status} {path} {node|shortest}\n'
245 245 A added ffff
246 246 A copied ffff
247 247 R removed ffff
248 248 ! deleted ffff
249 249 ? unknown ffff
250 250 I ignored ffff
251 251 C .hgignore ffff
252 252 C modified ffff
253 253
254 254 $ hg status -A -Tjson
255 255 [
256 256 {
257 257 "path": "added",
258 258 "status": "A"
259 259 },
260 260 {
261 261 "path": "copied",
262 262 "source": "modified",
263 263 "status": "A"
264 264 },
265 265 {
266 266 "path": "removed",
267 267 "status": "R"
268 268 },
269 269 {
270 270 "path": "deleted",
271 271 "status": "!"
272 272 },
273 273 {
274 274 "path": "unknown",
275 275 "status": "?"
276 276 },
277 277 {
278 278 "path": "ignored",
279 279 "status": "I"
280 280 },
281 281 {
282 282 "path": ".hgignore",
283 283 "status": "C"
284 284 },
285 285 {
286 286 "path": "modified",
287 287 "status": "C"
288 288 }
289 289 ]
290 290
291 291 $ hg status -A -Tpickle > pickle
292 292 >>> from __future__ import print_function
293 >>> from mercurial.util import pickle
293 >>> from mercurial import util
294 >>> pickle = util.pickle
294 295 >>> data = sorted((x[b'status'].decode(), x[b'path'].decode()) for x in pickle.load(open("pickle", r"rb")))
295 296 >>> for s, p in data: print("%s %s" % (s, p))
296 297 ! deleted
297 298 ? pickle
298 299 ? unknown
299 300 A added
300 301 A copied
301 302 C .hgignore
302 303 C modified
303 304 I ignored
304 305 R removed
305 306 $ rm pickle
306 307
307 308 $ echo "^ignoreddir$" > .hgignore
308 309 $ mkdir ignoreddir
309 310 $ touch ignoreddir/file
310 311
311 312 Test templater support:
312 313
313 314 $ hg status -AT "[{status}]\t{if(source, '{source} -> ')}{path}\n"
314 315 [M] .hgignore
315 316 [A] added
316 317 [A] modified -> copied
317 318 [R] removed
318 319 [!] deleted
319 320 [?] ignored
320 321 [?] unknown
321 322 [I] ignoreddir/file
322 323 [C] modified
323 324 $ hg status -AT default
324 325 M .hgignore
325 326 A added
326 327 A copied
327 328 modified
328 329 R removed
329 330 ! deleted
330 331 ? ignored
331 332 ? unknown
332 333 I ignoreddir/file
333 334 C modified
334 335 $ hg status -T compact
335 336 abort: "status" not in template map
336 337 [255]
337 338
338 339 hg status ignoreddir/file:
339 340
340 341 $ hg status ignoreddir/file
341 342
342 343 hg status -i ignoreddir/file:
343 344
344 345 $ hg status -i ignoreddir/file
345 346 I ignoreddir/file
346 347 $ cd ..
347 348
348 349 Check 'status -q' and some combinations
349 350
350 351 $ hg init repo3
351 352 $ cd repo3
352 353 $ touch modified removed deleted ignored
353 354 $ echo "^ignored$" > .hgignore
354 355 $ hg commit -A -m 'initial checkin'
355 356 adding .hgignore
356 357 adding deleted
357 358 adding modified
358 359 adding removed
359 360 $ touch added unknown ignored
360 361 $ hg add added
361 362 $ echo "test" >> modified
362 363 $ hg remove removed
363 364 $ rm deleted
364 365 $ hg copy modified copied
365 366
366 367 Specify working directory revision explicitly, that should be the same as
367 368 "hg status"
368 369
369 370 $ hg status --change "wdir()"
370 371 M modified
371 372 A added
372 373 A copied
373 374 R removed
374 375 ! deleted
375 376 ? unknown
376 377
377 378 Run status with 2 different flags.
378 379 Check if result is the same or different.
379 380 If result is not as expected, raise error
380 381
381 382 $ assert() {
382 383 > hg status $1 > ../a
383 384 > hg status $2 > ../b
384 385 > if diff ../a ../b > /dev/null; then
385 386 > out=0
386 387 > else
387 388 > out=1
388 389 > fi
389 390 > if [ $3 -eq 0 ]; then
390 391 > df="same"
391 392 > else
392 393 > df="different"
393 394 > fi
394 395 > if [ $out -ne $3 ]; then
395 396 > echo "Error on $1 and $2, should be $df."
396 397 > fi
397 398 > }
398 399
399 400 Assert flag1 flag2 [0-same | 1-different]
400 401
401 402 $ assert "-q" "-mard" 0
402 403 $ assert "-A" "-marduicC" 0
403 404 $ assert "-qA" "-mardcC" 0
404 405 $ assert "-qAui" "-A" 0
405 406 $ assert "-qAu" "-marducC" 0
406 407 $ assert "-qAi" "-mardicC" 0
407 408 $ assert "-qu" "-u" 0
408 409 $ assert "-q" "-u" 1
409 410 $ assert "-m" "-a" 1
410 411 $ assert "-r" "-d" 1
411 412 $ cd ..
412 413
413 414 $ hg init repo4
414 415 $ cd repo4
415 416 $ touch modified removed deleted
416 417 $ hg ci -q -A -m 'initial checkin'
417 418 $ touch added unknown
418 419 $ hg add added
419 420 $ hg remove removed
420 421 $ rm deleted
421 422 $ echo x > modified
422 423 $ hg copy modified copied
423 424 $ hg ci -m 'test checkin' -d "1000001 0"
424 425 $ rm *
425 426 $ touch unrelated
426 427 $ hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
427 428
428 429 hg status --change 1:
429 430
430 431 $ hg status --change 1
431 432 M modified
432 433 A added
433 434 A copied
434 435 R removed
435 436
436 437 hg status --change 1 unrelated:
437 438
438 439 $ hg status --change 1 unrelated
439 440
440 441 hg status -C --change 1 added modified copied removed deleted:
441 442
442 443 $ hg status -C --change 1 added modified copied removed deleted
443 444 M modified
444 445 A added
445 446 A copied
446 447 modified
447 448 R removed
448 449
449 450 hg status -A --change 1 and revset:
450 451
451 452 $ hg status -A --change '1|1'
452 453 M modified
453 454 A added
454 455 A copied
455 456 modified
456 457 R removed
457 458 C deleted
458 459
459 460 $ cd ..
460 461
461 462 hg status with --rev and reverted changes:
462 463
463 464 $ hg init reverted-changes-repo
464 465 $ cd reverted-changes-repo
465 466 $ echo a > file
466 467 $ hg add file
467 468 $ hg ci -m a
468 469 $ echo b > file
469 470 $ hg ci -m b
470 471
471 472 reverted file should appear clean
472 473
473 474 $ hg revert -r 0 .
474 475 reverting file
475 476 $ hg status -A --rev 0
476 477 C file
477 478
478 479 #if execbit
479 480 reverted file with changed flag should appear modified
480 481
481 482 $ chmod +x file
482 483 $ hg status -A --rev 0
483 484 M file
484 485
485 486 $ hg revert -r 0 .
486 487 reverting file
487 488
488 489 reverted and committed file with changed flag should appear modified
489 490
490 491 $ hg co -C .
491 492 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
492 493 $ chmod +x file
493 494 $ hg ci -m 'change flag'
494 495 $ hg status -A --rev 1 --rev 2
495 496 M file
496 497 $ hg diff -r 1 -r 2
497 498
498 499 #endif
499 500
500 501 $ cd ..
501 502
502 503 hg status of binary file starting with '\1\n', a separator for metadata:
503 504
504 505 $ hg init repo5
505 506 $ cd repo5
506 507 >>> open("010a", r"wb").write(b"\1\nfoo") and None
507 508 $ hg ci -q -A -m 'initial checkin'
508 509 $ hg status -A
509 510 C 010a
510 511
511 512 >>> open("010a", r"wb").write(b"\1\nbar") and None
512 513 $ hg status -A
513 514 M 010a
514 515 $ hg ci -q -m 'modify 010a'
515 516 $ hg status -A --rev 0:1
516 517 M 010a
517 518
518 519 $ touch empty
519 520 $ hg ci -q -A -m 'add another file'
520 521 $ hg status -A --rev 1:2 010a
521 522 C 010a
522 523
523 524 $ cd ..
524 525
525 526 test "hg status" with "directory pattern" which matches against files
526 527 only known on target revision.
527 528
528 529 $ hg init repo6
529 530 $ cd repo6
530 531
531 532 $ echo a > a.txt
532 533 $ hg add a.txt
533 534 $ hg commit -m '#0'
534 535 $ mkdir -p 1/2/3/4/5
535 536 $ echo b > 1/2/3/4/5/b.txt
536 537 $ hg add 1/2/3/4/5/b.txt
537 538 $ hg commit -m '#1'
538 539
539 540 $ hg update -C 0 > /dev/null
540 541 $ hg status -A
541 542 C a.txt
542 543
543 544 the directory matching against specified pattern should be removed,
544 545 because directory existence prevents 'dirstate.walk()' from showing
545 546 warning message about such pattern.
546 547
547 548 $ test ! -d 1
548 549 $ hg status -A --rev 1 1/2/3/4/5/b.txt
549 550 R 1/2/3/4/5/b.txt
550 551 $ hg status -A --rev 1 1/2/3/4/5
551 552 R 1/2/3/4/5/b.txt
552 553 $ hg status -A --rev 1 1/2/3
553 554 R 1/2/3/4/5/b.txt
554 555 $ hg status -A --rev 1 1
555 556 R 1/2/3/4/5/b.txt
556 557
557 558 $ hg status --config ui.formatdebug=True --rev 1 1
558 559 status = [
559 560 {
560 561 'path': '1/2/3/4/5/b.txt',
561 562 'status': 'R'
562 563 },
563 564 ]
564 565
565 566 #if windows
566 567 $ hg --config ui.slash=false status -A --rev 1 1
567 568 R 1\2\3\4\5\b.txt
568 569 #endif
569 570
570 571 $ cd ..
571 572
572 573 Status after move overwriting a file (issue4458)
573 574 =================================================
574 575
575 576
576 577 $ hg init issue4458
577 578 $ cd issue4458
578 579 $ echo a > a
579 580 $ echo b > b
580 581 $ hg commit -Am base
581 582 adding a
582 583 adding b
583 584
584 585
585 586 with --force
586 587
587 588 $ hg mv b --force a
588 589 $ hg st --copies
589 590 M a
590 591 b
591 592 R b
592 593 $ hg revert --all
593 594 reverting a
594 595 undeleting b
595 596 $ rm *.orig
596 597
597 598 without force
598 599
599 600 $ hg rm a
600 601 $ hg st --copies
601 602 R a
602 603 $ hg mv b a
603 604 $ hg st --copies
604 605 M a
605 606 b
606 607 R b
607 608
608 609 using ui.statuscopies setting
609 610 $ hg st --config ui.statuscopies=true
610 611 M a
611 612 b
612 613 R b
613 614 $ hg st --config ui.statuscopies=false
614 615 M a
615 616 R b
616 617 $ hg st --config ui.tweakdefaults=yes
617 618 M a
618 619 b
619 620 R b
620 621
621 622 using log status template (issue5155)
622 623 $ hg log -Tstatus -r 'wdir()' -C
623 624 changeset: 2147483647:ffffffffffff
624 625 parent: 0:8c55c58b4c0e
625 626 user: test
626 627 date: * (glob)
627 628 files:
628 629 M a
629 630 b
630 631 R b
631 632
632 633
633 634 Other "bug" highlight, the revision status does not report the copy information.
634 635 This is buggy behavior.
635 636
636 637 $ hg commit -m 'blah'
637 638 $ hg st --copies --change .
638 639 M a
639 640 R b
640 641
641 642 using log status template, the copy information is displayed correctly.
642 643 $ hg log -Tstatus -r. -C
643 644 changeset: 1:6685fde43d21
644 645 tag: tip
645 646 user: test
646 647 date: * (glob)
647 648 summary: blah
648 649 files:
649 650 M a
650 651 b
651 652 R b
652 653
653 654
654 655 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now