237
230
self._mk_versioned_file('file0.cc')
239
232
out, err = self.run_bzr(['grep', '-r', 'last:1',
240
'--exclude', '*.cc', 'line1'])
241
self.assertContainsRe(out, "file0.aa~.:line1$",
242
flags=TestGrep._reflags)
243
self.assertContainsRe(out, "file0.bb~.:line1$",
244
flags=TestGrep._reflags)
245
self.assertContainsRe(out, "file0.aa~.:line10",
246
flags=TestGrep._reflags)
247
self.assertContainsRe(out, "file0.bb~.:line10",
248
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)
249
238
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
250
239
# two lines each (line1, line10) from file0.aa and file0.bb
251
240
self.assertEqual(len(out.splitlines()), 4)
253
242
out, err = self.run_bzr(['grep', '-r', 'last:1',
254
'--exclude', '*.cc', 'line1$'])
243
'--exclude', '*.cc', 'line1$'])
255
244
self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
256
245
self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
257
246
self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
301
290
self._mk_versioned_file('file2.txt', total_lines=2)
303
292
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
304
self.assertContainsRe(out, "file0.txt~.:line1",
305
flags=TestGrep._reflags)
306
self.assertContainsRe(out, "file0.txt~.:line2",
307
flags=TestGrep._reflags)
308
self.assertContainsRe(out, "file1.txt~.:line1",
309
flags=TestGrep._reflags)
310
self.assertContainsRe(out, "file1.txt~.:line2",
311
flags=TestGrep._reflags)
312
self.assertContainsRe(out, "file2.txt~.:line1",
313
flags=TestGrep._reflags)
314
self.assertContainsRe(out, "file2.txt~.:line2",
315
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)
316
299
self.assertEqual(len(out.splitlines()), 6)
318
301
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
319
self.assertContainsRe(out, "file0.txt~.:line1",
320
flags=TestGrep._reflags)
321
self.assertContainsRe(out, "file0.txt~.:line2",
322
flags=TestGrep._reflags)
323
self.assertContainsRe(out, "file1.txt~.:line1",
324
flags=TestGrep._reflags)
325
self.assertContainsRe(out, "file1.txt~.:line2",
326
flags=TestGrep._reflags)
327
self.assertContainsRe(out, "file2.txt~.:line1",
328
flags=TestGrep._reflags)
329
self.assertContainsRe(out, "file2.txt~.:line2",
330
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)
331
308
self.assertEqual(len(out.splitlines()), 6)
333
310
def test_multiple_wtree_files(self):
386
361
self._mk_versioned_file('file0.txt', total_lines=3)
389
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")
391
out, err = self.run_bzr(
392
['grep', '-r', 'last:1', '--null', 'line[1-3]'])
394
out = out.decode('utf-8', 'ignore')
395
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'))
396
367
self.assertEqual(nout, nref)
397
368
self.assertEqual(len(out.splitlines()), 1)
399
370
out, err = self.run_bzr(['grep', '-r', 'last:1', '-Z', 'line[1-3]'])
401
out = out.decode('utf-8', 'ignore')
402
nout = ud.normalize(u'NFC', out)
371
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
403
372
self.assertEqual(nout, nref)
404
373
self.assertEqual(len(out.splitlines()), 1)
406
375
out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line'])
408
out = out.decode('utf-8', 'ignore')
409
nout = ud.normalize(u'NFC', out)
376
nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
410
377
self.assertEqual(nout, nref)
411
378
self.assertEqual(len(out.splitlines()), 1)
553
505
out, err = self.run_bzr(['grep', '-r', 'last:1',
554
'--include', '*.aa', 'line1'])
555
self.assertContainsRe(out, "^file1.aa~5:line1$",
556
flags=TestGrep._reflags)
557
self.assertContainsRe(out, "^file1.aa~5:line10$",
558
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)
559
509
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
560
510
# finds line1 and line10
561
511
self.assertEqual(len(out.splitlines()), 2)
563
513
out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
564
'--include', '*.aa', 'line1'])
565
self.assertContainsRe(out, "^file1.aa~4:line1$",
566
flags=TestGrep._reflags)
567
self.assertContainsRe(out, "^file1.aa~4:line10$",
568
flags=TestGrep._reflags)
569
self.assertContainsRe(out, "^file1.aa~5:line1$",
570
flags=TestGrep._reflags)
571
self.assertContainsRe(out, "^file1.aa~5:line10$",
572
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)
573
519
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
574
520
# finds line1 and line10 over two revisions
575
521
self.assertEqual(len(out.splitlines()), 4)
577
523
out, err = self.run_bzr(['grep', '-r', 'last:1',
578
'--include', '*.aa', 'lin.1'])
579
self.assertContainsRe(out, "^file1.aa~5:line1$",
580
flags=TestGrep._reflags)
581
self.assertContainsRe(out, "^file1.aa~5:line10$",
582
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)
583
527
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
584
528
# finds line1 and line10
585
529
self.assertEqual(len(out.splitlines()), 2)
587
531
out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
588
'--include', '*.aa', 'lin.1'])
589
self.assertContainsRe(out, "^file1.aa~3:line1$",
590
flags=TestGrep._reflags)
591
self.assertContainsRe(out, "^file1.aa~4:line1$",
592
flags=TestGrep._reflags)
593
self.assertContainsRe(out, "^file1.aa~5:line1$",
594
flags=TestGrep._reflags)
595
self.assertContainsRe(out, "^file1.aa~3:line10$",
596
flags=TestGrep._reflags)
597
self.assertContainsRe(out, "^file1.aa~4:line10$",
598
flags=TestGrep._reflags)
599
self.assertContainsRe(out, "^file1.aa~5:line10$",
600
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)
601
539
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
602
540
# finds line1 and line10 over 3 revisions
603
541
self.assertEqual(len(out.splitlines()), 6)
715
649
self._mk_versioned_file('dir2/file2.cc')
717
651
out, err = self.run_bzr(['grep', '-r', 'last:1',
718
'--include', '*.aa', '--include', '*.bb', 'l..e1'])
719
self.assertContainsRe(
720
out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
721
self.assertContainsRe(
722
out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
723
self.assertContainsRe(
724
out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
725
self.assertContainsRe(
726
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)
727
657
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
728
658
# finds line1 and line10
729
659
self.assertEqual(len(out.splitlines()), 4)
731
661
out, err = self.run_bzr(['grep', '-r', 'last:1',
732
'--include', '*.aa', '--include', '*.bb', 'line1'])
733
self.assertContainsRe(
734
out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
735
self.assertContainsRe(
736
out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
737
self.assertContainsRe(
738
out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
739
self.assertContainsRe(
740
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)
741
667
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
742
668
# finds line1 and line10
743
669
self.assertEqual(len(out.splitlines()), 4)
759
685
self._mk_versioned_file('dir2/file2.cc')
761
687
out, err = self.run_bzr(['grep', '--include', '*.aa',
762
'--include', '*.bb', 'l.n.1'])
763
self.assertContainsRe(out, "^dir0/file0.aa:line1$",
764
flags=TestGrep._reflags)
765
self.assertContainsRe(out, "^dir1/file1.bb:line1$",
766
flags=TestGrep._reflags)
767
self.assertContainsRe(
768
out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
769
self.assertContainsRe(
770
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)
771
693
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
772
694
# finds line1 and line10
773
695
self.assertEqual(len(out.splitlines()), 4)
775
697
out, err = self.run_bzr(['grep', '--include', '*.aa',
776
'--include', '*.bb', 'line1'])
777
self.assertContainsRe(out, "^dir0/file0.aa:line1$",
778
flags=TestGrep._reflags)
779
self.assertContainsRe(out, "^dir1/file1.bb:line1$",
780
flags=TestGrep._reflags)
781
self.assertContainsRe(
782
out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
783
self.assertContainsRe(
784
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)
785
703
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
786
704
# finds line1 and line10
787
705
self.assertEqual(len(out.splitlines()), 4)
803
721
self._mk_versioned_file('dir2/file2.cc')
805
723
out, err = self.run_bzr(['grep', '-r', 'last:1',
806
'--exclude', '*.cc', 'l..e1'])
807
self.assertContainsRe(
808
out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
809
self.assertContainsRe(
810
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)
811
727
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
813
729
out, err = self.run_bzr(['grep', '-r', 'last:1',
814
'--exclude', '*.cc', 'line1'])
815
self.assertContainsRe(
816
out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
817
self.assertContainsRe(
818
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)
819
733
self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
821
735
def test_wtree_exclude_from_outside_dir(self):
886
792
self._mk_versioned_dir('dir1')
887
793
self._mk_versioned_file('dir1/file1.txt')
889
out, err = self.run_bzr(
890
['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
891
self.assertContainsRe(
892
out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
893
self.assertContainsRe(
894
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)
896
out, err = self.run_bzr(
897
['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
898
self.assertContainsRe(
899
out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
900
self.assertContainsRe(
901
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)
903
803
def test_wtree_files_from_outside_dir(self):
904
804
"""(wtree) Grep for pattern with dirs passed as argument.
941
837
self._mk_versioned_dir('dir0/dir00')
942
838
self._mk_versioned_file('dir0/dir00/file0.txt')
944
out, err = self.run_bzr(
945
['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
946
self.assertContainsRe(
947
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)
949
843
out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
950
self.assertContainsRe(
951
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
844
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
953
out, err = self.run_bzr(
954
['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
955
self.assertContainsRe(
956
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)
958
849
out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
959
self.assertContainsRe(
960
out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
850
self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
962
852
def test_wtree_files_from_outside_two_dirs(self):
963
853
"""(wtree) Grep for pattern with two levels of nested dir.
1003
889
os.chdir('dir0')
1005
891
out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
1006
self.assertContainsRe(
1007
out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1009
out, err = self.run_bzr(
1010
['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
1011
self.assertContainsRe(
1012
out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1014
out, err = self.run_bzr(
1015
['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'])
1016
898
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1018
900
out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
1019
self.assertContainsRe(
1020
out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1022
out, err = self.run_bzr(
1023
['grep', '-r', 'last:1', '--from-root', 'line1'])
1024
self.assertContainsRe(
1025
out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1027
out, err = self.run_bzr(
1028
['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'])
1029
907
self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1030
908
self.assertEqual(len(out.splitlines()), 0)
1103
973
self._mk_versioned_file('file0.txt')
1105
975
out, err = self.run_bzr(['grep', '-r', 'last:1',
1106
'-i', 'Li.E1', 'file0.txt'])
1107
self.assertContainsRe(out, "file0.txt~.:line1",
1108
flags=TestGrep._reflags)
1110
out, err = self.run_bzr(['grep', '-r', 'last:1',
1111
'-i', 'LinE1', 'file0.txt'])
1112
self.assertContainsRe(out, "file0.txt~.:line1",
1113
flags=TestGrep._reflags)
1115
out, err = self.run_bzr(['grep', '-r', 'last:1',
1116
'--ignore-case', 'LinE1', 'file0.txt'])
1117
self.assertContainsRe(out, "^file0.txt~.:line1",
1118
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)
1120
987
def test_wtree_ignore_case_match(self):
1121
988
"""(wtree) Match fails without --ignore-case.
1213
1076
self._mk_versioned_file('file0.txt')
1215
1078
out, err = self.run_bzr(['grep', '-r', 'last:1',
1216
'--line-number', 'li.e3', 'file0.txt'])
1217
self.assertContainsRe(out, "file0.txt~.:3:line3",
1218
flags=TestGrep._reflags)
1220
out, err = self.run_bzr(['grep', '-r', 'last:1',
1221
'--line-number', 'line3', 'file0.txt'])
1222
self.assertContainsRe(out, "file0.txt~.:3:line3",
1223
flags=TestGrep._reflags)
1225
out, err = self.run_bzr(['grep', '-r', 'last:1',
1226
'-n', 'line1', 'file0.txt'])
1227
self.assertContainsRe(out, "file0.txt~.:1:line1",
1228
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)
1230
1090
out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
1231
self.assertContainsRe(out, "file0.txt:3:line3",
1232
flags=TestGrep._reflags)
1091
self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1234
1093
def test_wtree_with_line_number(self):
1235
1094
"""(wtree) Search for pattern with --line-number.
1346
1198
# v4 should not be present in revno 3
1347
1199
out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
1348
self.assertNotContainsRe(
1349
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1200
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1351
1202
# v4 should be present in revno 4
1352
1203
out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
1353
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1354
flags=TestGrep._reflags)
1204
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1356
1206
# v4 should not be present in revno 3
1357
1207
out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
1358
self.assertNotContainsRe(
1359
out, "^dir0/file0.txt", flags=TestGrep._reflags)
1208
self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1361
1210
# v4 should be present in revno 4
1362
1211
out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
1363
self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1364
flags=TestGrep._reflags)
1212
self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1366
1214
def test_revno_range_basic_history_grep(self):
1367
1215
"""Search for pattern in revision range for file.
1455
1299
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1457
1301
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
1458
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1459
flags=TestGrep._reflags)
1460
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1461
flags=TestGrep._reflags)
1462
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1463
flags=TestGrep._reflags)
1464
self.assertNotContainsRe(
1465
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)
1466
1306
self.assertEqual(len(out.splitlines()), 3)
1468
1308
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
1469
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1470
flags=TestGrep._reflags)
1471
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1472
flags=TestGrep._reflags)
1473
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1474
flags=TestGrep._reflags)
1475
self.assertNotContainsRe(
1476
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)
1477
1313
self.assertEqual(len(out.splitlines()), 3)
1479
1315
def test_revno_range_versioned_file_from_outside_dir(self):
1490
1326
self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1492
1328
out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
1493
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1494
flags=TestGrep._reflags)
1495
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1496
flags=TestGrep._reflags)
1497
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1498
flags=TestGrep._reflags)
1499
self.assertNotContainsRe(
1500
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)
1502
1334
out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
1503
self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1504
flags=TestGrep._reflags)
1505
self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1506
flags=TestGrep._reflags)
1507
self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1508
flags=TestGrep._reflags)
1509
self.assertNotContainsRe(
1510
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)
1512
1340
def test_levels(self):
1513
1341
"""--levels=0 should show findings from merged revision.
1535
1363
# levels should be ignored by wtree grep
1536
1364
out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
1537
self.assertContainsRe(out, "^file0.txt:line1$",
1538
flags=TestGrep._reflags)
1539
self.assertContainsRe(out, "^file1.txt:line1$",
1540
flags=TestGrep._reflags)
1541
self.assertContainsRe(out, "^file0.txt:line10$",
1542
flags=TestGrep._reflags)
1543
self.assertContainsRe(out, "^file1.txt:line10$",
1544
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)
1545
1369
self.assertEqual(len(out.splitlines()), 4)
1547
out, err = self.run_bzr(
1548
['grep', '-r', 'last:1..', '--levels=0', 'line1'])
1549
self.assertContainsRe(out, "^file0.txt~2:line1$",
1550
flags=TestGrep._reflags)
1551
self.assertContainsRe(out, "^file1.txt~2:line1$",
1552
flags=TestGrep._reflags)
1553
self.assertContainsRe(
1554
out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1555
self.assertContainsRe(
1556
out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1557
self.assertContainsRe(out, "^file0.txt~2:line10$",
1558
flags=TestGrep._reflags)
1559
self.assertContainsRe(out, "^file1.txt~2:line10$",
1560
flags=TestGrep._reflags)
1561
self.assertContainsRe(
1562
out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1563
self.assertContainsRe(
1564
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)
1565
1380
self.assertEqual(len(out.splitlines()), 8)
1567
out, err = self.run_bzr(
1568
['grep', '-r', '-1..', '-n', '--levels=0', 'line1'])
1569
self.assertContainsRe(out, "^file0.txt~2:1:line1$",
1570
flags=TestGrep._reflags)
1571
self.assertContainsRe(out, "^file1.txt~2:1:line1$",
1572
flags=TestGrep._reflags)
1573
self.assertContainsRe(
1574
out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1575
self.assertContainsRe(
1576
out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1577
self.assertContainsRe(
1578
out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1579
self.assertContainsRe(
1580
out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1581
self.assertContainsRe(
1582
out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1583
self.assertContainsRe(
1584
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)
1585
1391
self.assertEqual(len(out.splitlines()), 8)
1587
1393
# levels should be ignored by wtree grep
1588
1394
out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
1589
self.assertContainsRe(out, "^file0.txt:line1$",
1590
flags=TestGrep._reflags)
1591
self.assertContainsRe(out, "^file1.txt:line1$",
1592
flags=TestGrep._reflags)
1593
self.assertContainsRe(out, "^file0.txt:line10$",
1594
flags=TestGrep._reflags)
1595
self.assertContainsRe(out, "^file1.txt:line10$",
1596
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)
1597
1399
self.assertEqual(len(out.splitlines()), 4)
1599
out, err = self.run_bzr(
1600
['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
1601
self.assertContainsRe(out, "^file0.txt~2:line1$",
1602
flags=TestGrep._reflags)
1603
self.assertContainsRe(out, "^file1.txt~2:line1$",
1604
flags=TestGrep._reflags)
1605
self.assertContainsRe(
1606
out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1607
self.assertContainsRe(
1608
out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1609
self.assertContainsRe(out, "^file0.txt~2:line10$",
1610
flags=TestGrep._reflags)
1611
self.assertContainsRe(out, "^file1.txt~2:line10$",
1612
flags=TestGrep._reflags)
1613
self.assertContainsRe(
1614
out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1615
self.assertContainsRe(
1616
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)
1617
1410
self.assertEqual(len(out.splitlines()), 8)
1619
out, err = self.run_bzr(
1620
['grep', '-r', '-1..', '-n', '--levels=0', '.ine1'])
1621
self.assertContainsRe(out, "file0.txt~2:1:line1",
1622
flags=TestGrep._reflags)
1623
self.assertContainsRe(out, "file1.txt~2:1:line1",
1624
flags=TestGrep._reflags)
1625
self.assertContainsRe(
1626
out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1627
self.assertContainsRe(
1628
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)
1630
1418
def test_dotted_rev_grep(self):
1631
1419
"""Grep in dotted revs
1761
1538
out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1763
1540
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1764
self.assertContainsRe(out, "^dir0/file00.txt$",
1765
flags=TestGrep._reflags)
1541
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1766
1542
self.assertEqual(len(out.splitlines()), 2)
1769
1545
out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1771
1547
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1772
self.assertContainsRe(out, "^dir0/file00.txt$",
1773
flags=TestGrep._reflags)
1548
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1774
1549
self.assertEqual(len(out.splitlines()), 2)
1777
1552
out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1779
1554
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1780
self.assertContainsRe(out, "^dir0/file00.txt$",
1781
flags=TestGrep._reflags)
1555
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1782
1556
self.assertEqual(len(out.splitlines()), 2)
1785
1559
out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1787
1561
self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1788
self.assertContainsRe(out, "^dir0/file00.txt$",
1789
flags=TestGrep._reflags)
1562
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1790
1563
self.assertEqual(len(out.splitlines()), 2)
1793
1566
out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1795
self.assertContainsRe(out, "^dir0/file00.txt$",
1796
flags=TestGrep._reflags)
1568
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1797
1569
self.assertEqual(len(out.splitlines()), 1)
1800
1572
out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1802
self.assertContainsRe(out, "^dir0/file00.txt$",
1803
flags=TestGrep._reflags)
1574
self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1804
1575
self.assertEqual(len(out.splitlines()), 1)
1847
1618
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1850
1621
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1851
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1852
flags=TestGrep._reflags)
1622
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1853
1623
self.assertEqual(len(out.splitlines()), 2)
1856
1626
out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1859
1629
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1860
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1861
flags=TestGrep._reflags)
1630
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1862
1631
self.assertEqual(len(out.splitlines()), 2)
1865
1634
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1868
1637
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1869
1638
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1870
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1871
flags=TestGrep._reflags)
1639
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1872
1640
self.assertEqual(len(out.splitlines()), 3)
1875
1643
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1878
1646
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1879
1647
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1880
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1881
flags=TestGrep._reflags)
1648
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1882
1649
self.assertEqual(len(out.splitlines()), 3)
1885
1652
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
1887
1654
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1888
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1889
flags=TestGrep._reflags)
1655
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1890
1656
self.assertEqual(len(out.splitlines()), 2)
1893
1659
out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
1895
1661
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1896
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1897
flags=TestGrep._reflags)
1662
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1898
1663
self.assertEqual(len(out.splitlines()), 2)
1901
1666
out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
1902
'dir0', 'file1.txt'])
1667
'dir0', 'file1.txt'])
1904
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1905
flags=TestGrep._reflags)
1669
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1906
1670
self.assertEqual(len(out.splitlines()), 1)
1909
1673
out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
1910
'dir0', 'file1.txt'])
1674
'dir0', 'file1.txt'])
1912
self.assertContainsRe(out, "^dir0/file00.txt~7$",
1913
flags=TestGrep._reflags)
1676
self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1914
1677
self.assertEqual(len(out.splitlines()), 1)
1917
1680
out, err = self.run_bzr(['grep', '-l', 'HELLO',
1918
'-r', '-2', 'file0.txt'])
1681
'-r', '-2', 'file0.txt'])
1920
1683
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1921
1684
self.assertEqual(len(out.splitlines()), 1)
1924
1687
out, err = self.run_bzr(['grep', '-l', 'HE.LO',
1925
'-r', '-2', 'file0.txt'])
1688
'-r', '-2', 'file0.txt'])
1927
1690
self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1928
1691
self.assertEqual(len(out.splitlines()), 1)
1931
1694
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1934
1697
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1935
1698
self.assertEqual(len(out.splitlines()), 1)
1938
1701
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1941
1704
self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1942
1705
self.assertEqual(len(out.splitlines()), 1)
1961
1724
out, err = self.run_bzr(['grep', '--files-without-match', 'HELLO'])
1963
1726
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1964
self.assertContainsRe(out, "^dir0/file01.txt$",
1965
flags=TestGrep._reflags)
1727
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1966
1728
self.assertEqual(len(out.splitlines()), 2)
1969
1731
out, err = self.run_bzr(['grep', '--files-without-match', 'HE.LO'])
1971
1733
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1972
self.assertContainsRe(out, "^dir0/file01.txt$",
1973
flags=TestGrep._reflags)
1734
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1974
1735
self.assertEqual(len(out.splitlines()), 2)
1977
1738
out, err = self.run_bzr(['grep', '-L', 'HELLO'])
1979
1740
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1980
self.assertContainsRe(out, "^dir0/file01.txt$",
1981
flags=TestGrep._reflags)
1741
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1982
1742
self.assertEqual(len(out.splitlines()), 2)
1985
1745
out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
1987
1747
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1988
self.assertContainsRe(out, "^dir0/file01.txt$",
1989
flags=TestGrep._reflags)
1748
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1990
1749
self.assertEqual(len(out.splitlines()), 2)
1993
1752
out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
1995
1754
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1996
self.assertContainsRe(out, "^dir0/file01.txt$",
1997
flags=TestGrep._reflags)
1755
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1998
1756
self.assertEqual(len(out.splitlines()), 2)
2001
1759
out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
2003
1761
self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2004
self.assertContainsRe(out, "^dir0/file01.txt$",
2005
flags=TestGrep._reflags)
1762
self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2006
1763
self.assertEqual(len(out.splitlines()), 2)
2049
1806
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2052
1809
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2053
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2054
flags=TestGrep._reflags)
1810
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2055
1811
self.assertEqual(len(out.splitlines()), 2)
2058
1814
out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2061
1817
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2062
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2063
flags=TestGrep._reflags)
1818
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2064
1819
self.assertEqual(len(out.splitlines()), 2)
2067
1822
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2070
1825
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2071
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2072
flags=TestGrep._reflags)
2073
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2074
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)
2075
1828
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2076
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2077
flags=TestGrep._reflags)
1829
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2078
1830
self.assertEqual(len(out.splitlines()), 5)
2081
1833
out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2084
1836
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2085
self.assertContainsRe(out, "^dir0/file00.txt~6$",
2086
flags=TestGrep._reflags)
2087
self.assertContainsRe(out, "^dir0/file01.txt~6$",
2088
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)
2089
1839
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2090
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2091
flags=TestGrep._reflags)
1840
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2092
1841
self.assertEqual(len(out.splitlines()), 5)
2095
1844
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
2097
1846
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2098
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2099
flags=TestGrep._reflags)
1847
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2100
1848
self.assertEqual(len(out.splitlines()), 2)
2103
1851
out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
2105
1853
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2106
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2107
flags=TestGrep._reflags)
1854
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2108
1855
self.assertEqual(len(out.splitlines()), 2)
2111
1858
out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
2112
'dir0', 'file1.txt'])
1859
'dir0', 'file1.txt'])
2114
1861
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2115
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2116
flags=TestGrep._reflags)
1862
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2117
1863
self.assertEqual(len(out.splitlines()), 2)
2120
1866
out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
2121
'dir0', 'file1.txt'])
1867
'dir0', 'file1.txt'])
2123
1869
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2124
self.assertContainsRe(out, "^dir0/file01.txt~7$",
2125
flags=TestGrep._reflags)
1870
self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2126
1871
self.assertEqual(len(out.splitlines()), 2)
2129
1874
out, err = self.run_bzr(['grep', '-L', 'HELLO',
2130
'-r', '-2', 'file1.txt'])
1875
'-r', '-2', 'file1.txt'])
2132
1877
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2133
1878
self.assertEqual(len(out.splitlines()), 1)
2136
1881
out, err = self.run_bzr(['grep', '-L', 'HE.LO',
2137
'-r', '-2', 'file1.txt'])
1882
'-r', '-2', 'file1.txt'])
2139
1884
self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2140
1885
self.assertEqual(len(out.splitlines()), 1)
2143
1888
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2146
1891
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2147
1892
self.assertEqual(len(out.splitlines()), 1)
2150
1895
out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2153
1898
self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2154
1899
self.assertEqual(len(out.splitlines()), 1)
2188
1931
self.build_tree(contents)
2189
1932
tree.add(contents)
2190
1933
tree.commit("Initial commit")
1934
as_utf8 = u"\u1234".encode("UTF-8")
2193
1936
# GZ 2010-06-07: Note we can't actually grep for \u1234 as the pattern
2194
1937
# is mangled according to the user encoding.
2195
streams = self.run_bzr_raw(["grep", "--files-with-matches",
2196
u"contents"], encoding="UTF-8")
2197
as_utf8 = as_utf8.encode("UTF-8")
2198
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", ""))
2200
streams = self.run_bzr_raw(["grep", "-r", "1", "--files-with-matches",
2201
u"contents"], encoding="UTF-8")
2202
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", ""))
2204
1946
fileencoding = osutils.get_user_encoding()
2205
1947
as_mangled = as_utf8.decode(fileencoding, "replace").encode("UTF-8")
2207
streams = self.run_bzr_raw(["grep", "-n",
2208
u"contents"], encoding="UTF-8")
2209
self.assertEqual(streams, (b"%s:1:contents of %s\n" %
2210
(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), ""))
2212
streams = self.run_bzr_raw(["grep", "-n", "-r", "1",
2213
u"contents"], encoding="UTF-8")
2214
self.assertEqual(streams, (b"%s~1:1:contents of %s\n" %
2215
(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), ""))
2218
1960
class TestColorGrep(GrepTestBase):
2219
1961
"""Tests for the --color option."""
1963
# GZ 2010-06-05: Does this really require the feature? Nothing prints.
1964
_test_needs_features = [ColorFeature]
2221
1966
_rev_sep = color_string('~', fg=FG.BOLD_YELLOW)
2222
1967
_sep = color_string(':', fg=FG.BOLD_CYAN)
2285
2029
# prepare colored result
2286
2030
foo = color_string('foo', fg=FG.BOLD_RED)
2287
2031
res = (FG.MAGENTA + 'file0.txt'
2288
+ self._rev_sep + '1' + self._sep
2289
+ foo + ' is ' + foo + 'bar1' + '\n')
2032
+ self._rev_sep + '1' + self._sep
2033
+ foo + ' is ' + foo + 'bar1' + '\n')
2290
2034
txt_res = 'file0.txt~1:foo is foobar1\n'
2292
2036
nres = (FG.MAGENTA + 'file0.txt'
2293
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2294
+ foo + ' is ' + foo + 'bar1' + '\n')
2037
+ self._rev_sep + '1' + self._sep + '1' + self._sep
2038
+ foo + ' is ' + foo + 'bar1' + '\n')
2296
2040
out, err = self.run_bzr(['grep', '--color',
2297
'always', '-r', '1', 'foo'])
2041
'always', '-r', '1', 'foo'])
2298
2042
self.assertEqual(out, res)
2299
2043
self.assertEqual(len(out.splitlines()), 1)
2301
2045
# auto should produce plain text result
2302
2046
# as stdout is redireched here.
2303
2047
out, err = self.run_bzr(['grep', '--color',
2304
'auto', '-r', '1', 'foo'])
2048
'auto', '-r', '1', 'foo'])
2305
2049
self.assertEqual(out, txt_res)
2306
2050
self.assertEqual(len(out.splitlines()), 1)
2308
2052
out, err = self.run_bzr(['grep', '-i', '--color',
2309
'always', '-r', '1', 'FOO'])
2053
'always', '-r', '1', 'FOO'])
2310
2054
self.assertEqual(out, res)
2311
2055
self.assertEqual(len(out.splitlines()), 1)
2313
2057
out, err = self.run_bzr(['grep', '--color',
2314
'always', '-r', '1', 'f.o'])
2058
'always', '-r', '1', 'f.o'])
2315
2059
self.assertEqual(out, res)
2316
2060
self.assertEqual(len(out.splitlines()), 1)
2318
2062
out, err = self.run_bzr(['grep', '-i', '--color',
2319
'always', '-r', '1', 'F.O'])
2063
'always', '-r', '1', 'F.O'])
2320
2064
self.assertEqual(out, res)
2321
2065
self.assertEqual(len(out.splitlines()), 1)
2323
2067
out, err = self.run_bzr(['grep', '-n', '--color',
2324
'always', '-r', '1', 'foo'])
2068
'always', '-r', '1', 'foo'])
2325
2069
self.assertEqual(out, nres)
2326
2070
self.assertEqual(len(out.splitlines()), 1)
2328
2072
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2329
'always', '-r', '1', 'FOO'])
2073
'always', '-r', '1', 'FOO'])
2330
2074
self.assertEqual(out, nres)
2331
2075
self.assertEqual(len(out.splitlines()), 1)
2333
2077
out, err = self.run_bzr(['grep', '-n', '--color',
2334
'always', '-r', '1', 'f.o'])
2078
'always', '-r', '1', 'f.o'])
2335
2079
self.assertEqual(out, nres)
2336
2080
self.assertEqual(len(out.splitlines()), 1)
2338
2082
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2339
'always', '-r', '1', 'F.O'])
2083
'always', '-r', '1', 'F.O'])
2340
2084
self.assertEqual(out, nres)
2341
2085
self.assertEqual(len(out.splitlines()), 1)
2352
2096
# prepare colored result
2353
2097
foo = color_string('foo', fg=FG.BOLD_RED)
2354
2098
res = (FG.MAGENTA + 'file0.txt'
2355
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2099
+ self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2357
2101
nres = (FG.MAGENTA + 'file0.txt'
2358
+ self._sep + '1' + self._sep
2359
+ foo + ' is ' + foo + 'bar1' + '\n')
2361
out, err = self.run_bzr(['grep', '--color',
2363
self.assertEqual(out, res)
2364
self.assertEqual(len(out.splitlines()), 1)
2366
out, err = self.run_bzr(['grep', '-i', '--color',
2368
self.assertEqual(out, res)
2369
self.assertEqual(len(out.splitlines()), 1)
2371
out, err = self.run_bzr(['grep', '--color',
2373
self.assertEqual(out, res)
2374
self.assertEqual(len(out.splitlines()), 1)
2376
out, err = self.run_bzr(['grep', '-i', '--color',
2378
self.assertEqual(out, res)
2379
self.assertEqual(len(out.splitlines()), 1)
2381
out, err = self.run_bzr(['grep', '-n', '--color',
2383
self.assertEqual(out, nres)
2384
self.assertEqual(len(out.splitlines()), 1)
2386
out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2388
self.assertEqual(out, nres)
2389
self.assertEqual(len(out.splitlines()), 1)
2391
out, err = self.run_bzr(['grep', '-n', '--color',
2393
self.assertEqual(out, nres)
2394
self.assertEqual(len(out.splitlines()), 1)
2396
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',
2398
2142
self.assertEqual(out, nres)
2399
2143
self.assertEqual(len(out.splitlines()), 1)
2448
2192
self.assertEqualDiff(subst_dates(out), '''\
2449
2193
=== revno:3 ===
2450
2194
=== modified file 'hello'
2451
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2452
+++ 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
2456
2200
def test_grep_diff_revision_range(self):
2457
2201
"""grep -p revision range."""
2458
2202
tree = self.make_example_branch()
2459
self.build_tree_contents([('hello', b'hello world!1\n')]) # rev 3
2203
self.build_tree_contents([('hello', b'hello world!1\n')]) # rev 3
2460
2204
tree.commit('rev3')
2461
self.build_tree_contents([('blah', b'hello world!2\n')]) # rev 4
2205
self.build_tree_contents([('blah', b'hello world!2\n')]) # rev 4
2462
2206
tree.add('blah')
2463
2207
tree.commit('rev4')
2464
with open('hello', 'a') as f:
2465
f.write('hello world!3\n')
2466
# 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
2467
2210
tree.commit('rev5')
2468
2211
out, err = self.run_bzr(['grep', '-p', '-r', '2..5', 'hello'])
2469
2212
self.assertEqual(err, '')
2470
2213
self.assertEqualDiff(subst_dates(out), '''\
2471
2214
=== revno:5 ===
2472
2215
=== modified file 'hello'
2473
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2474
+++ 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
2476
2219
=== revno:4 ===
2477
2220
=== added file 'blah'
2479
2222
=== revno:3 ===
2480
2223
=== modified file 'hello'
2481
--- hello\tYYYY-MM-DD HH:MM:SS +ZZZZ
2482
+++ 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