234
230
self._mk_versioned_file('file0.cc')
236
232
out, err = self.run_bzr(['grep', '-r', 'last:1',
237
'--exclude', '*.cc', 'line1'])
238
self.assertContainsRe(out, "file0.aa~.:line1$",
239
flags=TestGrep._reflags)
240
self.assertContainsRe(out, "file0.bb~.:line1$",
241
flags=TestGrep._reflags)
242
self.assertContainsRe(out, "file0.aa~.:line10",
243
flags=TestGrep._reflags)
244
self.assertContainsRe(out, "file0.bb~.:line10",
245
flags=TestGrep._reflags)
233
'--exclude', '*.cc', 'line1'])
234
self.assertContainsRe(out, "file0.aa~.:line1$", flags=TestGrep._reflags)
235
self.assertContainsRe(out, "file0.bb~.:line1$", flags=TestGrep._reflags)
236
self.assertContainsRe(out, "file0.aa~.:line10", flags=TestGrep._reflags)
237
self.assertContainsRe(out, "file0.bb~.:line10", flags=TestGrep._reflags)
246
238
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
247
239
# two lines each (line1, line10) from file0.aa and file0.bb
248
240
self.assertEqual(len(out.splitlines()), 4)
250
242
out, err = self.run_bzr(['grep', '-r', 'last:1',
251
'--exclude', '*.cc', 'line1$'])
243
'--exclude', '*.cc', 'line1$'])
252
244
self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
253
245
self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
254
246
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
298
290
self._mk_versioned_file('file2.txt', total_lines=2)
300
292
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
301
self.assertContainsRe(out, "file0.txt~.:line1",
302
flags=TestGrep._reflags)
303
self.assertContainsRe(out, "file0.txt~.:line2",
304
flags=TestGrep._reflags)
305
self.assertContainsRe(out, "file1.txt~.:line1",
306
flags=TestGrep._reflags)
307
self.assertContainsRe(out, "file1.txt~.:line2",
308
flags=TestGrep._reflags)
309
self.assertContainsRe(out, "file2.txt~.:line1",
310
flags=TestGrep._reflags)
311
self.assertContainsRe(out, "file2.txt~.:line2",
312
flags=TestGrep._reflags)
293
self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
294
self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
295
self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
296
self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
297
self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
298
self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
313
299
self.assertEqual(len(out.splitlines()), 6)
315
301
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
316
self.assertContainsRe(out, "file0.txt~.:line1",
317
flags=TestGrep._reflags)
318
self.assertContainsRe(out, "file0.txt~.:line2",
319
flags=TestGrep._reflags)
320
self.assertContainsRe(out, "file1.txt~.:line1",
321
flags=TestGrep._reflags)
322
self.assertContainsRe(out, "file1.txt~.:line2",
323
flags=TestGrep._reflags)
324
self.assertContainsRe(out, "file2.txt~.:line1",
325
flags=TestGrep._reflags)
326
self.assertContainsRe(out, "file2.txt~.:line2",
327
flags=TestGrep._reflags)
302
self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
303
self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
304
self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
305
self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
306
self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
307
self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
328
308
self.assertEqual(len(out.splitlines()), 6)
330
310
def test_multiple_wtree_files(self):
383
361
self._mk_versioned_file('file0.txt', total_lines=3)
386
u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
363
nref = ud.normalize(u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
388
out, err = self.run_bzr(
389
['grep', '-r', 'last:1', '--null', 'line[1-3]'])
390
nout = ud.normalize(u'NFC', out)
365
out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line[1-3]'])
366
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
391
367
self.assertEqual(nout, nref)
392
368
self.assertEqual(len(out.splitlines()), 1)
394
370
out, err = self.run_bzr(['grep', '-r', 'last:1', '-Z', 'line[1-3]'])
395
nout = ud.normalize(u'NFC', out)
371
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
396
372
self.assertEqual(nout, nref)
397
373
self.assertEqual(len(out.splitlines()), 1)
399
375
out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line'])
400
nout = ud.normalize(u'NFC', out)
376
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
401
377
self.assertEqual(nout, nref)
402
378
self.assertEqual(len(out.splitlines()), 1)
544
505
out, err = self.run_bzr(['grep', '-r', 'last:1',
545
'--include', '*.aa', 'line1'])
546
self.assertContainsRe(out, "^file1.aa~5:line1$",
547
flags=TestGrep._reflags)
548
self.assertContainsRe(out, "^file1.aa~5:line10$",
549
flags=TestGrep._reflags)
506
'--include', '*.aa', 'line1'])
507
self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
508
self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
550
509
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
551
510
# finds line1 and line10
552
511
self.assertEqual(len(out.splitlines()), 2)
554
513
out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
555
'--include', '*.aa', 'line1'])
556
self.assertContainsRe(out, "^file1.aa~4:line1$",
557
flags=TestGrep._reflags)
558
self.assertContainsRe(out, "^file1.aa~4:line10$",
559
flags=TestGrep._reflags)
560
self.assertContainsRe(out, "^file1.aa~5:line1$",
561
flags=TestGrep._reflags)
562
self.assertContainsRe(out, "^file1.aa~5:line10$",
563
flags=TestGrep._reflags)
514
'--include', '*.aa', 'line1'])
515
self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
516
self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
517
self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
518
self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
564
519
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
565
520
# finds line1 and line10 over two revisions
566
521
self.assertEqual(len(out.splitlines()), 4)
568
523
out, err = self.run_bzr(['grep', '-r', 'last:1',
569
'--include', '*.aa', 'lin.1'])
570
self.assertContainsRe(out, "^file1.aa~5:line1$",
571
flags=TestGrep._reflags)
572
self.assertContainsRe(out, "^file1.aa~5:line10$",
573
flags=TestGrep._reflags)
524
'--include', '*.aa', 'lin.1'])
525
self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
526
self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
574
527
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
575
528
# finds line1 and line10
576
529
self.assertEqual(len(out.splitlines()), 2)
578
531
out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
579
'--include', '*.aa', 'lin.1'])
580
self.assertContainsRe(out, "^file1.aa~3:line1$",
581
flags=TestGrep._reflags)
582
self.assertContainsRe(out, "^file1.aa~4:line1$",
583
flags=TestGrep._reflags)
584
self.assertContainsRe(out, "^file1.aa~5:line1$",
585
flags=TestGrep._reflags)
586
self.assertContainsRe(out, "^file1.aa~3:line10$",
587
flags=TestGrep._reflags)
588
self.assertContainsRe(out, "^file1.aa~4:line10$",
589
flags=TestGrep._reflags)
590
self.assertContainsRe(out, "^file1.aa~5:line10$",
591
flags=TestGrep._reflags)
532
'--include', '*.aa', 'lin.1'])
533
self.assertContainsRe(out, "^file1.aa~3:line1$", flags=TestGrep._reflags)
534
self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
535
self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
536
self.assertContainsRe(out, "^file1.aa~3:line10$", flags=TestGrep._reflags)
537
self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
538
self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
592
539
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
593
540
# finds line1 and line10 over 3 revisions
594
541
self.assertEqual(len(out.splitlines()), 6)
706
649
self._mk_versioned_file('dir2/file2.cc')
708
651
out, err = self.run_bzr(['grep', '-r', 'last:1',
709
'--include', '*.aa', '--include', '*.bb', 'l..e1'])
710
self.assertContainsRe(
711
out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
712
self.assertContainsRe(
713
out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
714
self.assertContainsRe(
715
out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
716
self.assertContainsRe(
717
out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
652
'--include', '*.aa', '--include', '*.bb', 'l..e1'])
653
self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
654
self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
655
self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
656
self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
718
657
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
719
658
# finds line1 and line10
720
659
self.assertEqual(len(out.splitlines()), 4)
722
661
out, err = self.run_bzr(['grep', '-r', 'last:1',
723
'--include', '*.aa', '--include', '*.bb', 'line1'])
724
self.assertContainsRe(
725
out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
726
self.assertContainsRe(
727
out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
728
self.assertContainsRe(
729
out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
730
self.assertContainsRe(
731
out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
662
'--include', '*.aa', '--include', '*.bb', 'line1'])
663
self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
664
self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
665
self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
666
self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
732
667
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
733
668
# finds line1 and line10
734
669
self.assertEqual(len(out.splitlines()), 4)
750
685
self._mk_versioned_file('dir2/file2.cc')
752
687
out, err = self.run_bzr(['grep', '--include', '*.aa',
753
'--include', '*.bb', 'l.n.1'])
754
self.assertContainsRe(out, "^dir0/file0.aa:line1$",
755
flags=TestGrep._reflags)
756
self.assertContainsRe(out, "^dir1/file1.bb:line1$",
757
flags=TestGrep._reflags)
758
self.assertContainsRe(
759
out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
760
self.assertContainsRe(
761
out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
688
'--include', '*.bb', 'l.n.1'])
689
self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
690
self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
691
self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
692
self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
762
693
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
763
694
# finds line1 and line10
764
695
self.assertEqual(len(out.splitlines()), 4)
766
697
out, err = self.run_bzr(['grep', '--include', '*.aa',
767
'--include', '*.bb', 'line1'])
768
self.assertContainsRe(out, "^dir0/file0.aa:line1$",
769
flags=TestGrep._reflags)
770
self.assertContainsRe(out, "^dir1/file1.bb:line1$",
771
flags=TestGrep._reflags)
772
self.assertContainsRe(
773
out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
774
self.assertContainsRe(
775
out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
698
'--include', '*.bb', 'line1'])
699
self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
700
self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
701
self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
702
self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
776
703
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
777
704
# finds line1 and line10
778
705
self.assertEqual(len(out.splitlines()), 4)
794
721
self._mk_versioned_file('dir2/file2.cc')
796
723
out, err = self.run_bzr(['grep', '-r', 'last:1',
797
'--exclude', '*.cc', 'l..e1'])
798
self.assertContainsRe(
799
out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
800
self.assertContainsRe(
801
out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
724
'--exclude', '*.cc', 'l..e1'])
725
self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
726
self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
802
727
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
804
729
out, err = self.run_bzr(['grep', '-r', 'last:1',
805
'--exclude', '*.cc', 'line1'])
806
self.assertContainsRe(
807
out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
808
self.assertContainsRe(
809
out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
730
'--exclude', '*.cc', 'line1'])
731
self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
732
self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
810
733
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
812
735
def test_wtree_exclude_from_outside_dir(self):
877
792
self._mk_versioned_dir('dir1')
878
793
self._mk_versioned_file('dir1/file1.txt')
880
out, err = self.run_bzr(
881
['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
882
self.assertContainsRe(
883
out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
884
self.assertContainsRe(
885
out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
795
out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
796
self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
797
self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
887
out, err = self.run_bzr(
888
['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
889
self.assertContainsRe(
890
out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
891
self.assertContainsRe(
892
out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
799
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
800
self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
801
self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
894
803
def test_wtree_files_from_outside_dir(self):
895
804
"""(wtree) Grep for pattern with dirs passed as argument.
932
837
self._mk_versioned_dir('dir0/dir00')
933
838
self._mk_versioned_file('dir0/dir00/file0.txt')
935
out, err = self.run_bzr(
936
['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
937
self.assertContainsRe(
938
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
840
out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
841
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
940
843
out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
941
self.assertContainsRe(
942
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
844
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
944
out, err = self.run_bzr(
945
['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
946
self.assertContainsRe(
947
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
846
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
847
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
949
849
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
950
self.assertContainsRe(
951
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
850
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
953
852
def test_wtree_files_from_outside_two_dirs(self):
954
853
"""(wtree) Grep for pattern with two levels of nested dir.
996
891
out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
997
self.assertContainsRe(
998
out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1000
out, err = self.run_bzr(
1001
['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
1002
self.assertContainsRe(
1003
out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1005
out, err = self.run_bzr(
1006
['grep', '-r', 'last:1', '--no-recursive', 'line1'])
892
self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
894
out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
895
self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
897
out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
1007
898
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1009
900
out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
1010
self.assertContainsRe(
1011
out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1013
out, err = self.run_bzr(
1014
['grep', '-r', 'last:1', '--from-root', 'line1'])
1015
self.assertContainsRe(
1016
out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1018
out, err = self.run_bzr(
1019
['grep', '-r', 'last:1', '--no-recursive', 'line1'])
901
self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
903
out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'line1'])
904
self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
906
out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
1020
907
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1021
908
self.assertEqual(len(out.splitlines()), 0)
1094
973
self._mk_versioned_file('file0.txt')
1096
975
out, err = self.run_bzr(['grep', '-r', 'last:1',
1097
'-i', 'Li.E1', 'file0.txt'])
1098
self.assertContainsRe(out, "file0.txt~.:line1",
1099
flags=TestGrep._reflags)
1101
out, err = self.run_bzr(['grep', '-r', 'last:1',
1102
'-i', 'LinE1', 'file0.txt'])
1103
self.assertContainsRe(out, "file0.txt~.:line1",
1104
flags=TestGrep._reflags)
1106
out, err = self.run_bzr(['grep', '-r', 'last:1',
1107
'--ignore-case', 'LinE1', 'file0.txt'])
1108
self.assertContainsRe(out, "^file0.txt~.:line1",
1109
flags=TestGrep._reflags)
976
'-i', 'Li.E1', 'file0.txt'])
977
self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
979
out, err = self.run_bzr(['grep', '-r', 'last:1',
980
'-i', 'LinE1', 'file0.txt'])
981
self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
983
out, err = self.run_bzr(['grep', '-r', 'last:1',
984
'--ignore-case', 'LinE1', 'file0.txt'])
985
self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
1111
987
def test_wtree_ignore_case_match(self):
1112
988
"""(wtree) Match fails without --ignore-case.
1204
1076
self._mk_versioned_file('file0.txt')
1206
1078
out, err = self.run_bzr(['grep', '-r', 'last:1',
1207
'--line-number', 'li.e3', 'file0.txt'])
1208
self.assertContainsRe(out, "file0.txt~.:3:line3",
1209
flags=TestGrep._reflags)
1211
out, err = self.run_bzr(['grep', '-r', 'last:1',
1212
'--line-number', 'line3', 'file0.txt'])
1213
self.assertContainsRe(out, "file0.txt~.:3:line3",
1214
flags=TestGrep._reflags)
1216
out, err = self.run_bzr(['grep', '-r', 'last:1',
1217
'-n', 'line1', 'file0.txt'])
1218
self.assertContainsRe(out, "file0.txt~.:1:line1",
1219
flags=TestGrep._reflags)
1079
'--line-number', 'li.e3', 'file0.txt'])
1080
self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
1082
out, err = self.run_bzr(['grep', '-r', 'last:1',
1083
'--line-number', 'line3', 'file0.txt'])
1084
self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
1086
out, err = self.run_bzr(['grep', '-r', 'last:1',
1087
'-n', 'line1', 'file0.txt'])
1088
self.assertContainsRe(out, "file0.txt~.:1:line1", flags=TestGrep._reflags)
1221
1090
out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
1222
self.assertContainsRe(out, "file0.txt:3:line3",
1223
flags=TestGrep._reflags)
1091
self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1225
1093
def test_wtree_with_line_number(self):
1226
1094
"""(wtree) Search for pattern with --line-number.
1337
1198
# v4 should not be present in revno 3
1338
1199
out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
1339
self.assertNotContainsRe(
1340
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1200
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1342
1202
# v4 should be present in revno 4
1343
1203
out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
1344
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1345
flags=TestGrep._reflags)
1204
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1347
1206
# v4 should not be present in revno 3
1348
1207
out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
1349
self.assertNotContainsRe(
1350
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1208
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1352
1210
# v4 should be present in revno 4
1353
1211
out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
1354
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1355
flags=TestGrep._reflags)
1212
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1357
1214
def test_revno_range_basic_history_grep(self):
1358
1215
"""Search for pattern in revision range for file.
1446
1299
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1448
1301
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
1449
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1450
flags=TestGrep._reflags)
1451
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1452
flags=TestGrep._reflags)
1453
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1454
flags=TestGrep._reflags)
1455
self.assertNotContainsRe(
1456
out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1302
self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1303
self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1304
self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1305
self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1457
1306
self.assertEqual(len(out.splitlines()), 3)
1459
1308
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
1460
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1461
flags=TestGrep._reflags)
1462
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1463
flags=TestGrep._reflags)
1464
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1465
flags=TestGrep._reflags)
1466
self.assertNotContainsRe(
1467
out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1309
self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1310
self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1311
self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1312
self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1468
1313
self.assertEqual(len(out.splitlines()), 3)
1470
1315
def test_revno_range_versioned_file_from_outside_dir(self):
1481
1326
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1483
1328
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
1484
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1485
flags=TestGrep._reflags)
1486
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1487
flags=TestGrep._reflags)
1488
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1489
flags=TestGrep._reflags)
1490
self.assertNotContainsRe(
1491
out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1329
self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1330
self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1331
self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1332
self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1493
1334
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
1494
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1495
flags=TestGrep._reflags)
1496
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1497
flags=TestGrep._reflags)
1498
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1499
flags=TestGrep._reflags)
1500
self.assertNotContainsRe(
1501
out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1335
self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1336
self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1337
self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1338
self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1503
1340
def test_levels(self):
1504
1341
"""--levels=0 should show findings from merged revision.
1526
1363
# levels should be ignored by wtree grep
1527
1364
out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
1528
self.assertContainsRe(out, "^file0.txt:line1$",
1529
flags=TestGrep._reflags)
1530
self.assertContainsRe(out, "^file1.txt:line1$",
1531
flags=TestGrep._reflags)
1532
self.assertContainsRe(out, "^file0.txt:line10$",
1533
flags=TestGrep._reflags)
1534
self.assertContainsRe(out, "^file1.txt:line10$",
1535
flags=TestGrep._reflags)
1365
self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1366
self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1367
self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1368
self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
1536
1369
self.assertEqual(len(out.splitlines()), 4)
1538
out, err = self.run_bzr(
1539
['grep', '-r', 'last:1..', '--levels=0', 'line1'])
1540
self.assertContainsRe(out, "^file0.txt~2:line1$",
1541
flags=TestGrep._reflags)
1542
self.assertContainsRe(out, "^file1.txt~2:line1$",
1543
flags=TestGrep._reflags)
1544
self.assertContainsRe(
1545
out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1546
self.assertContainsRe(
1547
out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1548
self.assertContainsRe(out, "^file0.txt~2:line10$",
1549
flags=TestGrep._reflags)
1550
self.assertContainsRe(out, "^file1.txt~2:line10$",
1551
flags=TestGrep._reflags)
1552
self.assertContainsRe(
1553
out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1554
self.assertContainsRe(
1555
out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1371
out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'line1'])
1372
self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1373
self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1374
self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1375
self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1376
self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1377
self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1378
self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1379
self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1556
1380
self.assertEqual(len(out.splitlines()), 8)
1558
out, err = self.run_bzr(
1559
['grep', '-r', '-1..', '-n', '--levels=0', 'line1'])
1560
self.assertContainsRe(out, "^file0.txt~2:1:line1$",
1561
flags=TestGrep._reflags)
1562
self.assertContainsRe(out, "^file1.txt~2:1:line1$",
1563
flags=TestGrep._reflags)
1564
self.assertContainsRe(
1565
out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1566
self.assertContainsRe(
1567
out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1568
self.assertContainsRe(
1569
out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1570
self.assertContainsRe(
1571
out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1572
self.assertContainsRe(
1573
out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1574
self.assertContainsRe(
1575
out, "^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1382
out, err = self.run_bzr(['grep', '-r', '-1..', '-n', '--levels=0', 'line1'])
1383
self.assertContainsRe(out, "^file0.txt~2:1:line1$", flags=TestGrep._reflags)
1384
self.assertContainsRe(out, "^file1.txt~2:1:line1$", flags=TestGrep._reflags)
1385
self.assertContainsRe(out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1386
self.assertContainsRe(out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1387
self.assertContainsRe(out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1388
self.assertContainsRe(out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1389
self.assertContainsRe(out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1390
self.assertContainsRe(out, "^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1576
1391
self.assertEqual(len(out.splitlines()), 8)
1578
1393
# levels should be ignored by wtree grep
1579
1394
out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
1580
self.assertContainsRe(out, "^file0.txt:line1$",
1581
flags=TestGrep._reflags)
1582
self.assertContainsRe(out, "^file1.txt:line1$",
1583
flags=TestGrep._reflags)
1584
self.assertContainsRe(out, "^file0.txt:line10$",
1585
flags=TestGrep._reflags)
1586
self.assertContainsRe(out, "^file1.txt:line10$",
1587
flags=TestGrep._reflags)
1395
self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1396
self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1397
self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1398
self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
1588
1399
self.assertEqual(len(out.splitlines()), 4)
1590
out, err = self.run_bzr(
1591
['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
1592
self.assertContainsRe(out, "^file0.txt~2:line1$",
1593
flags=TestGrep._reflags)
1594
self.assertContainsRe(out, "^file1.txt~2:line1$",
1595
flags=TestGrep._reflags)
1596
self.assertContainsRe(
1597
out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1598
self.assertContainsRe(
1599
out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1600
self.assertContainsRe(out, "^file0.txt~2:line10$",
1601
flags=TestGrep._reflags)
1602
self.assertContainsRe(out, "^file1.txt~2:line10$",
1603
flags=TestGrep._reflags)
1604
self.assertContainsRe(
1605
out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1606
self.assertContainsRe(
1607
out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1401
out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
1402
self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1403
self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1404
self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1405
self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1406
self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1407
self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1408
self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1409
self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1608
1410
self.assertEqual(len(out.splitlines()), 8)
1610
out, err = self.run_bzr(
1611
['grep', '-r', '-1..', '-n', '--levels=0', '.ine1'])
1612
self.assertContainsRe(out, "file0.txt~2:1:line1",
1613
flags=TestGrep._reflags)
1614
self.assertContainsRe(out, "file1.txt~2:1:line1",
1615
flags=TestGrep._reflags)
1616
self.assertContainsRe(
1617
out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1618
self.assertContainsRe(
1619
out, "file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1412
out, err = self.run_bzr(['grep', '-r', '-1..', '-n', '--levels=0', '.ine1'])
1413
self.assertContainsRe(out, "file0.txt~2:1:line1", flags=TestGrep._reflags)
1414
self.assertContainsRe(out, "file1.txt~2:1:line1", flags=TestGrep._reflags)
1415
self.assertContainsRe(out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1416
self.assertContainsRe(out, "file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1621
1418
def test_dotted_rev_grep(self):
1622
1419
"""Grep in dotted revs
1752
1538
out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1754
1540
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1755
self.assertContainsRe(out, "^dir0/file00.txt$",
1756
flags=TestGrep._reflags)
1541
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1757
1542
self.assertEqual(len(out.splitlines()), 2)
1760
1545
out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1762
1547
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1763
self.assertContainsRe(out, "^dir0/file00.txt$",
1764
flags=TestGrep._reflags)
1548
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1765
1549
self.assertEqual(len(out.splitlines()), 2)
1768
1552
out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1770
1554
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1771
self.assertContainsRe(out, "^dir0/file00.txt$",
1772
flags=TestGrep._reflags)
1555
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1773
1556
self.assertEqual(len(out.splitlines()), 2)
1776
1559
out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1778
1561
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1779
self.assertContainsRe(out, "^dir0/file00.txt$",
1780
flags=TestGrep._reflags)
1562
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1781
1563
self.assertEqual(len(out.splitlines()), 2)
1784
1566
out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1786
self.assertContainsRe(out, "^dir0/file00.txt$",
1787
flags=TestGrep._reflags)
1568
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1788
1569
self.assertEqual(len(out.splitlines()), 1)
1791
1572
out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1793
self.assertContainsRe(out, "^dir0/file00.txt$",
1794
flags=TestGrep._reflags)
1574
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1795
1575
self.assertEqual(len(out.splitlines()), 1)
1838
1618
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1841
1621
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1842
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1843
flags=TestGrep._reflags)
1622
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1844
1623
self.assertEqual(len(out.splitlines()), 2)
1847
1626
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1850
1629
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1851
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1852
flags=TestGrep._reflags)
1630
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1853
1631
self.assertEqual(len(out.splitlines()), 2)
1856
1634
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1859
1637
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1860
1638
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1861
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1862
flags=TestGrep._reflags)
1639
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1863
1640
self.assertEqual(len(out.splitlines()), 3)
1866
1643
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1869
1646
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1870
1647
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1871
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1872
flags=TestGrep._reflags)
1648
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1873
1649
self.assertEqual(len(out.splitlines()), 3)
1876
1652
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
1878
1654
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1879
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1880
flags=TestGrep._reflags)
1655
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1881
1656
self.assertEqual(len(out.splitlines()), 2)
1884
1659
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
1886
1661
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1887
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1888
flags=TestGrep._reflags)
1662
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1889
1663
self.assertEqual(len(out.splitlines()), 2)
1892
1666
out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
1893
'dir0', 'file1.txt'])
1667
'dir0', 'file1.txt'])
1895
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1896
flags=TestGrep._reflags)
1669
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1897
1670
self.assertEqual(len(out.splitlines()), 1)
1900
1673
out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
1901
'dir0', 'file1.txt'])
1674
'dir0', 'file1.txt'])
1903
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1904
flags=TestGrep._reflags)
1676
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1905
1677
self.assertEqual(len(out.splitlines()), 1)
1908
1680
out, err = self.run_bzr(['grep', '-l', 'HELLO',
1909
'-r', '-2', 'file0.txt'])
1681
'-r', '-2', 'file0.txt'])
1911
1683
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1912
1684
self.assertEqual(len(out.splitlines()), 1)
1915
1687
out, err = self.run_bzr(['grep', '-l', 'HE.LO',
1916
'-r', '-2', 'file0.txt'])
1688
'-r', '-2', 'file0.txt'])
1918
1690
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1919
1691
self.assertEqual(len(out.splitlines()), 1)
1922
1694
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1925
1697
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1926
1698
self.assertEqual(len(out.splitlines()), 1)
1929
1701
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1932
1704
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1933
1705
self.assertEqual(len(out.splitlines()), 1)
1952
1724
out, err = self.run_bzr(['grep', '--files-without-match', 'HELLO'])
1954
1726
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1955
self.assertContainsRe(out, "^dir0/file01.txt$",
1956
flags=TestGrep._reflags)
1727
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1957
1728
self.assertEqual(len(out.splitlines()), 2)
1960
1731
out, err = self.run_bzr(['grep', '--files-without-match', 'HE.LO'])
1962
1733
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1963
self.assertContainsRe(out, "^dir0/file01.txt$",
1964
flags=TestGrep._reflags)
1734
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1965
1735
self.assertEqual(len(out.splitlines()), 2)
1968
1738
out, err = self.run_bzr(['grep', '-L', 'HELLO'])
1970
1740
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1971
self.assertContainsRe(out, "^dir0/file01.txt$",
1972
flags=TestGrep._reflags)
1741
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1973
1742
self.assertEqual(len(out.splitlines()), 2)
1976
1745
out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
1978
1747
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1979
self.assertContainsRe(out, "^dir0/file01.txt$",
1980
flags=TestGrep._reflags)
1748
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1981
1749
self.assertEqual(len(out.splitlines()), 2)
1984
1752
out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
1986
1754
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1987
self.assertContainsRe(out, "^dir0/file01.txt$",
1988
flags=TestGrep._reflags)
1755
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1989
1756
self.assertEqual(len(out.splitlines()), 2)
1992
1759
out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
1994
1761
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1995
self.assertContainsRe(out, "^dir0/file01.txt$",
1996
flags=TestGrep._reflags)
1762
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1997
1763
self.assertEqual(len(out.splitlines()), 2)
2040
1806
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2043
1809
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2044
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2045
flags=TestGrep._reflags)
1810
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2046
1811
self.assertEqual(len(out.splitlines()), 2)
2049
1814
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2052
1817
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2053
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2054
flags=TestGrep._reflags)
1818
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2055
1819
self.assertEqual(len(out.splitlines()), 2)
2058
1822
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2061
1825
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2062
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2063
flags=TestGrep._reflags)
2064
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2065
flags=TestGrep._reflags)
1826
self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
1827
self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
2066
1828
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2067
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2068
flags=TestGrep._reflags)
1829
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2069
1830
self.assertEqual(len(out.splitlines()), 5)
2072
1833
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2075
1836
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2076
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2077
flags=TestGrep._reflags)
2078
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2079
flags=TestGrep._reflags)
1837
self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
1838
self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
2080
1839
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2081
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2082
flags=TestGrep._reflags)
1840
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2083
1841
self.assertEqual(len(out.splitlines()), 5)
2086
1844
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
2088
1846
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2089
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2090
flags=TestGrep._reflags)
1847
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2091
1848
self.assertEqual(len(out.splitlines()), 2)
2094
1851
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
2096
1853
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2097
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2098
flags=TestGrep._reflags)
1854
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2099
1855
self.assertEqual(len(out.splitlines()), 2)
2102
1858
out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
2103
'dir0', 'file1.txt'])
1859
'dir0', 'file1.txt'])
2105
1861
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2106
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2107
flags=TestGrep._reflags)
1862
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2108
1863
self.assertEqual(len(out.splitlines()), 2)
2111
1866
out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
2112
'dir0', 'file1.txt'])
1867
'dir0', 'file1.txt'])
2114
1869
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2115
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2116
flags=TestGrep._reflags)
1870
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2117
1871
self.assertEqual(len(out.splitlines()), 2)
2120
1874
out, err = self.run_bzr(['grep', '-L', 'HELLO',
2121
'-r', '-2', 'file1.txt'])
1875
'-r', '-2', 'file1.txt'])
2123
1877
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2124
1878
self.assertEqual(len(out.splitlines()), 1)
2127
1881
out, err = self.run_bzr(['grep', '-L', 'HE.LO',
2128
'-r', '-2', 'file1.txt'])
1882
'-r', '-2', 'file1.txt'])
2130
1884
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2131
1885
self.assertEqual(len(out.splitlines()), 1)
2134
1888
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2137
1891
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2138
1892
self.assertEqual(len(out.splitlines()), 1)
2141
1895
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2144
1898
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2145
1899
self.assertEqual(len(out.splitlines()), 1)
2179
1931
self.build_tree(contents)
2180
1932
tree.add(contents)
2181
1933
tree.commit("Initial commit")
1934
as_utf8 = u"\u1234".encode("UTF-8")
2184
1936
# GZ 2010-06-07: Note we can't actually grep for \u1234 as the pattern
2185
1937
# is mangled according to the user encoding.
2186
streams = self.run_bzr_raw(["grep", "--files-with-matches",
2187
u"contents"], encoding="UTF-8")
2188
as_utf8 = as_utf8.encode("UTF-8")
2189
self.assertEqual(streams, (as_utf8 + b"\n", b""))
1938
streams = self.run_bzr(["grep", "--files-with-matches",
1939
u"contents"], encoding="UTF-8")
1940
self.assertEqual(streams, (as_utf8 + "\n", ""))
2191
streams = self.run_bzr_raw(["grep", "-r", "1", "--files-with-matches",
2192
u"contents"], encoding="UTF-8")
2193
self.assertEqual(streams, (as_utf8 + b"~1\n", b""))
1942
streams = self.run_bzr(["grep", "-r", "1", "--files-with-matches",
1943
u"contents"], encoding="UTF-8")
1944
self.assertEqual(streams, (as_utf8 + "~1\n", ""))
2195
1946
fileencoding = osutils.get_user_encoding()
2196
1947
as_mangled = as_utf8.decode(fileencoding, "replace").encode("UTF-8")
2198
streams = self.run_bzr_raw(["grep", "-n",
2199
u"contents"], encoding="UTF-8")
2200
self.assertEqual(streams, (b"%s:1:contents of %s\n" %
2201
(as_utf8, as_mangled), b""))
1949
streams = self.run_bzr(["grep", "-n",
1950
u"contents"], encoding="UTF-8")
1951
self.assertEqual(streams, ("%s:1:contents of %s\n" %
1952
(as_utf8, as_mangled), ""))
2203
streams = self.run_bzr_raw(["grep", "-n", "-r", "1",
2204
u"contents"], encoding="UTF-8")
2205
self.assertEqual(streams, (b"%s~1:1:contents of %s\n" %
2206
(as_utf8, as_mangled), b""))
1954
streams = self.run_bzr(["grep", "-n", "-r", "1",
1955
u"contents"], encoding="UTF-8")
1956
self.assertEqual(streams, ("%s~1:1:contents of %s\n" %
1957
(as_utf8, as_mangled), ""))
2209
1960
class TestColorGrep(GrepTestBase):
2210
1961
"""Tests for the --color option."""
1963
# GZ 2010-06-05: Does this really require the feature? Nothing prints.
1964
_test_needs_features = [ColorFeature]
2212
1966
_rev_sep = color_string('~', fg=FG.BOLD_YELLOW)
2213
1967
_sep = color_string(':', fg=FG.BOLD_CYAN)
2276
2029
# prepare colored result
2277
2030
foo = color_string('foo', fg=FG.BOLD_RED)
2278
2031
res = (FG.MAGENTA + 'file0.txt'
2279
+ self._rev_sep + '1' + self._sep
2280
+ foo + ' is ' + foo + 'bar1' + '\n')
2032
+ self._rev_sep + '1' + self._sep
2033
+ foo + ' is ' + foo + 'bar1' + '\n')
2281
2034
txt_res = 'file0.txt~1:foo is foobar1\n'
2283
2036
nres = (FG.MAGENTA + 'file0.txt'
2284
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2285
+ foo + ' is ' + foo + 'bar1' + '\n')
2037
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2038
+ foo + ' is ' + foo + 'bar1' + '\n')
2287
2040
out, err = self.run_bzr(['grep', '--color',
2288
'always', '-r', '1', 'foo'])
2041
'always', '-r', '1', 'foo'])
2289
2042
self.assertEqual(out, res)
2290
2043
self.assertEqual(len(out.splitlines()), 1)
2292
2045
# auto should produce plain text result
2293
2046
# as stdout is redireched here.
2294
2047
out, err = self.run_bzr(['grep', '--color',
2295
'auto', '-r', '1', 'foo'])
2048
'auto', '-r', '1', 'foo'])
2296
2049
self.assertEqual(out, txt_res)
2297
2050
self.assertEqual(len(out.splitlines()), 1)
2299
2052
out, err = self.run_bzr(['grep', '-i', '--color',
2300
'always', '-r', '1', 'FOO'])
2053
'always', '-r', '1', 'FOO'])
2301
2054
self.assertEqual(out, res)
2302
2055
self.assertEqual(len(out.splitlines()), 1)
2304
2057
out, err = self.run_bzr(['grep', '--color',
2305
'always', '-r', '1', 'f.o'])
2058
'always', '-r', '1', 'f.o'])
2306
2059
self.assertEqual(out, res)
2307
2060
self.assertEqual(len(out.splitlines()), 1)
2309
2062
out, err = self.run_bzr(['grep', '-i', '--color',
2310
'always', '-r', '1', 'F.O'])
2063
'always', '-r', '1', 'F.O'])
2311
2064
self.assertEqual(out, res)
2312
2065
self.assertEqual(len(out.splitlines()), 1)
2314
2067
out, err = self.run_bzr(['grep', '-n', '--color',
2315
'always', '-r', '1', 'foo'])
2068
'always', '-r', '1', 'foo'])
2316
2069
self.assertEqual(out, nres)
2317
2070
self.assertEqual(len(out.splitlines()), 1)
2319
2072
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2320
'always', '-r', '1', 'FOO'])
2073
'always', '-r', '1', 'FOO'])
2321
2074
self.assertEqual(out, nres)
2322
2075
self.assertEqual(len(out.splitlines()), 1)
2324
2077
out, err = self.run_bzr(['grep', '-n', '--color',
2325
'always', '-r', '1', 'f.o'])
2078
'always', '-r', '1', 'f.o'])
2326
2079
self.assertEqual(out, nres)
2327
2080
self.assertEqual(len(out.splitlines()), 1)
2329
2082
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2330
'always', '-r', '1', 'F.O'])
2083
'always', '-r', '1', 'F.O'])
2331
2084
self.assertEqual(out, nres)
2332
2085
self.assertEqual(len(out.splitlines()), 1)
2343
2096
# prepare colored result
2344
2097
foo = color_string('foo', fg=FG.BOLD_RED)
2345
2098
res = (FG.MAGENTA + 'file0.txt'
2346
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2099
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2348
2101
nres = (FG.MAGENTA + 'file0.txt'
2349
+ self._sep + '1' + self._sep
2350
+ foo + ' is ' + foo + 'bar1' + '\n')
2352
out, err = self.run_bzr(['grep', '--color',
2354
self.assertEqual(out, res)
2355
self.assertEqual(len(out.splitlines()), 1)
2357
out, err = self.run_bzr(['grep', '-i', '--color',
2359
self.assertEqual(out, res)
2360
self.assertEqual(len(out.splitlines()), 1)
2362
out, err = self.run_bzr(['grep', '--color',
2364
self.assertEqual(out, res)
2365
self.assertEqual(len(out.splitlines()), 1)
2367
out, err = self.run_bzr(['grep', '-i', '--color',
2369
self.assertEqual(out, res)
2370
self.assertEqual(len(out.splitlines()), 1)
2372
out, err = self.run_bzr(['grep', '-n', '--color',
2374
self.assertEqual(out, nres)
2375
self.assertEqual(len(out.splitlines()), 1)
2377
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2379
self.assertEqual(out, nres)
2380
self.assertEqual(len(out.splitlines()), 1)
2382
out, err = self.run_bzr(['grep', '-n', '--color',
2384
self.assertEqual(out, nres)
2385
self.assertEqual(len(out.splitlines()), 1)
2387
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2102
+ self._sep + '1' + self._sep
2103
+ foo + ' is ' + foo + 'bar1' + '\n')
2105
out, err = self.run_bzr(['grep', '--color',
2107
self.assertEqual(out, res)
2108
self.assertEqual(len(out.splitlines()), 1)
2110
out, err = self.run_bzr(['grep', '-i', '--color',
2112
self.assertEqual(out, res)
2113
self.assertEqual(len(out.splitlines()), 1)
2115
out, err = self.run_bzr(['grep', '--color',
2117
self.assertEqual(out, res)
2118
self.assertEqual(len(out.splitlines()), 1)
2120
out, err = self.run_bzr(['grep', '-i', '--color',
2122
self.assertEqual(out, res)
2123
self.assertEqual(len(out.splitlines()), 1)
2125
out, err = self.run_bzr(['grep', '-n', '--color',
2127
self.assertEqual(out, nres)
2128
self.assertEqual(len(out.splitlines()), 1)
2130
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2132
self.assertEqual(out, nres)
2133
self.assertEqual(len(out.splitlines()), 1)
2135
out, err = self.run_bzr(['grep', '-n', '--color',
2137
self.assertEqual(out, nres)
2138
self.assertEqual(len(out.splitlines()), 1)
2140
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2389
2142
self.assertEqual(out, nres)
2390
2143
self.assertEqual(len(out.splitlines()), 1)
2413
2166
def test_grep_diff_basic(self):
2414
2167
"""grep -p basic test."""
2415
2168
tree = self.make_example_branch()
2416
self.build_tree_contents([('hello', b'hello world!\n')])
2169
self.build_tree_contents([('hello', 'hello world!\n')])
2417
2170
tree.commit('updated hello')
2418
2171
out, err = self.run_bzr(['grep', '-p', 'hello'])
2419
2172
self.assertEqual(err, '')
2420
2173
self.assertEqualDiff(subst_dates(out), '''\
2421
2174
=== revno:3 ===
2422
2175
=== modified file 'hello'
2423
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2424
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2176
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2177
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2426
2179
=== revno:1 ===
2427
2180
=== added file 'hello'
2428
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2429
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2181
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2182
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2432
2185
def test_grep_diff_revision(self):
2433
2186
"""grep -p specific revision."""
2434
2187
tree = self.make_example_branch()
2435
self.build_tree_contents([('hello', b'hello world!\n')])
2188
self.build_tree_contents([('hello', 'hello world!\n')])
2436
2189
tree.commit('updated hello')
2437
2190
out, err = self.run_bzr(['grep', '-p', '-r', '3', 'hello'])
2438
2191
self.assertEqual(err, '')
2439
2192
self.assertEqualDiff(subst_dates(out), '''\
2440
2193
=== revno:3 ===
2441
2194
=== modified file 'hello'
2442
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2443
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2195
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2196
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2447
2200
def test_grep_diff_revision_range(self):
2448
2201
"""grep -p revision range."""
2449
2202
tree = self.make_example_branch()
2450
self.build_tree_contents([('hello', b'hello world!1\n')]) # rev 3
2203
self.build_tree_contents([('hello', 'hello world!1\n')]) # rev 3
2451
2204
tree.commit('rev3')
2452
self.build_tree_contents([('blah', b'hello world!2\n')]) # rev 4
2205
self.build_tree_contents([('blah', 'hello world!2\n')]) # rev 4
2453
2206
tree.add('blah')
2454
2207
tree.commit('rev4')
2455
with open('hello', 'a') as f:
2456
f.write('hello world!3\n')
2457
# self.build_tree_contents([('hello', 'hello world!3\n')]) # rev 5
2208
open('hello', 'a').write('hello world!3\n')
2209
#self.build_tree_contents([('hello', 'hello world!3\n')]) # rev 5
2458
2210
tree.commit('rev5')
2459
2211
out, err = self.run_bzr(['grep', '-p', '-r', '2..5', 'hello'])
2460
2212
self.assertEqual(err, '')
2461
2213
self.assertEqualDiff(subst_dates(out), '''\
2462
2214
=== revno:5 ===
2463
2215
=== modified file 'hello'
2464
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2465
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2216
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2217
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2467
2219
=== revno:4 ===
2468
2220
=== added file 'blah'
2470
2222
=== revno:3 ===
2471
2223
=== modified file 'hello'
2472
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2473
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2224
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2225
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2477
2229
def test_grep_diff_color(self):
2478
2230
"""grep -p color test."""
2479
2231
tree = self.make_example_branch()
2480
self.build_tree_contents([('hello', b'hello world!\n')])
2232
self.build_tree_contents([('hello', 'hello world!\n')])
2481
2233
tree.commit('updated hello')
2482
2234
out, err = self.run_bzr(['grep', '--diff', '-r', '3',
2483
'--color', 'always', 'hello'])
2235
'--color', 'always', 'hello'])
2484
2236
self.assertEqual(err, '')
2485
2237
revno = color_string('=== revno:3 ===', fg=FG.BOLD_BLUE) + '\n'
2486
filename = color_string(
2487
" === modified file 'hello'", fg=FG.BOLD_MAGENTA) + '\n'
2238
filename = color_string(" === modified file 'hello'", fg=FG.BOLD_MAGENTA) + '\n'
2488
2239
redhello = color_string('hello', fg=FG.BOLD_RED)
2490
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2491
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2241
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2242
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2494
2245
diffstr = diffstr.replace('hello', redhello)