230
234
self._mk_versioned_file('file0.cc')
232
236
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
238
246
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
239
247
# two lines each (line1, line10) from file0.aa and file0.bb
240
248
self.assertEqual(len(out.splitlines()), 4)
242
250
out, err = self.run_bzr(['grep', '-r', 'last:1',
243
'--exclude', '*.cc', 'line1$'])
251
'--exclude', '*.cc', 'line1$'])
244
252
self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
245
253
self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
246
254
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
290
298
self._mk_versioned_file('file2.txt', total_lines=2)
292
300
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
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)
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)
299
313
self.assertEqual(len(out.splitlines()), 6)
301
315
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
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)
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)
308
328
self.assertEqual(len(out.splitlines()), 6)
310
330
def test_multiple_wtree_files(self):
361
383
self._mk_versioned_file('file0.txt', total_lines=3)
363
nref = ud.normalize(u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
386
u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
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'))
388
out, err = self.run_bzr(
389
['grep', '-r', 'last:1', '--null', 'line[1-3]'])
390
nout = ud.normalize(u'NFC', out)
367
391
self.assertEqual(nout, nref)
368
392
self.assertEqual(len(out.splitlines()), 1)
370
394
out, err = self.run_bzr(['grep', '-r', 'last:1', '-Z', 'line[1-3]'])
371
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
395
nout = ud.normalize(u'NFC', out)
372
396
self.assertEqual(nout, nref)
373
397
self.assertEqual(len(out.splitlines()), 1)
375
399
out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line'])
376
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
400
nout = ud.normalize(u'NFC', out)
377
401
self.assertEqual(nout, nref)
378
402
self.assertEqual(len(out.splitlines()), 1)
505
544
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
509
550
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
510
551
# finds line1 and line10
511
552
self.assertEqual(len(out.splitlines()), 2)
513
554
out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
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)
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)
519
564
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
520
565
# finds line1 and line10 over two revisions
521
566
self.assertEqual(len(out.splitlines()), 4)
523
568
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
527
574
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
528
575
# finds line1 and line10
529
576
self.assertEqual(len(out.splitlines()), 2)
531
578
out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
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)
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)
539
592
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
540
593
# finds line1 and line10 over 3 revisions
541
594
self.assertEqual(len(out.splitlines()), 6)
649
706
self._mk_versioned_file('dir2/file2.cc')
651
708
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
657
718
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
658
719
# finds line1 and line10
659
720
self.assertEqual(len(out.splitlines()), 4)
661
722
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
667
732
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
668
733
# finds line1 and line10
669
734
self.assertEqual(len(out.splitlines()), 4)
685
750
self._mk_versioned_file('dir2/file2.cc')
687
752
out, err = self.run_bzr(['grep', '--include', '*.aa',
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)
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)
693
762
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
694
763
# finds line1 and line10
695
764
self.assertEqual(len(out.splitlines()), 4)
697
766
out, err = self.run_bzr(['grep', '--include', '*.aa',
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)
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)
703
776
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
704
777
# finds line1 and line10
705
778
self.assertEqual(len(out.splitlines()), 4)
721
794
self._mk_versioned_file('dir2/file2.cc')
723
796
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
727
802
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
729
804
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
733
810
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
735
812
def test_wtree_exclude_from_outside_dir(self):
792
877
self._mk_versioned_dir('dir1')
793
878
self._mk_versioned_file('dir1/file1.txt')
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)
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)
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)
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)
803
894
def test_wtree_files_from_outside_dir(self):
804
895
"""(wtree) Grep for pattern with dirs passed as argument.
837
932
self._mk_versioned_dir('dir0/dir00')
838
933
self._mk_versioned_file('dir0/dir00/file0.txt')
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)
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)
843
940
out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
844
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
941
self.assertContainsRe(
942
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)
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)
849
949
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
850
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
950
self.assertContainsRe(
951
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
852
953
def test_wtree_files_from_outside_two_dirs(self):
853
954
"""(wtree) Grep for pattern with two levels of nested dir.
891
996
out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
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'])
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'])
898
1007
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
900
1009
out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
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'])
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'])
907
1020
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
908
1021
self.assertEqual(len(out.splitlines()), 0)
973
1094
self._mk_versioned_file('file0.txt')
975
1096
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
987
1111
def test_wtree_ignore_case_match(self):
988
1112
"""(wtree) Match fails without --ignore-case.
1076
1204
self._mk_versioned_file('file0.txt')
1078
1206
out, err = self.run_bzr(['grep', '-r', 'last:1',
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)
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)
1090
1221
out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
1091
self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1222
self.assertContainsRe(out, "file0.txt:3:line3",
1223
flags=TestGrep._reflags)
1093
1225
def test_wtree_with_line_number(self):
1094
1226
"""(wtree) Search for pattern with --line-number.
1198
1337
# v4 should not be present in revno 3
1199
1338
out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
1200
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1339
self.assertNotContainsRe(
1340
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1202
1342
# v4 should be present in revno 4
1203
1343
out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
1204
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1344
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1345
flags=TestGrep._reflags)
1206
1347
# v4 should not be present in revno 3
1207
1348
out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
1208
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1349
self.assertNotContainsRe(
1350
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1210
1352
# v4 should be present in revno 4
1211
1353
out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
1212
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1354
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1355
flags=TestGrep._reflags)
1214
1357
def test_revno_range_basic_history_grep(self):
1215
1358
"""Search for pattern in revision range for file.
1299
1446
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1301
1448
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
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)
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)
1306
1457
self.assertEqual(len(out.splitlines()), 3)
1308
1459
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
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)
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)
1313
1468
self.assertEqual(len(out.splitlines()), 3)
1315
1470
def test_revno_range_versioned_file_from_outside_dir(self):
1326
1481
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1328
1483
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
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)
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)
1334
1493
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
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)
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)
1340
1503
def test_levels(self):
1341
1504
"""--levels=0 should show findings from merged revision.
1363
1526
# levels should be ignored by wtree grep
1364
1527
out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
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)
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)
1369
1536
self.assertEqual(len(out.splitlines()), 4)
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)
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)
1380
1556
self.assertEqual(len(out.splitlines()), 8)
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)
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)
1391
1576
self.assertEqual(len(out.splitlines()), 8)
1393
1578
# levels should be ignored by wtree grep
1394
1579
out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
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)
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)
1399
1588
self.assertEqual(len(out.splitlines()), 4)
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)
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)
1410
1608
self.assertEqual(len(out.splitlines()), 8)
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)
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)
1418
1621
def test_dotted_rev_grep(self):
1419
1622
"""Grep in dotted revs
1538
1752
out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1540
1754
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1541
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1755
self.assertContainsRe(out, "^dir0/file00.txt$",
1756
flags=TestGrep._reflags)
1542
1757
self.assertEqual(len(out.splitlines()), 2)
1545
1760
out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1547
1762
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1548
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1763
self.assertContainsRe(out, "^dir0/file00.txt$",
1764
flags=TestGrep._reflags)
1549
1765
self.assertEqual(len(out.splitlines()), 2)
1552
1768
out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1554
1770
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1555
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1771
self.assertContainsRe(out, "^dir0/file00.txt$",
1772
flags=TestGrep._reflags)
1556
1773
self.assertEqual(len(out.splitlines()), 2)
1559
1776
out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1561
1778
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1562
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1779
self.assertContainsRe(out, "^dir0/file00.txt$",
1780
flags=TestGrep._reflags)
1563
1781
self.assertEqual(len(out.splitlines()), 2)
1566
1784
out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1568
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1786
self.assertContainsRe(out, "^dir0/file00.txt$",
1787
flags=TestGrep._reflags)
1569
1788
self.assertEqual(len(out.splitlines()), 1)
1572
1791
out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1574
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1793
self.assertContainsRe(out, "^dir0/file00.txt$",
1794
flags=TestGrep._reflags)
1575
1795
self.assertEqual(len(out.splitlines()), 1)
1618
1838
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1621
1841
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1622
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1842
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1843
flags=TestGrep._reflags)
1623
1844
self.assertEqual(len(out.splitlines()), 2)
1626
1847
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1629
1850
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1630
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1851
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1852
flags=TestGrep._reflags)
1631
1853
self.assertEqual(len(out.splitlines()), 2)
1634
1856
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1637
1859
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1638
1860
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1639
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1861
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1862
flags=TestGrep._reflags)
1640
1863
self.assertEqual(len(out.splitlines()), 3)
1643
1866
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1646
1869
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1647
1870
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1648
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1871
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1872
flags=TestGrep._reflags)
1649
1873
self.assertEqual(len(out.splitlines()), 3)
1652
1876
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
1654
1878
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1655
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1879
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1880
flags=TestGrep._reflags)
1656
1881
self.assertEqual(len(out.splitlines()), 2)
1659
1884
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
1661
1886
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1662
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1887
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1888
flags=TestGrep._reflags)
1663
1889
self.assertEqual(len(out.splitlines()), 2)
1666
1892
out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
1667
'dir0', 'file1.txt'])
1893
'dir0', 'file1.txt'])
1669
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1895
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1896
flags=TestGrep._reflags)
1670
1897
self.assertEqual(len(out.splitlines()), 1)
1673
1900
out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
1674
'dir0', 'file1.txt'])
1901
'dir0', 'file1.txt'])
1676
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1903
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1904
flags=TestGrep._reflags)
1677
1905
self.assertEqual(len(out.splitlines()), 1)
1680
1908
out, err = self.run_bzr(['grep', '-l', 'HELLO',
1681
'-r', '-2', 'file0.txt'])
1909
'-r', '-2', 'file0.txt'])
1683
1911
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1684
1912
self.assertEqual(len(out.splitlines()), 1)
1687
1915
out, err = self.run_bzr(['grep', '-l', 'HE.LO',
1688
'-r', '-2', 'file0.txt'])
1916
'-r', '-2', 'file0.txt'])
1690
1918
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1691
1919
self.assertEqual(len(out.splitlines()), 1)
1694
1922
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1697
1925
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1698
1926
self.assertEqual(len(out.splitlines()), 1)
1701
1929
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1704
1932
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1705
1933
self.assertEqual(len(out.splitlines()), 1)
1724
1952
out, err = self.run_bzr(['grep', '--files-without-match', 'HELLO'])
1726
1954
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1727
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1955
self.assertContainsRe(out, "^dir0/file01.txt$",
1956
flags=TestGrep._reflags)
1728
1957
self.assertEqual(len(out.splitlines()), 2)
1731
1960
out, err = self.run_bzr(['grep', '--files-without-match', 'HE.LO'])
1733
1962
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1734
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1963
self.assertContainsRe(out, "^dir0/file01.txt$",
1964
flags=TestGrep._reflags)
1735
1965
self.assertEqual(len(out.splitlines()), 2)
1738
1968
out, err = self.run_bzr(['grep', '-L', 'HELLO'])
1740
1970
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1741
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1971
self.assertContainsRe(out, "^dir0/file01.txt$",
1972
flags=TestGrep._reflags)
1742
1973
self.assertEqual(len(out.splitlines()), 2)
1745
1976
out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
1747
1978
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1748
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1979
self.assertContainsRe(out, "^dir0/file01.txt$",
1980
flags=TestGrep._reflags)
1749
1981
self.assertEqual(len(out.splitlines()), 2)
1752
1984
out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
1754
1986
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1755
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1987
self.assertContainsRe(out, "^dir0/file01.txt$",
1988
flags=TestGrep._reflags)
1756
1989
self.assertEqual(len(out.splitlines()), 2)
1759
1992
out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
1761
1994
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1762
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1995
self.assertContainsRe(out, "^dir0/file01.txt$",
1996
flags=TestGrep._reflags)
1763
1997
self.assertEqual(len(out.splitlines()), 2)
1806
2040
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
1809
2043
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1810
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2044
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2045
flags=TestGrep._reflags)
1811
2046
self.assertEqual(len(out.splitlines()), 2)
1814
2049
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
1817
2052
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1818
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2053
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2054
flags=TestGrep._reflags)
1819
2055
self.assertEqual(len(out.splitlines()), 2)
1822
2058
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
1825
2061
self.assertContainsRe(out, "^file1.txt~6$", 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)
2062
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2063
flags=TestGrep._reflags)
2064
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2065
flags=TestGrep._reflags)
1828
2066
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1829
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2067
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2068
flags=TestGrep._reflags)
1830
2069
self.assertEqual(len(out.splitlines()), 5)
1833
2072
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
1836
2075
self.assertContainsRe(out, "^file1.txt~6$", 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)
2076
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2077
flags=TestGrep._reflags)
2078
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2079
flags=TestGrep._reflags)
1839
2080
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1840
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2081
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2082
flags=TestGrep._reflags)
1841
2083
self.assertEqual(len(out.splitlines()), 5)
1844
2086
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
1846
2088
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1847
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2089
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2090
flags=TestGrep._reflags)
1848
2091
self.assertEqual(len(out.splitlines()), 2)
1851
2094
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
1853
2096
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1854
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2097
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2098
flags=TestGrep._reflags)
1855
2099
self.assertEqual(len(out.splitlines()), 2)
1858
2102
out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
1859
'dir0', 'file1.txt'])
2103
'dir0', 'file1.txt'])
1861
2105
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1862
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2106
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2107
flags=TestGrep._reflags)
1863
2108
self.assertEqual(len(out.splitlines()), 2)
1866
2111
out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
1867
'dir0', 'file1.txt'])
2112
'dir0', 'file1.txt'])
1869
2114
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1870
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2115
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2116
flags=TestGrep._reflags)
1871
2117
self.assertEqual(len(out.splitlines()), 2)
1874
2120
out, err = self.run_bzr(['grep', '-L', 'HELLO',
1875
'-r', '-2', 'file1.txt'])
2121
'-r', '-2', 'file1.txt'])
1877
2123
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1878
2124
self.assertEqual(len(out.splitlines()), 1)
1881
2127
out, err = self.run_bzr(['grep', '-L', 'HE.LO',
1882
'-r', '-2', 'file1.txt'])
2128
'-r', '-2', 'file1.txt'])
1884
2130
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1885
2131
self.assertEqual(len(out.splitlines()), 1)
1888
2134
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1891
2137
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1892
2138
self.assertEqual(len(out.splitlines()), 1)
1895
2141
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1898
2144
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1899
2145
self.assertEqual(len(out.splitlines()), 1)
1931
2179
self.build_tree(contents)
1932
2180
tree.add(contents)
1933
2181
tree.commit("Initial commit")
1934
as_utf8 = u"\u1234".encode("UTF-8")
1936
2184
# GZ 2010-06-07: Note we can't actually grep for \u1234 as the pattern
1937
2185
# is mangled according to the user encoding.
1938
streams = self.run_bzr(["grep", "--files-with-matches",
1939
u"contents"], encoding="UTF-8")
1940
self.assertEqual(streams, (as_utf8 + "\n", ""))
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""))
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", ""))
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""))
1946
2195
fileencoding = osutils.get_user_encoding()
1947
2196
as_mangled = as_utf8.decode(fileencoding, "replace").encode("UTF-8")
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), ""))
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""))
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), ""))
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""))
1960
2209
class TestColorGrep(GrepTestBase):
1961
2210
"""Tests for the --color option."""
1963
# GZ 2010-06-05: Does this really require the feature? Nothing prints.
1964
_test_needs_features = [ColorFeature]
1966
2212
_rev_sep = color_string('~', fg=FG.BOLD_YELLOW)
1967
2213
_sep = color_string(':', fg=FG.BOLD_CYAN)
2029
2276
# prepare colored result
2030
2277
foo = color_string('foo', fg=FG.BOLD_RED)
2031
2278
res = (FG.MAGENTA + 'file0.txt'
2032
+ self._rev_sep + '1' + self._sep
2033
+ foo + ' is ' + foo + 'bar1' + '\n')
2279
+ self._rev_sep + '1' + self._sep
2280
+ foo + ' is ' + foo + 'bar1' + '\n')
2034
2281
txt_res = 'file0.txt~1:foo is foobar1\n'
2036
2283
nres = (FG.MAGENTA + 'file0.txt'
2037
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2038
+ foo + ' is ' + foo + 'bar1' + '\n')
2284
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2285
+ foo + ' is ' + foo + 'bar1' + '\n')
2040
2287
out, err = self.run_bzr(['grep', '--color',
2041
'always', '-r', '1', 'foo'])
2288
'always', '-r', '1', 'foo'])
2042
2289
self.assertEqual(out, res)
2043
2290
self.assertEqual(len(out.splitlines()), 1)
2045
2292
# auto should produce plain text result
2046
2293
# as stdout is redireched here.
2047
2294
out, err = self.run_bzr(['grep', '--color',
2048
'auto', '-r', '1', 'foo'])
2295
'auto', '-r', '1', 'foo'])
2049
2296
self.assertEqual(out, txt_res)
2050
2297
self.assertEqual(len(out.splitlines()), 1)
2052
2299
out, err = self.run_bzr(['grep', '-i', '--color',
2053
'always', '-r', '1', 'FOO'])
2300
'always', '-r', '1', 'FOO'])
2054
2301
self.assertEqual(out, res)
2055
2302
self.assertEqual(len(out.splitlines()), 1)
2057
2304
out, err = self.run_bzr(['grep', '--color',
2058
'always', '-r', '1', 'f.o'])
2305
'always', '-r', '1', 'f.o'])
2059
2306
self.assertEqual(out, res)
2060
2307
self.assertEqual(len(out.splitlines()), 1)
2062
2309
out, err = self.run_bzr(['grep', '-i', '--color',
2063
'always', '-r', '1', 'F.O'])
2310
'always', '-r', '1', 'F.O'])
2064
2311
self.assertEqual(out, res)
2065
2312
self.assertEqual(len(out.splitlines()), 1)
2067
2314
out, err = self.run_bzr(['grep', '-n', '--color',
2068
'always', '-r', '1', 'foo'])
2315
'always', '-r', '1', 'foo'])
2069
2316
self.assertEqual(out, nres)
2070
2317
self.assertEqual(len(out.splitlines()), 1)
2072
2319
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2073
'always', '-r', '1', 'FOO'])
2320
'always', '-r', '1', 'FOO'])
2074
2321
self.assertEqual(out, nres)
2075
2322
self.assertEqual(len(out.splitlines()), 1)
2077
2324
out, err = self.run_bzr(['grep', '-n', '--color',
2078
'always', '-r', '1', 'f.o'])
2325
'always', '-r', '1', 'f.o'])
2079
2326
self.assertEqual(out, nres)
2080
2327
self.assertEqual(len(out.splitlines()), 1)
2082
2329
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2083
'always', '-r', '1', 'F.O'])
2330
'always', '-r', '1', 'F.O'])
2084
2331
self.assertEqual(out, nres)
2085
2332
self.assertEqual(len(out.splitlines()), 1)
2096
2343
# prepare colored result
2097
2344
foo = color_string('foo', fg=FG.BOLD_RED)
2098
2345
res = (FG.MAGENTA + 'file0.txt'
2099
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2346
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2101
2348
nres = (FG.MAGENTA + 'file0.txt'
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',
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',
2142
2389
self.assertEqual(out, nres)
2143
2390
self.assertEqual(len(out.splitlines()), 1)
2166
2413
def test_grep_diff_basic(self):
2167
2414
"""grep -p basic test."""
2168
2415
tree = self.make_example_branch()
2169
self.build_tree_contents([('hello', 'hello world!\n')])
2416
self.build_tree_contents([('hello', b'hello world!\n')])
2170
2417
tree.commit('updated hello')
2171
2418
out, err = self.run_bzr(['grep', '-p', 'hello'])
2172
2419
self.assertEqual(err, '')
2173
2420
self.assertEqualDiff(subst_dates(out), '''\
2174
2421
=== revno:3 ===
2175
2422
=== modified file 'hello'
2176
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2177
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2423
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2424
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2179
2426
=== revno:1 ===
2180
2427
=== added file 'hello'
2181
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2182
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2428
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2429
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2185
2432
def test_grep_diff_revision(self):
2186
2433
"""grep -p specific revision."""
2187
2434
tree = self.make_example_branch()
2188
self.build_tree_contents([('hello', 'hello world!\n')])
2435
self.build_tree_contents([('hello', b'hello world!\n')])
2189
2436
tree.commit('updated hello')
2190
2437
out, err = self.run_bzr(['grep', '-p', '-r', '3', 'hello'])
2191
2438
self.assertEqual(err, '')
2192
2439
self.assertEqualDiff(subst_dates(out), '''\
2193
2440
=== revno:3 ===
2194
2441
=== modified file 'hello'
2195
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2196
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2442
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2443
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2200
2447
def test_grep_diff_revision_range(self):
2201
2448
"""grep -p revision range."""
2202
2449
tree = self.make_example_branch()
2203
self.build_tree_contents([('hello', 'hello world!1\n')]) # rev 3
2450
self.build_tree_contents([('hello', b'hello world!1\n')]) # rev 3
2204
2451
tree.commit('rev3')
2205
self.build_tree_contents([('blah', 'hello world!2\n')]) # rev 4
2452
self.build_tree_contents([('blah', b'hello world!2\n')]) # rev 4
2206
2453
tree.add('blah')
2207
2454
tree.commit('rev4')
2208
open('hello', 'a').write('hello world!3\n')
2209
#self.build_tree_contents([('hello', 'hello world!3\n')]) # rev 5
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
2210
2458
tree.commit('rev5')
2211
2459
out, err = self.run_bzr(['grep', '-p', '-r', '2..5', 'hello'])
2212
2460
self.assertEqual(err, '')
2213
2461
self.assertEqualDiff(subst_dates(out), '''\
2214
2462
=== revno:5 ===
2215
2463
=== modified file 'hello'
2216
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2217
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2464
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2465
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2219
2467
=== revno:4 ===
2220
2468
=== added file 'blah'
2222
2470
=== revno:3 ===
2223
2471
=== modified file 'hello'
2224
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2225
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2472
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2473
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2229
2477
def test_grep_diff_color(self):
2230
2478
"""grep -p color test."""
2231
2479
tree = self.make_example_branch()
2232
self.build_tree_contents([('hello', 'hello world!\n')])
2480
self.build_tree_contents([('hello', b'hello world!\n')])
2233
2481
tree.commit('updated hello')
2234
2482
out, err = self.run_bzr(['grep', '--diff', '-r', '3',
2235
'--color', 'always', 'hello'])
2483
'--color', 'always', 'hello'])
2236
2484
self.assertEqual(err, '')
2237
2485
revno = color_string('=== revno:3 ===', fg=FG.BOLD_BLUE) + '\n'
2238
filename = color_string(" === modified file 'hello'", fg=FG.BOLD_MAGENTA) + '\n'
2486
filename = color_string(
2487
" === modified file 'hello'", fg=FG.BOLD_MAGENTA) + '\n'
2239
2488
redhello = color_string('hello', fg=FG.BOLD_RED)
2241
--- hello YYYY-MM-DD HH:MM:SS +ZZZZ
2242
+++ hello YYYY-MM-DD HH:MM:SS +ZZZZ
2490
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2491
+++ hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2245
2494
diffstr = diffstr.replace('hello', redhello)