/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.40.11 by Parth Malwankar
added basic test
1
# Copyright (C) 2010 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import os
18
import re
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
19
import unicodedata as ud
0.40.11 by Parth Malwankar
added basic test
20
0.43.12 by Parth Malwankar
added feature for running color tests conditionally
21
import features
0.43.11 by Parth Malwankar
test cases for colored results.
22
from termcolor import color_string, FG
0.43.12 by Parth Malwankar
added feature for running color tests conditionally
23
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
24
from bzrlib import tests, osutils
0.40.11 by Parth Malwankar
added basic test
25
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
26
# NOTE: As bzr-grep optimizes PATTERN search to -F/--fixed-string
27
# for patterns that are not alphanumeric+whitespace, we test grep
28
# specfically with patterns that have special characters so that
29
# regex path is tested. alphanumeric patterns test the -F path.
30
0.43.11 by Parth Malwankar
test cases for colored results.
31
class GrepTestBase(tests.TestCaseWithTransport):
32
    """Base class for testing grep.
33
34
    Provides support methods for creating directory and file revisions.
35
    """
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
36
    _reflags = re.MULTILINE|re.DOTALL
0.40.11 by Parth Malwankar
added basic test
37
0.40.26 by Parth Malwankar
test passing for multiple matches
38
    def _mk_file(self, path, line_prefix, total_lines, versioned):
0.40.13 by Parth Malwankar
added tests for -R and -i
39
        text=''
40
        for i in range(total_lines):
41
            text += line_prefix + str(i+1) + "\n"
42
0.40.12 by Parth Malwankar
added test for versioned file
43
        open(path, 'w').write(text)
44
        if versioned:
45
            self.run_bzr(['add', path])
0.40.25 by Parth Malwankar
added test case for multilevel dir.
46
            self.run_bzr(['ci', '-m', '"' + path + '"'])
0.40.12 by Parth Malwankar
added test for versioned file
47
0.41.14 by Parth Malwankar
updated help and added test.
48
    def _update_file(self, path, text, checkin=True):
0.40.34 by Parth Malwankar
added tests for single revision history search
49
        """append text to file 'path' and check it in"""
50
        open(path, 'a').write(text)
0.41.14 by Parth Malwankar
updated help and added test.
51
        if checkin:
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
52
            self.run_bzr(['ci', path, '-m', '"' + path + '"'])
0.40.34 by Parth Malwankar
added tests for single revision history search
53
0.40.37 by Parth Malwankar
grep now accepts rev range
54
    def _mk_unknown_file(self, path, line_prefix='line', total_lines=10):
0.40.26 by Parth Malwankar
test passing for multiple matches
55
        self._mk_file(path, line_prefix, total_lines, versioned=False)
0.40.13 by Parth Malwankar
added tests for -R and -i
56
57
    def _mk_versioned_file(self, path, line_prefix='line', total_lines=10):
0.40.26 by Parth Malwankar
test passing for multiple matches
58
        self._mk_file(path, line_prefix, total_lines, versioned=True)
0.40.13 by Parth Malwankar
added tests for -R and -i
59
60
    def _mk_dir(self, path, versioned):
61
        os.mkdir(path)
62
        if versioned:
63
            self.run_bzr(['add', path])
0.40.26 by Parth Malwankar
test passing for multiple matches
64
            self.run_bzr(['ci', '-m', '"' + path + '"'])
0.40.13 by Parth Malwankar
added tests for -R and -i
65
0.40.37 by Parth Malwankar
grep now accepts rev range
66
    def _mk_unknown_dir(self, path):
0.40.26 by Parth Malwankar
test passing for multiple matches
67
        self._mk_dir(path, versioned=False)
0.40.13 by Parth Malwankar
added tests for -R and -i
68
69
    def _mk_versioned_dir(self, path):
70
        self._mk_dir(path, versioned=True)
71
0.43.11 by Parth Malwankar
test cases for colored results.
72
class TestGrep(GrepTestBase):
73
    """Core functional tests for grep."""
74
0.40.37 by Parth Malwankar
grep now accepts rev range
75
    def test_basic_unknown_file(self):
0.41.13 by Parth Malwankar
working tree grep is now working
76
        """Search for pattern in specfic file.
77
78
        If specified file is unknown, grep it anyway."""
0.40.11 by Parth Malwankar
added basic test
79
        wd = 'foobar0'
80
        self.make_branch_and_tree(wd)
81
        os.chdir(wd)
0.40.37 by Parth Malwankar
grep now accepts rev range
82
        self._mk_unknown_file('file0.txt')
0.41.18 by Parth Malwankar
updated test to ensure that unknown files are skipped by default.
83
0.40.11 by Parth Malwankar
added basic test
84
        out, err = self.run_bzr(['grep', 'line1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
85
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
86
        self.assertEqual(len(out.splitlines()), 2) # finds line1 and line10
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
87
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
88
        out, err = self.run_bzr(['grep', 'line\d+', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
89
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
90
        self.assertEqual(len(out.splitlines()), 10)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
91
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
92
        # unknown file is not grepped unless explicitely specified
0.41.18 by Parth Malwankar
updated test to ensure that unknown files are skipped by default.
93
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
94
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
95
        self.assertEqual(len(out.splitlines()), 0)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
96
97
        # unknown file is not grepped unless explicitely specified
98
        out, err = self.run_bzr(['grep', 'line1$'])
99
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
100
        self.assertEqual(len(out.splitlines()), 0)
0.41.18 by Parth Malwankar
updated test to ensure that unknown files are skipped by default.
101
0.41.23 by Parth Malwankar
added tests for --include/exclude
102
    def test_ver_basic_file(self):
0.41.17 by Parth Malwankar
added tests.
103
        """(versioned) Search for pattern in specfic file.
104
        """
0.41.14 by Parth Malwankar
updated help and added test.
105
        wd = 'foobar0'
106
        self.make_branch_and_tree(wd)
107
        os.chdir(wd)
108
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
109
0.41.14 by Parth Malwankar
updated help and added test.
110
        out, err = self.run_bzr(['grep', '-r', '1', 'line1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
111
        self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
112
        self.assertEqual(len(out.splitlines()), 2) # finds line1 and line10
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
113
114
        out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]$', 'file0.txt'])
115
        self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
116
        self.assertEqual(len(out.splitlines()), 9)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
117
118
        # finds all the lines
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
119
        out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
120
        self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
121
        self.assertEqual(len(out.splitlines()), 10)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
122
0.41.17 by Parth Malwankar
added tests.
123
    def test_wtree_basic_file(self):
124
        """(wtree) Search for pattern in specfic file.
125
        """
0.40.12 by Parth Malwankar
added test for versioned file
126
        wd = 'foobar0'
127
        self.make_branch_and_tree(wd)
128
        os.chdir(wd)
0.40.13 by Parth Malwankar
added tests for -R and -i
129
        self._mk_versioned_file('file0.txt')
0.41.14 by Parth Malwankar
updated help and added test.
130
        self._update_file('file0.txt', 'ABC\n', checkin=False)
131
132
        out, err = self.run_bzr(['grep', 'ABC', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
133
        self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
134
        self.assertEqual(len(out.splitlines()), 1)
0.41.14 by Parth Malwankar
updated help and added test.
135
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
136
        out, err = self.run_bzr(['grep', '[A-Z]{3}', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
137
        self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
138
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
139
0.41.14 by Parth Malwankar
updated help and added test.
140
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'ABC', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
141
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
142
        self.assertEqual(len(out.splitlines()), 0)
0.40.12 by Parth Malwankar
added test for versioned file
143
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
144
        out, err = self.run_bzr(['grep', '-r', 'last:1', '[A-Z]{3}', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
145
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
146
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
147
0.41.23 by Parth Malwankar
added tests for --include/exclude
148
    def test_ver_basic_include(self):
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
149
        """(versioned) Ensure that -I flag is respected.
0.41.22 by Parth Malwankar
added basic --exclude/include tests
150
        """
151
        wd = 'foobar0'
152
        self.make_branch_and_tree(wd)
153
        os.chdir(wd)
154
        self._mk_versioned_file('file0.aa')
155
        self._mk_versioned_file('file0.bb')
156
        self._mk_versioned_file('file0.cc')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
157
0.41.22 by Parth Malwankar
added basic --exclude/include tests
158
        out, err = self.run_bzr(['grep', '-r', 'last:1',
159
            '--include', '*.aa', '--include', '*.bb', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
160
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
161
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
162
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
163
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
164
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
165
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
166
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
167
            '--include', '*.aa', '--include', '*.bb', 'line1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
168
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
169
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
170
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
171
        # one lines each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
172
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
173
174
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
175
            '-I', '*.aa', '-I', '*.bb', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
176
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
177
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
178
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
179
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
180
        self.assertEqual(len(out.splitlines()), 4)
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
181
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
182
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
183
            '-I', '*.aa', '-I', '*.bb', 'line1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
184
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
185
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
186
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
187
        # one lines each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
188
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
189
0.41.22 by Parth Malwankar
added basic --exclude/include tests
190
    def test_wtree_basic_include(self):
191
        """(wtree) Ensure that --include flag is respected.
192
        """
193
        wd = 'foobar0'
194
        self.make_branch_and_tree(wd)
195
        os.chdir(wd)
196
        self._mk_versioned_file('file0.aa')
197
        self._mk_versioned_file('file0.bb')
198
        self._mk_versioned_file('file0.cc')
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
199
0.41.22 by Parth Malwankar
added basic --exclude/include tests
200
        out, err = self.run_bzr(['grep', '--include', '*.aa',
201
            '--include', '*.bb', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
202
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
203
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
204
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
205
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
206
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
207
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
208
        out, err = self.run_bzr(['grep', '--include', '*.aa',
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
209
            '--include', '*.bb', 'line1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
210
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
211
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
212
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
213
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
214
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
215
0.41.23 by Parth Malwankar
added tests for --include/exclude
216
    def test_ver_basic_exclude(self):
0.41.22 by Parth Malwankar
added basic --exclude/include tests
217
        """(versioned) Ensure that --exclude flag is respected.
218
        """
219
        wd = 'foobar0'
220
        self.make_branch_and_tree(wd)
221
        os.chdir(wd)
222
        self._mk_versioned_file('file0.aa')
223
        self._mk_versioned_file('file0.bb')
224
        self._mk_versioned_file('file0.cc')
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
225
0.41.22 by Parth Malwankar
added basic --exclude/include tests
226
        out, err = self.run_bzr(['grep', '-r', 'last:1',
227
            '--exclude', '*.cc', 'line1'])
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
228
        self.assertContainsRe(out, "file0.aa~.:line1$", flags=TestGrep._reflags)
229
        self.assertContainsRe(out, "file0.bb~.:line1$", flags=TestGrep._reflags)
230
        self.assertContainsRe(out, "file0.aa~.:line10", flags=TestGrep._reflags)
231
        self.assertContainsRe(out, "file0.bb~.:line10", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
232
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
233
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
234
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
235
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
236
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
237
            '--exclude', '*.cc', 'line1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
238
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
239
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
240
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
241
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
242
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
243
244
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
245
            '-X', '*.cc', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
246
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
247
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
248
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
249
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
250
        self.assertEqual(len(out.splitlines()), 4)
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
251
0.41.22 by Parth Malwankar
added basic --exclude/include tests
252
    def test_wtree_basic_exclude(self):
253
        """(wtree) Ensure that --exclude flag is respected.
254
        """
255
        wd = 'foobar0'
256
        self.make_branch_and_tree(wd)
257
        os.chdir(wd)
258
        self._mk_versioned_file('file0.aa')
259
        self._mk_versioned_file('file0.bb')
260
        self._mk_versioned_file('file0.cc')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
261
0.41.22 by Parth Malwankar
added basic --exclude/include tests
262
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
263
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
264
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
265
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
266
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
267
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
268
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
269
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'lin.1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
270
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
271
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
272
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
273
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
274
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
275
0.41.23 by Parth Malwankar
added tests for --include/exclude
276
    def test_ver_multiple_files(self):
0.41.17 by Parth Malwankar
added tests.
277
        """(versioned) Search for pattern in multiple files.
278
        """
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
279
        wd = 'foobar0'
280
        self.make_branch_and_tree(wd)
281
        os.chdir(wd)
282
        self._mk_versioned_file('file0.txt', total_lines=2)
283
        self._mk_versioned_file('file1.txt', total_lines=2)
284
        self._mk_versioned_file('file2.txt', total_lines=2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
285
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
286
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
287
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
288
        self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
289
        self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
290
        self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
291
        self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
292
        self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
293
        self.assertEqual(len(out.splitlines()), 6)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
294
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
295
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
296
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
297
        self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
298
        self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
299
        self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
300
        self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
301
        self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
302
        self.assertEqual(len(out.splitlines()), 6)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
303
304
    def test_multiple_wtree_files(self):
0.41.17 by Parth Malwankar
added tests.
305
        """(wtree) Search for pattern in multiple files in working tree.
306
        """
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
307
        wd = 'foobar0'
308
        self.make_branch_and_tree(wd)
309
        os.chdir(wd)
310
        self._mk_versioned_file('file0.txt', total_lines=2)
311
        self._mk_versioned_file('file1.txt', total_lines=2)
312
        self._mk_versioned_file('file2.txt', total_lines=2)
313
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
314
        self._update_file('file1.txt', 'HELLO\n', checkin=True)
315
        self._update_file('file2.txt', 'HELLO\n', checkin=False)
316
317
        out, err = self.run_bzr(['grep', 'HELLO',
318
            'file0.txt', 'file1.txt', 'file2.txt'])
319
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
320
        self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
321
        self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
322
        self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
323
        self.assertEqual(len(out.splitlines()), 3)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
324
325
        out, err = self.run_bzr(['grep', 'HELLO', '-r', 'last:1',
326
            'file0.txt', 'file1.txt', 'file2.txt'])
327
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
328
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
329
        self.assertContainsRe(out, "file1.txt~.:HELLO", flags=TestGrep._reflags)
330
        self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
331
        self.assertEqual(len(out.splitlines()), 1)
0.40.25 by Parth Malwankar
added test case for multilevel dir.
332
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
333
        out, err = self.run_bzr(['grep', 'HE..O',
334
            'file0.txt', 'file1.txt', 'file2.txt'])
335
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
336
        self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
337
        self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
338
        self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
339
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
340
341
        out, err = self.run_bzr(['grep', 'HE..O', '-r', 'last:1',
342
            'file0.txt', 'file1.txt', 'file2.txt'])
343
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
344
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
345
        self.assertContainsRe(out, "file1.txt~.:HELLO", flags=TestGrep._reflags)
346
        self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
347
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
348
0.41.23 by Parth Malwankar
added tests for --include/exclude
349
    def test_ver_null_option(self):
0.41.17 by Parth Malwankar
added tests.
350
        """(versioned) --null option should use NUL instead of newline.
351
        """
352
        wd = 'foobar0'
353
        self.make_branch_and_tree(wd)
354
        os.chdir(wd)
355
        self._mk_versioned_file('file0.txt', total_lines=3)
356
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
357
        nref = ud.normalize(u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
358
0.41.17 by Parth Malwankar
added tests.
359
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line[1-3]'])
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
360
        nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
361
        self.assertEqual(nout, nref)
362
        self.assertEqual(len(out.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
363
364
        out, err = self.run_bzr(['grep', '-r', 'last:1', '-Z', 'line[1-3]'])
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
365
        nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
366
        self.assertEqual(nout, nref)
367
        self.assertEqual(len(out.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
368
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
369
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line'])
370
        nout = ud.normalize(u'NFC', out.decode('utf-8', 'ignore'))
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
371
        self.assertEqual(nout, nref)
372
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
373
0.41.17 by Parth Malwankar
added tests.
374
    def test_wtree_null_option(self):
375
        """(wtree) --null option should use NUL instead of newline.
376
        """
0.40.27 by Parth Malwankar
added test for null option
377
        wd = 'foobar0'
378
        self.make_branch_and_tree(wd)
379
        os.chdir(wd)
380
        self._mk_versioned_file('file0.txt', total_lines=3)
381
382
        out, err = self.run_bzr(['grep', '--null', 'line[1-3]'])
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
383
        self.assertEqual(out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
384
        self.assertEqual(len(out.splitlines()), 1)
0.40.27 by Parth Malwankar
added test for null option
385
386
        out, err = self.run_bzr(['grep', '-Z', 'line[1-3]'])
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
387
        self.assertEqual(out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
388
        self.assertEqual(len(out.splitlines()), 1)
0.40.27 by Parth Malwankar
added test for null option
389
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
390
        out, err = self.run_bzr(['grep', '-Z', 'line'])
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
391
        self.assertEqual(out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
392
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
393
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
394
    def test_versioned_file_in_dir_no_recursive(self):
0.41.17 by Parth Malwankar
added tests.
395
        """(versioned) Should not recurse with --no-recursive"""
396
        wd = 'foobar0'
397
        self.make_branch_and_tree(wd)
398
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
399
        self._mk_versioned_file('fileX.txt', line_prefix='lin')
0.41.17 by Parth Malwankar
added tests.
400
        self._mk_versioned_dir('dir0')
401
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
402
0.41.17 by Parth Malwankar
added tests.
403
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
404
        self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
405
        self.assertEqual(len(out.splitlines()), 0)
0.41.17 by Parth Malwankar
added tests.
406
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
407
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1$'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
408
        self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
409
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
410
0.41.17 by Parth Malwankar
added tests.
411
    def test_wtree_file_in_dir_no_recursive(self):
412
        """(wtree) Should not recurse with --no-recursive"""
0.40.13 by Parth Malwankar
added tests for -R and -i
413
        wd = 'foobar0'
414
        self.make_branch_and_tree(wd)
415
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
416
        self._mk_versioned_file('fileX.txt', line_prefix='lin')
0.40.13 by Parth Malwankar
added tests for -R and -i
417
        self._mk_versioned_dir('dir0')
418
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
419
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
420
        out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
421
        self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
422
        self.assertEqual(len(out.splitlines()), 0)
0.40.13 by Parth Malwankar
added tests for -R and -i
423
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
424
        out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
425
        self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
426
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
427
0.40.13 by Parth Malwankar
added tests for -R and -i
428
    def test_versioned_file_in_dir_recurse(self):
0.41.17 by Parth Malwankar
added tests.
429
        """(versioned) Should recurse by default.
430
        """
431
        wd = 'foobar0'
432
        self.make_branch_and_tree(wd)
433
        os.chdir(wd)
434
        self._mk_versioned_dir('dir0')
435
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
436
437
        out, err = self.run_bzr(['grep', '-r', '-1', '.i.e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
438
        self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
439
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
440
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
441
0.41.17 by Parth Malwankar
added tests.
442
        out, err = self.run_bzr(['grep', '-r', '-1', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
443
        self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
444
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
445
        self.assertEqual(len(out.splitlines()), 2)
0.41.17 by Parth Malwankar
added tests.
446
447
    def test_wtree_file_in_dir_recurse(self):
448
        """(wtree) Should recurse by default.
449
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
450
        wd = 'foobar0'
451
        self.make_branch_and_tree(wd)
452
        os.chdir(wd)
453
        self._mk_versioned_dir('dir0')
454
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
455
0.41.4 by Parth Malwankar
--recurse is default.
456
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
457
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
458
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
459
        self.assertEqual(len(out.splitlines()), 2)
0.40.23 by Parth Malwankar
added test case for search while inside dir.
460
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
461
        out, err = self.run_bzr(['grep', 'lin.1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
462
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
463
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
464
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
465
0.40.23 by Parth Malwankar
added test case for search while inside dir.
466
    def test_versioned_file_within_dir(self):
0.41.17 by Parth Malwankar
added tests.
467
        """(versioned) Search for pattern while in nested dir.
468
        """
469
        wd = 'foobar0'
470
        self.make_branch_and_tree(wd)
471
        os.chdir(wd)
472
        self._mk_versioned_dir('dir0')
473
        self._mk_versioned_file('dir0/file0.txt')
474
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
475
0.41.17 by Parth Malwankar
added tests.
476
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
477
        self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
478
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
479
        self.assertEqual(len(out.splitlines()), 2)
0.41.17 by Parth Malwankar
added tests.
480
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
481
        out, err = self.run_bzr(['grep', '-r', 'last:1', '.i.e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
482
        self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
483
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
484
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
485
0.41.23 by Parth Malwankar
added tests for --include/exclude
486
    def test_versioned_include_file_within_dir(self):
487
        """(versioned) Ensure --include is respected with file within dir.
488
        """
489
        wd = 'foobar0'
490
        self.make_branch_and_tree(wd)
491
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
492
        self._mk_versioned_dir('dir0')                  # revno 1
493
        self._mk_versioned_file('dir0/file0.txt')       # revno 2
494
        self._mk_versioned_file('dir0/file1.aa')        # revno 3
495
        self._update_file('dir0/file1.aa', 'hello\n')   # revno 4
496
        self._update_file('dir0/file0.txt', 'hello\n')  # revno 5
0.41.23 by Parth Malwankar
added tests for --include/exclude
497
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
498
0.41.23 by Parth Malwankar
added tests for --include/exclude
499
        out, err = self.run_bzr(['grep', '-r', 'last:1',
500
            '--include', '*.aa', 'line1'])
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
501
        self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
502
        self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
503
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
504
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
505
        self.assertEqual(len(out.splitlines()), 2)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
506
507
        out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
508
            '--include', '*.aa', 'line1'])
509
        self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
510
        self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
511
        self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
512
        self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
513
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
514
        # finds line1 and line10 over two revisions
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
515
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
516
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
517
        out, err = self.run_bzr(['grep', '-r', 'last:1',
518
            '--include', '*.aa', 'lin.1'])
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
519
        self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
520
        self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
521
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
522
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
523
        self.assertEqual(len(out.splitlines()), 2)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
524
525
        out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
526
            '--include', '*.aa', 'lin.1'])
527
        self.assertContainsRe(out, "^file1.aa~3:line1$", flags=TestGrep._reflags)
528
        self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
529
        self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
530
        self.assertContainsRe(out, "^file1.aa~3:line10$", flags=TestGrep._reflags)
531
        self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
532
        self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
533
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
534
        # finds line1 and line10 over 3 revisions
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
535
        self.assertEqual(len(out.splitlines()), 6)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
536
0.41.23 by Parth Malwankar
added tests for --include/exclude
537
    def test_versioned_exclude_file_within_dir(self):
538
        """(versioned) Ensure --exclude is respected with file within dir.
539
        """
540
        wd = 'foobar0'
541
        self.make_branch_and_tree(wd)
542
        os.chdir(wd)
543
        self._mk_versioned_dir('dir0')
544
        self._mk_versioned_file('dir0/file0.txt')
545
        self._mk_versioned_file('dir0/file1.aa')
546
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
547
0.41.23 by Parth Malwankar
added tests for --include/exclude
548
        out, err = self.run_bzr(['grep', '-r', 'last:1',
549
            '--exclude', '*.txt', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
550
        self.assertContainsRe(out, "^file1.aa~.:line1", flags=TestGrep._reflags)
551
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
552
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
553
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
554
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
555
        out, err = self.run_bzr(['grep', '-r', 'last:1',
556
            '--exclude', '*.txt', 'l[a-z]ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
557
        self.assertContainsRe(out, "^file1.aa~.:line1", flags=TestGrep._reflags)
558
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
559
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
560
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
561
0.41.17 by Parth Malwankar
added tests.
562
    def test_wtree_file_within_dir(self):
563
        """(wtree) Search for pattern while in nested dir.
564
        """
0.40.23 by Parth Malwankar
added test case for search while inside dir.
565
        wd = 'foobar0'
566
        self.make_branch_and_tree(wd)
567
        os.chdir(wd)
568
        self._mk_versioned_dir('dir0')
569
        self._mk_versioned_file('dir0/file0.txt')
570
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
571
0.40.23 by Parth Malwankar
added test case for search while inside dir.
572
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
573
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
574
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
575
        self.assertEqual(len(out.splitlines()), 2)
0.40.13 by Parth Malwankar
added tests for -R and -i
576
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
577
        out, err = self.run_bzr(['grep', 'l[aeiou]ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
578
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
579
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
580
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
581
0.41.23 by Parth Malwankar
added tests for --include/exclude
582
    def test_wtree_include_file_within_dir(self):
583
        """(wtree) Ensure --include is respected with file within dir.
584
        """
585
        wd = 'foobar0'
586
        self.make_branch_and_tree(wd)
587
        os.chdir(wd)
588
        self._mk_versioned_dir('dir0')
589
        self._mk_versioned_file('dir0/file0.txt')
590
        self._mk_versioned_file('dir0/file1.aa')
591
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
592
0.41.23 by Parth Malwankar
added tests for --include/exclude
593
        out, err = self.run_bzr(['grep', '--include', '*.aa', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
594
        self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
595
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
596
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
597
598
        out, err = self.run_bzr(['grep', '--include', '*.aa', 'l[ixn]ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
599
        self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
600
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
601
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
602
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
603
604
    def test_wtree_exclude_file_within_dir(self):
605
        """(wtree) Ensure --exclude is respected with file within dir.
606
        """
607
        wd = 'foobar0'
608
        self.make_branch_and_tree(wd)
609
        os.chdir(wd)
610
        self._mk_versioned_dir('dir0')
611
        self._mk_versioned_file('dir0/file0.txt')
612
        self._mk_versioned_file('dir0/file1.aa')
613
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
614
615
        out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'li.e1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
616
        self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
617
        self.assertContainsRe(out, "^file1.aa:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
618
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
619
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
620
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
621
0.41.23 by Parth Malwankar
added tests for --include/exclude
622
        out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'line1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
623
        self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
624
        self.assertContainsRe(out, "^file1.aa:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
625
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
626
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
627
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
628
629
    def test_versioned_include_from_outside_dir(self):
630
        """(versioned) Ensure --include is respected during recursive search.
631
        """
632
        wd = 'foobar0'
633
        self.make_branch_and_tree(wd)
634
        os.chdir(wd)
635
636
        self._mk_versioned_dir('dir0')
637
        self._mk_versioned_file('dir0/file0.aa')
638
639
        self._mk_versioned_dir('dir1')
640
        self._mk_versioned_file('dir1/file1.bb')
641
642
        self._mk_versioned_dir('dir2')
643
        self._mk_versioned_file('dir2/file2.cc')
644
645
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
646
            '--include', '*.aa', '--include', '*.bb', 'l..e1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
647
        self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
648
        self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
649
        self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
650
        self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
651
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
652
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
653
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
654
655
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.41.23 by Parth Malwankar
added tests for --include/exclude
656
            '--include', '*.aa', '--include', '*.bb', 'line1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
657
        self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
658
        self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
659
        self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
660
        self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
661
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
662
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
663
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
664
665
    def test_wtree_include_from_outside_dir(self):
666
        """(wtree) Ensure --include is respected during recursive search.
667
        """
668
        wd = 'foobar0'
669
        self.make_branch_and_tree(wd)
670
        os.chdir(wd)
671
672
        self._mk_versioned_dir('dir0')
673
        self._mk_versioned_file('dir0/file0.aa')
674
675
        self._mk_versioned_dir('dir1')
676
        self._mk_versioned_file('dir1/file1.bb')
677
678
        self._mk_versioned_dir('dir2')
679
        self._mk_versioned_file('dir2/file2.cc')
680
681
        out, err = self.run_bzr(['grep', '--include', '*.aa',
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
682
            '--include', '*.bb', 'l.n.1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
683
        self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
684
        self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
685
        self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
686
        self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
687
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
688
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
689
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
690
691
        out, err = self.run_bzr(['grep', '--include', '*.aa',
0.41.23 by Parth Malwankar
added tests for --include/exclude
692
            '--include', '*.bb', 'line1'])
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
693
        self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
694
        self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
695
        self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
696
        self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
697
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
698
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
699
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
700
701
    def test_versioned_exclude_from_outside_dir(self):
702
        """(versioned) Ensure --exclude is respected during recursive search.
703
        """
704
        wd = 'foobar0'
705
        self.make_branch_and_tree(wd)
706
        os.chdir(wd)
707
708
        self._mk_versioned_dir('dir0')
709
        self._mk_versioned_file('dir0/file0.aa')
710
711
        self._mk_versioned_dir('dir1')
712
        self._mk_versioned_file('dir1/file1.bb')
713
714
        self._mk_versioned_dir('dir2')
715
        self._mk_versioned_file('dir2/file2.cc')
716
717
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
718
            '--exclude', '*.cc', 'l..e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
719
        self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
720
        self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
721
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
722
723
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.41.23 by Parth Malwankar
added tests for --include/exclude
724
            '--exclude', '*.cc', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
725
        self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
726
        self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
727
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.41.23 by Parth Malwankar
added tests for --include/exclude
728
729
    def test_wtree_exclude_from_outside_dir(self):
730
        """(wtree) Ensure --exclude is respected during recursive search.
731
        """
732
        wd = 'foobar0'
733
        self.make_branch_and_tree(wd)
734
        os.chdir(wd)
735
736
        self._mk_versioned_dir('dir0')
737
        self._mk_versioned_file('dir0/file0.aa')
738
739
        self._mk_versioned_dir('dir1')
740
        self._mk_versioned_file('dir1/file1.bb')
741
742
        self._mk_versioned_dir('dir2')
743
        self._mk_versioned_file('dir2/file2.cc')
744
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
745
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'l[hijk]ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
746
        self.assertContainsRe(out, "^dir0/file0.aa:line1", flags=TestGrep._reflags)
747
        self.assertContainsRe(out, "^dir1/file1.bb:line1", flags=TestGrep._reflags)
748
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
749
0.41.23 by Parth Malwankar
added tests for --include/exclude
750
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
751
        self.assertContainsRe(out, "^dir0/file0.aa:line1", flags=TestGrep._reflags)
752
        self.assertContainsRe(out, "^dir1/file1.bb:line1", flags=TestGrep._reflags)
753
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.41.23 by Parth Malwankar
added tests for --include/exclude
754
755
    def test_workingtree_files_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
756
        """(wtree) Grep for pattern with dirs passed as argument.
757
        """
0.40.41 by Parth Malwankar
added test for dir arg provided by user
758
        wd = 'foobar0'
759
        self.make_branch_and_tree(wd)
760
        os.chdir(wd)
761
762
        self._mk_versioned_dir('dir0')
763
        self._mk_versioned_file('dir0/file0.txt')
764
765
        self._mk_versioned_dir('dir1')
766
        self._mk_versioned_file('dir1/file1.txt')
767
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
768
        out, err = self.run_bzr(['grep', 'l[aeiou]ne1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
769
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
770
        self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
771
0.40.41 by Parth Malwankar
added test for dir arg provided by user
772
        out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
773
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
774
        self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
775
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
776
    def test_versioned_files_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
777
        """(versioned) Grep for pattern with dirs passed as argument.
778
        """
779
        wd = 'foobar0'
780
        self.make_branch_and_tree(wd)
781
        os.chdir(wd)
782
783
        self._mk_versioned_dir('dir0')
784
        self._mk_versioned_file('dir0/file0.txt')
785
786
        self._mk_versioned_dir('dir1')
787
        self._mk_versioned_file('dir1/file1.txt')
788
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
789
        out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
790
        self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
791
        self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
792
0.41.17 by Parth Malwankar
added tests.
793
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
794
        self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
795
        self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
796
797
    def test_wtree_files_from_outside_dir(self):
798
        """(wtree) Grep for pattern with dirs passed as argument.
799
        """
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
800
        wd = 'foobar0'
801
        self.make_branch_and_tree(wd)
802
        os.chdir(wd)
803
804
        self._mk_versioned_dir('dir0')
805
        self._mk_versioned_file('dir0/file0.txt')
806
807
        self._mk_versioned_dir('dir1')
808
        self._mk_versioned_file('dir1/file1.txt')
809
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
810
        out, err = self.run_bzr(['grep', 'li.e1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
811
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
812
        self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
813
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
814
        out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
815
        self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
816
        self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
817
818
    def test_versioned_files_from_outside_two_dirs(self):
0.41.17 by Parth Malwankar
added tests.
819
        """(versioned) Grep for pattern with two levels of nested dir.
820
        """
821
        wd = 'foobar0'
822
        self.make_branch_and_tree(wd)
823
        os.chdir(wd)
824
825
        self._mk_versioned_dir('dir0')
826
        self._mk_versioned_file('dir0/file0.txt')
827
828
        self._mk_versioned_dir('dir1')
829
        self._mk_versioned_file('dir1/file1.txt')
830
831
        self._mk_versioned_dir('dir0/dir00')
832
        self._mk_versioned_file('dir0/dir00/file0.txt')
833
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
834
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
835
        self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
836
837
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
838
        self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
839
0.41.17 by Parth Malwankar
added tests.
840
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
841
        self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
842
843
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
844
        self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
845
846
    def test_wtree_files_from_outside_two_dirs(self):
847
        """(wtree) Grep for pattern with two levels of nested dir.
848
        """
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
849
        wd = 'foobar0'
850
        self.make_branch_and_tree(wd)
851
        os.chdir(wd)
852
853
        self._mk_versioned_dir('dir0')
854
        self._mk_versioned_file('dir0/file0.txt')
855
856
        self._mk_versioned_dir('dir1')
857
        self._mk_versioned_file('dir1/file1.txt')
858
859
        self._mk_versioned_dir('dir0/dir00')
860
        self._mk_versioned_file('dir0/dir00/file0.txt')
861
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
862
        out, err = self.run_bzr(['grep', 'lin.1', 'dir0/dir00'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
863
        self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
864
865
        out, err = self.run_bzr(['grep', 'li.e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
866
        self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
867
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
868
        out, err = self.run_bzr(['grep', 'line1', 'dir0/dir00'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
869
        self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
870
0.41.4 by Parth Malwankar
--recurse is default.
871
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
872
        self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
0.40.41 by Parth Malwankar
added test for dir arg provided by user
873
0.40.25 by Parth Malwankar
added test case for multilevel dir.
874
    def test_versioned_file_within_dir_two_levels(self):
0.41.17 by Parth Malwankar
added tests.
875
        """(versioned) Search for pattern while in nested dir (two levels).
876
        """
877
        wd = 'foobar0'
878
        self.make_branch_and_tree(wd)
879
        os.chdir(wd)
880
        self._mk_versioned_dir('dir0')
881
        self._mk_versioned_dir('dir0/dir1')
882
        self._mk_versioned_file('dir0/dir1/file0.txt')
883
        os.chdir('dir0')
884
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
885
        out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
886
        self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
887
888
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
889
        self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
890
891
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
892
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
893
894
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
895
        self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
896
897
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
898
        self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
899
900
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
901
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
902
        self.assertEqual(len(out.splitlines()), 0)
0.41.17 by Parth Malwankar
added tests.
903
904
    def test_wtree_file_within_dir_two_levels(self):
905
        """(wtree) Search for pattern while in nested dir (two levels).
906
        """
0.40.25 by Parth Malwankar
added test case for multilevel dir.
907
        wd = 'foobar0'
908
        self.make_branch_and_tree(wd)
909
        os.chdir(wd)
910
        self._mk_versioned_dir('dir0')
911
        self._mk_versioned_dir('dir0/dir1')
912
        self._mk_versioned_file('dir0/dir1/file0.txt')
913
        os.chdir('dir0')
0.41.4 by Parth Malwankar
--recurse is default.
914
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
915
        out, err = self.run_bzr(['grep', 'l[hij]ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
916
        self.assertContainsRe(out, "^dir1/file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
917
918
        out, err = self.run_bzr(['grep', '--from-root', 'l.ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
919
        self.assertContainsRe(out, "^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
920
921
        out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
922
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
923
0.41.4 by Parth Malwankar
--recurse is default.
924
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
925
        self.assertContainsRe(out, "^dir1/file0.txt:line1", flags=TestGrep._reflags)
0.41.4 by Parth Malwankar
--recurse is default.
926
0.40.25 by Parth Malwankar
added test case for multilevel dir.
927
        out, err = self.run_bzr(['grep', '--from-root', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
928
        self.assertContainsRe(out, "^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
0.41.4 by Parth Malwankar
--recurse is default.
929
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
930
        out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
931
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.25 by Parth Malwankar
added test case for multilevel dir.
932
0.41.17 by Parth Malwankar
added tests.
933
    def test_versioned_ignore_case_no_match(self):
934
        """(versioned) Match fails without --ignore-case.
935
        """
936
        wd = 'foobar0'
937
        self.make_branch_and_tree(wd)
938
        os.chdir(wd)
939
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
940
0.41.17 by Parth Malwankar
added tests.
941
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
942
        self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
943
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
944
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'Li.E1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
945
        self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
946
0.41.17 by Parth Malwankar
added tests.
947
    def test_wtree_ignore_case_no_match(self):
948
        """(wtree) Match fails without --ignore-case.
949
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
950
        wd = 'foobar0'
951
        self.make_branch_and_tree(wd)
952
        os.chdir(wd)
953
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
954
0.40.13 by Parth Malwankar
added tests for -R and -i
955
        out, err = self.run_bzr(['grep', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
956
        self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
957
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
958
        out, err = self.run_bzr(['grep', '.inE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
959
        self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
960
0.41.17 by Parth Malwankar
added tests.
961
    def test_versioned_ignore_case_match(self):
962
        """(versioned) Match fails without --ignore-case.
963
        """
964
        wd = 'foobar0'
965
        self.make_branch_and_tree(wd)
966
        os.chdir(wd)
967
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
968
969
        out, err = self.run_bzr(['grep', '-r', 'last:1',
970
            '-i', 'Li.E1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
971
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
972
0.41.17 by Parth Malwankar
added tests.
973
        out, err = self.run_bzr(['grep', '-r', 'last:1',
974
            '-i', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
975
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
976
0.41.17 by Parth Malwankar
added tests.
977
        out, err = self.run_bzr(['grep', '-r', 'last:1',
978
            '--ignore-case', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
979
        self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
980
981
    def test_wtree_ignore_case_match(self):
982
        """(wtree) Match fails without --ignore-case.
983
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
984
        wd = 'foobar0'
985
        self.make_branch_and_tree(wd)
986
        os.chdir(wd)
987
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
988
0.40.13 by Parth Malwankar
added tests for -R and -i
989
        out, err = self.run_bzr(['grep', '-i', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
990
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
991
0.40.24 by Parth Malwankar
added support for --line-number.
992
        out, err = self.run_bzr(['grep', '--ignore-case', 'LinE1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
993
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
994
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
995
        out, err = self.run_bzr(['grep', '--ignore-case', 'Li.E1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
996
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
997
0.41.17 by Parth Malwankar
added tests.
998
    def test_versioned_from_root_fail(self):
999
        """(versioned) Match should fail without --from-root.
1000
        """
1001
        wd = 'foobar0'
1002
        self.make_branch_and_tree(wd)
1003
        os.chdir(wd)
1004
        self._mk_versioned_file('file0.txt')
1005
        self._mk_versioned_dir('dir0')
1006
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1007
1008
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'li.e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1009
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1010
0.41.17 by Parth Malwankar
added tests.
1011
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1012
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1013
1014
    def test_wtree_from_root_fail(self):
1015
        """(wtree) Match should fail without --from-root.
1016
        """
0.40.14 by Parth Malwankar
added test for --from-root
1017
        wd = 'foobar0'
1018
        self.make_branch_and_tree(wd)
1019
        os.chdir(wd)
1020
        self._mk_versioned_file('file0.txt')
1021
        self._mk_versioned_dir('dir0')
1022
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1023
0.40.14 by Parth Malwankar
added test for --from-root
1024
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1025
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1026
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1027
        out, err = self.run_bzr(['grep', 'li.e1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1028
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1029
0.41.17 by Parth Malwankar
added tests.
1030
    def test_versioned_from_root_pass(self):
1031
        """(versioned) Match pass with --from-root.
1032
        """
1033
        wd = 'foobar0'
1034
        self.make_branch_and_tree(wd)
1035
        os.chdir(wd)
1036
        self._mk_versioned_file('file0.txt')
1037
        self._mk_versioned_dir('dir0')
1038
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1039
1040
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1041
            '--from-root', 'l.ne1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1042
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1043
0.41.17 by Parth Malwankar
added tests.
1044
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1045
            '--from-root', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1046
        self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1047
1048
    def test_wtree_from_root_pass(self):
1049
        """(wtree) Match pass with --from-root.
1050
        """
0.40.14 by Parth Malwankar
added test for --from-root
1051
        wd = 'foobar0'
1052
        self.make_branch_and_tree(wd)
1053
        os.chdir(wd)
1054
        self._mk_versioned_file('file0.txt')
1055
        self._mk_versioned_dir('dir0')
1056
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1057
1058
        out, err = self.run_bzr(['grep', '--from-root', 'lin.1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1059
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1060
0.40.14 by Parth Malwankar
added test for --from-root
1061
        out, err = self.run_bzr(['grep', '--from-root', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1062
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1063
1064
    def test_versioned_with_line_number(self):
1065
        """(versioned) Search for pattern with --line-number.
1066
        """
1067
        wd = 'foobar0'
1068
        self.make_branch_and_tree(wd)
1069
        os.chdir(wd)
1070
        self._mk_versioned_file('file0.txt')
1071
1072
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1073
            '--line-number', 'li.e3', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1074
        self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1075
1076
        out, err = self.run_bzr(['grep', '-r', 'last:1',
0.41.17 by Parth Malwankar
added tests.
1077
            '--line-number', 'line3', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1078
        self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1079
1080
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1081
            '-n', 'line1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1082
        self.assertContainsRe(out, "file0.txt~.:1:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1083
1084
    def test_wtree_with_line_number(self):
1085
        """(wtree) Search for pattern with --line-number.
1086
        """
0.40.24 by Parth Malwankar
added support for --line-number.
1087
        wd = 'foobar0'
1088
        self.make_branch_and_tree(wd)
1089
        os.chdir(wd)
1090
        self._mk_versioned_file('file0.txt')
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1091
0.40.24 by Parth Malwankar
added support for --line-number.
1092
        out, err = self.run_bzr(['grep', '--line-number', 'line3', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1093
        self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1094
0.40.24 by Parth Malwankar
added support for --line-number.
1095
        out, err = self.run_bzr(['grep', '-n', 'line1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1096
        self.assertContainsRe(out, "file0.txt:1:line1", flags=TestGrep._reflags)
0.40.14 by Parth Malwankar
added test for --from-root
1097
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1098
        out, err = self.run_bzr(['grep', '-n', '[hjkl]ine1', 'file0.txt'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1099
        self.assertContainsRe(out, "file0.txt:1:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1100
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1101
    def test_revno_basic_history_grep_file(self):
0.41.17 by Parth Malwankar
added tests.
1102
        """Search for pattern in specific revision number in a file.
1103
        """
0.40.34 by Parth Malwankar
added tests for single revision history search
1104
        wd = 'foobar0'
1105
        fname = 'file0.txt'
1106
        self.make_branch_and_tree(wd)
1107
        os.chdir(wd)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1108
        self._mk_versioned_file(fname, total_lines=0)
0.40.34 by Parth Malwankar
added tests for single revision history search
1109
        self._update_file(fname, text="v2 text\n")
1110
        self._update_file(fname, text="v3 text\n")
1111
        self._update_file(fname, text="v4 text\n")
1112
1113
        # rev 2 should not have text 'v3'
1114
        out, err = self.run_bzr(['grep', '-r', '2', 'v3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1115
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1116
1117
        # rev 3 should not have text 'v3'
1118
        out, err = self.run_bzr(['grep', '-r', '3', 'v3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1119
        self.assertContainsRe(out, "file0.txt~3:v3.*", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1120
1121
        # rev 3 should not have text 'v3' with line number
1122
        out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1123
        self.assertContainsRe(out, "file0.txt~3:2:v3.*", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1124
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1125
        # rev 2 should not have text 'v3'
1126
        out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1127
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1128
1129
        # rev 3 should not have text 'v3'
1130
        out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1131
        self.assertContainsRe(out, "file0.txt~3:v3.*", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1132
1133
        # rev 3 should not have text 'v3' with line number
1134
        out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3', fname])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1135
        self.assertContainsRe(out, "file0.txt~3:2:v3.*", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1136
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1137
    def test_revno_basic_history_grep_full(self):
0.41.17 by Parth Malwankar
added tests.
1138
        """Search for pattern in specific revision number in a file.
1139
        """
0.40.34 by Parth Malwankar
added tests for single revision history search
1140
        wd = 'foobar0'
1141
        fname = 'file0.txt'
1142
        self.make_branch_and_tree(wd)
1143
        os.chdir(wd)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1144
        self._mk_versioned_file(fname, total_lines=0) # rev1
1145
        self._mk_versioned_file('file1.txt')          # rev2
1146
        self._update_file(fname, text="v3 text\n")    # rev3
1147
        self._update_file(fname, text="v4 text\n")    # rev4
1148
        self._update_file(fname, text="v5 text\n")    # rev5
0.40.34 by Parth Malwankar
added tests for single revision history search
1149
1150
        # rev 2 should not have text 'v3'
1151
        out, err = self.run_bzr(['grep', '-r', '2', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1152
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1153
1154
        # rev 3 should not have text 'v3'
1155
        out, err = self.run_bzr(['grep', '-r', '3', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1156
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1157
1158
        # rev 3 should not have text 'v3' with line number
1159
        out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1160
        self.assertContainsRe(out, "file0.txt~3:1:v3", flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1161
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1162
        # rev 2 should not have text 'v3'
1163
        out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1164
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1165
1166
        # rev 3 should not have text 'v3'
1167
        out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1168
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1169
1170
        # rev 3 should not have text 'v3' with line number
1171
        out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1172
        self.assertContainsRe(out, "file0.txt~3:1:v3", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1173
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1174
    def test_revno_versioned_file_in_dir(self):
0.41.17 by Parth Malwankar
added tests.
1175
        """Grep specific version of file withing dir.
1176
        """
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1177
        wd = 'foobar0'
1178
        self.make_branch_and_tree(wd)
1179
        os.chdir(wd)
1180
        self._mk_versioned_dir('dir0')                      # rev1
1181
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1182
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1183
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1184
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1185
1186
        # v4 should not be present in revno 3
0.41.4 by Parth Malwankar
--recurse is default.
1187
        out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1188
        self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1189
1190
        # v4 should be present in revno 4
0.41.4 by Parth Malwankar
--recurse is default.
1191
        out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1192
        self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1193
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1194
        # v4 should not be present in revno 3
1195
        out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1196
        self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1197
1198
        # v4 should be present in revno 4
1199
        out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1200
        self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1201
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1202
    def test_revno_range_basic_history_grep(self):
0.41.17 by Parth Malwankar
added tests.
1203
        """Search for pattern in revision range for file.
1204
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1205
        wd = 'foobar0'
1206
        fname = 'file0.txt'
1207
        self.make_branch_and_tree(wd)
1208
        os.chdir(wd)
1209
        self._mk_versioned_file(fname, total_lines=0) # rev1
1210
        self._mk_versioned_file('file1.txt')          # rev2
1211
        self._update_file(fname, text="v3 text\n")    # rev3
1212
        self._update_file(fname, text="v4 text\n")    # rev4
1213
        self._update_file(fname, text="v5 text\n")    # rev5
1214
        self._update_file(fname, text="v6 text\n")    # rev6
1215
1216
        out, err = self.run_bzr(['grep', '-r', '1..', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1217
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1218
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1219
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
1220
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1221
        self.assertEqual(len(out.splitlines()), 4)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1222
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1223
        out, err = self.run_bzr(['grep', '-r', '..1', 'v3'])
1224
        # searching only rev1 gives nothing
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1225
        self.assertEqual(len(out.splitlines()), 0)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1226
1227
        out, err = self.run_bzr(['grep', '-r', '..6', 'v3'])
1228
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1229
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1230
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1231
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1232
        self.assertEqual(len(out.splitlines()), 4)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1233
1234
        out, err = self.run_bzr(['grep', '-r', '..', 'v3'])
1235
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1236
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1237
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1238
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1239
        self.assertEqual(len(out.splitlines()), 4)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1240
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1241
        out, err = self.run_bzr(['grep', '-r', '1..5', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1242
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1243
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1244
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1245
        self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1246
        self.assertEqual(len(out.splitlines()), 3)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1247
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1248
        out, err = self.run_bzr(['grep', '-r', '5..1', 'v3'])
1249
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1250
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1251
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1252
        self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1253
        self.assertEqual(len(out.splitlines()), 3)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1254
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1255
        out, err = self.run_bzr(['grep', '-r', '1..', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1256
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1257
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1258
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
1259
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1260
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1261
1262
        out, err = self.run_bzr(['grep', '-r', '1..5', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1263
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1264
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1265
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1266
        self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1267
        self.assertEqual(len(out.splitlines()), 3)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
1268
1269
        out, err = self.run_bzr(['grep', '-r', '5..1', '[tuv]3'])
1270
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1271
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1272
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1273
        self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1274
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1275
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1276
    def test_revno_range_versioned_file_in_dir(self):
0.41.17 by Parth Malwankar
added tests.
1277
        """Grep rev-range for pattern for file withing a dir.
1278
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1279
        wd = 'foobar0'
1280
        self.make_branch_and_tree(wd)
1281
        os.chdir(wd)
1282
        self._mk_versioned_dir('dir0')                      # rev1
1283
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1284
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1285
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1286
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1287
        self._update_file('dir0/file0.txt', "v6 text\n")    # rev6
1288
0.41.4 by Parth Malwankar
--recurse is default.
1289
        out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1290
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1291
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1292
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1293
        self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1294
        self.assertEqual(len(out.splitlines()), 3)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1295
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1296
        out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1297
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1298
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1299
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1300
        self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1301
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1302
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1303
    def test_revno_range_versioned_file_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
1304
        """Grep rev-range for pattern from outside dir.
1305
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1306
        wd = 'foobar0'
1307
        self.make_branch_and_tree(wd)
1308
        os.chdir(wd)
1309
        self._mk_versioned_dir('dir0')                      # rev1
1310
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1311
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1312
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1313
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1314
        self._update_file('dir0/file0.txt', "v6 text\n")    # rev6
1315
1316
        out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1317
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1318
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1319
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1320
        self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
1321
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1322
        out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1323
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1324
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1325
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1326
        self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1327
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1328
    def test_levels(self):
0.41.17 by Parth Malwankar
added tests.
1329
        """--levels=0 should show findings from merged revision.
1330
        """
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1331
        wd0 = 'foobar0'
1332
        wd1 = 'foobar1'
1333
1334
        self.make_branch_and_tree(wd0)
1335
        os.chdir(wd0)
1336
        self._mk_versioned_file('file0.txt')
1337
        os.chdir('..')
1338
1339
        out, err = self.run_bzr(['branch', wd0, wd1])
1340
        os.chdir(wd1)
1341
        self._mk_versioned_file('file1.txt')
1342
        os.chdir(osutils.pathjoin('..', wd0))
1343
1344
        out, err = self.run_bzr(['merge', osutils.pathjoin('..', wd1)])
1345
        out, err = self.run_bzr(['ci', '-m', 'merged'])
1346
1347
        out, err = self.run_bzr(['grep', 'line1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1348
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1349
        self.assertContainsRe(out, "file1.txt:line1", flags=TestGrep._reflags)
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1350
0.41.17 by Parth Malwankar
added tests.
1351
        # levels should be ignored by wtree grep
1352
        out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
0.40.108 by Parth Malwankar
made tests more accurate
1353
        self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1354
        self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1355
        self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1356
        self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1357
        self.assertEqual(len(out.splitlines()), 4)
0.41.17 by Parth Malwankar
added tests.
1358
0.40.77 by Parth Malwankar
fixed test case.
1359
        out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'line1'])
0.40.108 by Parth Malwankar
made tests more accurate
1360
        self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1361
        self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1362
        self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1363
        self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1364
        self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1365
        self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1366
        self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1367
        self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1368
        self.assertEqual(len(out.splitlines()), 8)
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1369
0.40.77 by Parth Malwankar
fixed test case.
1370
        out, err = self.run_bzr(['grep', '-r',  '-1..', '-n', '--levels=0', 'line1'])
0.40.108 by Parth Malwankar
made tests more accurate
1371
        self.assertContainsRe(out, "^file0.txt~2:1:line1$", flags=TestGrep._reflags)
1372
        self.assertContainsRe(out, "^file1.txt~2:1:line1$", flags=TestGrep._reflags)
1373
        self.assertContainsRe(out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1374
        self.assertContainsRe(out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1375
        self.assertContainsRe(out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1376
        self.assertContainsRe(out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1377
        self.assertContainsRe(out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1378
        self.assertContainsRe(out, "^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1379
        self.assertEqual(len(out.splitlines()), 8)
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1380
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1381
        # levels should be ignored by wtree grep
1382
        out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1383
        self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1384
        self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1385
        self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1386
        self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
1387
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1388
1389
        out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1390
        self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1391
        self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1392
        self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1393
        self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1394
        self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1395
        self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1396
        self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1397
        self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1398
        self.assertEqual(len(out.splitlines()), 8)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1399
1400
        out, err = self.run_bzr(['grep', '-r',  '-1..', '-n', '--levels=0', '.ine1'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1401
        self.assertContainsRe(out, "file0.txt~2:1:line1", flags=TestGrep._reflags)
1402
        self.assertContainsRe(out, "file1.txt~2:1:line1", flags=TestGrep._reflags)
1403
        self.assertContainsRe(out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1404
        self.assertContainsRe(out, "file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1405
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1406
    def test_dotted_rev_grep(self):
1407
        """Grep in dotted revs
1408
        """
1409
        wd0 = 'foobar0'
1410
        wd1 = 'foobar1'
1411
1412
        self.make_branch_and_tree(wd0)
1413
        os.chdir(wd0)
1414
        self._mk_versioned_file('file0.txt')
1415
        os.chdir('..')
1416
1417
        out, err = self.run_bzr(['branch', wd0, wd1])
1418
        os.chdir(wd1)
1419
        self._mk_versioned_file('file1.txt')        # revno 1.1.1
1420
        self._update_file('file1.txt', "text 0\n")  # revno 1.1.2
1421
        self._update_file('file1.txt', "text 1\n")  # revno 1.1.3
1422
        self._update_file('file1.txt', "text 2\n")  # revno 1.1.4
1423
        os.chdir(osutils.pathjoin('..', wd0))
1424
1425
        out, err = self.run_bzr(['merge', osutils.pathjoin('..', wd1)])
1426
        out, err = self.run_bzr(['ci', '-m', 'merged'])
1427
1428
        out, err = self.run_bzr(['grep', '-r', '1.1.1..1.1.4', 'text'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1429
        self.assertContainsRe(out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1430
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1431
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1432
        self.assertContainsRe(out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1433
        self.assertContainsRe(out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1434
        self.assertContainsRe(out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1435
        self.assertEqual(len(out.splitlines()), 6)
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1436
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1437
        out, err = self.run_bzr(['grep', '-r', '1.1.4..1.1.1', 'text'])
1438
        self.assertContainsRe(out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1439
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1440
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1441
        self.assertContainsRe(out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1442
        self.assertContainsRe(out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1443
        self.assertContainsRe(out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1444
        self.assertEqual(len(out.splitlines()), 6)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1445
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1446
        out, err = self.run_bzr(['grep', '--levels=1', '-r', '1.1.1..1.1.4', 'text'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1447
        self.assertContainsRe(out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1448
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1449
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1450
        self.assertContainsRe(out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1451
        self.assertContainsRe(out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1452
        self.assertContainsRe(out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1453
        self.assertEqual(len(out.splitlines()), 6)
0.40.98 by Parth Malwankar
made some tests more accurate by adding check to total output lines
1454
1455
        out, err = self.run_bzr(['grep', '-r', '1..1.1.4', 'text'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1456
        self.assertContainsRe(out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1457
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1458
        self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1459
        self.assertContainsRe(out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1460
        self.assertContainsRe(out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1461
        self.assertContainsRe(out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1462
        self.assertEqual(len(out.splitlines()), 6)
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1463
1464
0.41.17 by Parth Malwankar
added tests.
1465
    def test_versioned_binary_file_grep(self):
1466
        """(versioned) Grep for pattern in binary file.
1467
        """
1468
        wd = 'foobar0'
1469
        self.make_branch_and_tree(wd)
1470
        os.chdir(wd)
0.40.107 by Parth Malwankar
made tests more precise
1471
        self._mk_versioned_file('file.txt')
0.40.60 by Parth Malwankar
'binary file skipped' warning is only shown with --verbose flag
1472
        self._mk_versioned_file('file0.bin')
1473
        self._update_file('file0.bin', "\x00lineNN\x00\n")
1474
1475
        # note: set --verbose/-v flag to get the skip message.
1476
        out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
1477
            'lineNN', 'file0.bin'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1478
        self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
1479
        self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1480
        self.assertEqual(len(out.splitlines()), 0)
1481
        self.assertEqual(len(err.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
1482
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1483
        out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
1484
            'line.N', 'file0.bin'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1485
        self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
1486
        self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1487
        self.assertEqual(len(out.splitlines()), 0)
1488
        self.assertEqual(len(err.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1489
0.41.17 by Parth Malwankar
added tests.
1490
    def test_wtree_binary_file_grep(self):
1491
        """(wtree) Grep for pattern in binary file.
1492
        """
0.40.47 by Parth Malwankar
fixes bug #531336. binary files are now skipped.
1493
        wd = 'foobar0'
1494
        self.make_branch_and_tree(wd)
1495
        os.chdir(wd)
0.40.60 by Parth Malwankar
'binary file skipped' warning is only shown with --verbose flag
1496
        self._mk_versioned_file('file0.bin')
1497
        self._update_file('file0.bin', "\x00lineNN\x00\n")
1498
1499
        # note: set --verbose/-v flag to get the skip message.
1500
        out, err = self.run_bzr(['grep', '-v', 'lineNN', 'file0.bin'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1501
        self.assertNotContainsRe(out, "file0.bin:line1", flags=TestGrep._reflags)
1502
        self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
0.40.60 by Parth Malwankar
'binary file skipped' warning is only shown with --verbose flag
1503
1504
        # binary warning should not be shown without --verbose
1505
        out, err = self.run_bzr(['grep', 'lineNN', 'file0.bin'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1506
        self.assertNotContainsRe(out, "file0.bin:line1", flags=TestGrep._reflags)
1507
        self.assertNotContainsRe(err, "Binary file", flags=TestGrep._reflags)
0.40.47 by Parth Malwankar
fixes bug #531336. binary files are now skipped.
1508
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1509
    def test_revspec(self):
1510
        """Ensure various revspecs work
1511
        """
1512
        wd = 'foobar0'
1513
        self.make_branch_and_tree(wd)
1514
        os.chdir(wd)
1515
        self._mk_versioned_dir('dir0')                      # rev1
1516
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1517
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1518
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1519
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1520
1521
        out, err = self.run_bzr(['grep', '-r', 'revno:1..2', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1522
        self.assertNotContainsRe(out, "file0", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1523
        self.assertEqual(len(out.splitlines()), 0)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1524
1525
        out, err = self.run_bzr(['grep', '-r', 'revno:4..', 'v4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1526
        self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1527
        self.assertEqual(len(out.splitlines()), 2) # find v4 in rev4 and rev5
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1528
1529
        out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1530
        self.assertNotContainsRe(out, "file0", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1531
        self.assertEqual(len(out.splitlines()), 0)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1532
1533
        out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1534
        self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1535
        self.assertEqual(len(out.splitlines()), 1)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1536
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1537
    def test_wtree_files_with_matches(self):
1538
        """(wtree) Ensure --files-with-matches, -l works
1539
        """
1540
        wd = 'foobar0'
1541
        self.make_branch_and_tree(wd)
1542
        os.chdir(wd)
1543
1544
        self._mk_versioned_file('file0.txt', total_lines=2)
1545
        self._mk_versioned_file('file1.txt', total_lines=2)
1546
        self._mk_versioned_dir('dir0')
1547
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)
1548
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)
1549
1550
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
1551
        self._update_file('dir0/file00.txt', 'HELLO\n', checkin=False)
1552
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1553
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1554
        out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1555
1556
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1557
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1558
        self.assertEqual(len(out.splitlines()), 2)
1559
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1560
        # regex
1561
        out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1562
1563
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1564
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1565
        self.assertEqual(len(out.splitlines()), 2)
1566
1567
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1568
        out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1569
1570
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1571
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1572
        self.assertEqual(len(out.splitlines()), 2)
1573
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1574
        # regex
1575
        out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1576
1577
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1578
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1579
        self.assertEqual(len(out.splitlines()), 2)
1580
1581
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1582
        out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1583
1584
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1585
        self.assertEqual(len(out.splitlines()), 1)
1586
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1587
        # regex
1588
        out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1589
1590
        self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1591
        self.assertEqual(len(out.splitlines()), 1)
1592
1593
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1594
        out, err = self.run_bzr(['grep', '-l', 'HELLO', 'file0.txt'])
1595
1596
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1597
        self.assertEqual(len(out.splitlines()), 1)
1598
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1599
        # regex
1600
        out, err = self.run_bzr(['grep', '-l', '.ELLO', 'file0.txt'])
1601
1602
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1603
        self.assertEqual(len(out.splitlines()), 1)
1604
1605
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1606
        out, err = self.run_bzr(['grep', '--no-recursive', '-l', 'HELLO'])
1607
1608
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1609
        self.assertEqual(len(out.splitlines()), 1)
1610
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1611
        # regex
1612
        out, err = self.run_bzr(['grep', '--no-recursive', '-l', '.ELLO'])
1613
1614
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1615
        self.assertEqual(len(out.splitlines()), 1)
1616
0.40.115 by Parth Malwankar
added test for versioned grep.
1617
    def test_ver_files_with_matches(self):
1618
        """(ver) Ensure --files-with-matches, -l works
1619
        """
1620
        wd = 'foobar0'
1621
        self.make_branch_and_tree(wd)
1622
        os.chdir(wd)
1623
1624
        self._mk_versioned_file('file0.txt', total_lines=2)         # rev 1
1625
        self._mk_versioned_file('file1.txt', total_lines=2)         # rev 2
1626
        self._mk_versioned_dir('dir0')                              # rev 3
1627
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)   # rev 4
1628
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)   # rev 5
1629
1630
        self._update_file('file0.txt', 'HELLO\n')                   # rev 6
1631
        self._update_file('dir0/file00.txt', 'HELLO\n')             # rev 7
1632
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1633
        # fixed-string
1634
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1635
            'HELLO'])
1636
1637
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1638
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1639
        self.assertEqual(len(out.splitlines()), 2)
1640
1641
        # regex
1642
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
1643
            'H.LLO'])
1644
1645
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1646
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1647
        self.assertEqual(len(out.splitlines()), 2)
1648
1649
        # fixed-string
1650
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1651
            'HELLO'])
1652
1653
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1654
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1655
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1656
        self.assertEqual(len(out.splitlines()), 3)
1657
1658
        # regex
1659
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
1660
            'H.LLO'])
1661
1662
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1663
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1664
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1665
        self.assertEqual(len(out.splitlines()), 3)
1666
1667
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1668
        out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
1669
1670
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1671
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1672
        self.assertEqual(len(out.splitlines()), 2)
1673
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1674
        # regex
1675
        out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
1676
1677
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1678
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1679
        self.assertEqual(len(out.splitlines()), 2)
1680
1681
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1682
        out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
1683
            'dir0', 'file1.txt'])
1684
1685
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1686
        self.assertEqual(len(out.splitlines()), 1)
1687
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1688
        # regex
1689
        out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
1690
            'dir0', 'file1.txt'])
1691
1692
        self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
1693
        self.assertEqual(len(out.splitlines()), 1)
1694
1695
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1696
        out, err = self.run_bzr(['grep', '-l', 'HELLO',
1697
            '-r', '-2', 'file0.txt'])
1698
1699
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1700
        self.assertEqual(len(out.splitlines()), 1)
1701
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1702
        # regex
1703
        out, err = self.run_bzr(['grep', '-l', 'HE.LO',
1704
            '-r', '-2', 'file0.txt'])
1705
1706
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1707
        self.assertEqual(len(out.splitlines()), 1)
1708
1709
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1710
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1711
            '-l', 'HELLO'])
1712
1713
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1714
        self.assertEqual(len(out.splitlines()), 1)
1715
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1716
        # regex
1717
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1718
            '-l', '.ELLO'])
1719
1720
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
1721
        self.assertEqual(len(out.splitlines()), 1)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1722
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1723
    def test_wtree_files_without_matches(self):
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1724
        """(wtree) Ensure --files-without-match, -L works
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1725
        """
1726
        wd = 'foobar0'
1727
        self.make_branch_and_tree(wd)
1728
        os.chdir(wd)
1729
1730
        self._mk_versioned_file('file0.txt', total_lines=2)
1731
        self._mk_versioned_file('file1.txt', total_lines=2)
1732
        self._mk_versioned_dir('dir0')
1733
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)
1734
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)
1735
1736
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
1737
        self._update_file('dir0/file00.txt', 'HELLO\n', checkin=False)
1738
1739
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1740
        out, err = self.run_bzr(['grep', '--files-without-match', 'HELLO'])
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1741
1742
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1743
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1744
        self.assertEqual(len(out.splitlines()), 2)
1745
1746
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1747
        out, err = self.run_bzr(['grep', '--files-without-match', 'HE.LO'])
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1748
1749
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1750
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1751
        self.assertEqual(len(out.splitlines()), 2)
1752
1753
        # fixed-string
1754
        out, err = self.run_bzr(['grep', '-L', 'HELLO'])
1755
1756
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1757
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1758
        self.assertEqual(len(out.splitlines()), 2)
1759
1760
        # regex
1761
        out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
1762
1763
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1764
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1765
        self.assertEqual(len(out.splitlines()), 2)
1766
1767
        # fixed-string
1768
        out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
1769
1770
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1771
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1772
        self.assertEqual(len(out.splitlines()), 2)
1773
1774
        # regex
1775
        out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
1776
1777
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1778
        self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
1779
        self.assertEqual(len(out.splitlines()), 2)
1780
1781
        # fixed-string
1782
        out, err = self.run_bzr(['grep', '-L', 'HELLO', 'file1.txt'])
1783
1784
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1785
        self.assertEqual(len(out.splitlines()), 1)
1786
1787
        # regex
1788
        out, err = self.run_bzr(['grep', '-L', '.ELLO', 'file1.txt'])
1789
1790
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1791
        self.assertEqual(len(out.splitlines()), 1)
1792
1793
        # fixed-string
1794
        out, err = self.run_bzr(['grep', '--no-recursive', '-L', 'HELLO'])
1795
1796
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1797
        self.assertEqual(len(out.splitlines()), 1)
1798
1799
        # regex
1800
        out, err = self.run_bzr(['grep', '--no-recursive', '-L', '.ELLO'])
1801
1802
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
1803
        self.assertEqual(len(out.splitlines()), 1)
1804
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1805
    def test_ver_files_without_matches(self):
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1806
        """(ver) Ensure --files-without-match, -L works
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1807
        """
1808
        wd = 'foobar0'
1809
        self.make_branch_and_tree(wd)
1810
        os.chdir(wd)
1811
1812
        self._mk_versioned_file('file0.txt', total_lines=2)         # rev 1
1813
        self._mk_versioned_file('file1.txt', total_lines=2)         # rev 2
1814
        self._mk_versioned_dir('dir0')                              # rev 3
1815
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)   # rev 4
1816
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)   # rev 5
1817
1818
        self._update_file('file0.txt', 'HELLO\n')                   # rev 6
1819
        self._update_file('dir0/file00.txt', 'HELLO\n')             # rev 7
1820
1821
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1822
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1823
            'HELLO'])
1824
1825
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1826
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1827
        self.assertEqual(len(out.splitlines()), 2)
1828
1829
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1830
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1831
            'H.LLO'])
1832
1833
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1834
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1835
        self.assertEqual(len(out.splitlines()), 2)
1836
1837
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1838
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1839
            'HELLO'])
1840
1841
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1842
        self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
1843
        self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
1844
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1845
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1846
        self.assertEqual(len(out.splitlines()), 5)
1847
1848
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1849
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
1850
            'H.LLO'])
1851
1852
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1853
        self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
1854
        self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
1855
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1856
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1857
        self.assertEqual(len(out.splitlines()), 5)
1858
1859
        # fixed-string
1860
        out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
1861
1862
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1863
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1864
        self.assertEqual(len(out.splitlines()), 2)
1865
1866
        # regex
1867
        out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
1868
1869
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1870
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1871
        self.assertEqual(len(out.splitlines()), 2)
1872
1873
        # fixed-string
1874
        out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
1875
            'dir0', 'file1.txt'])
1876
1877
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1878
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1879
        self.assertEqual(len(out.splitlines()), 2)
1880
1881
        # regex
1882
        out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
1883
            'dir0', 'file1.txt'])
1884
1885
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1886
        self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
1887
        self.assertEqual(len(out.splitlines()), 2)
1888
1889
        # fixed-string
1890
        out, err = self.run_bzr(['grep', '-L', 'HELLO',
1891
            '-r', '-2', 'file1.txt'])
1892
1893
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1894
        self.assertEqual(len(out.splitlines()), 1)
1895
1896
        # regex
1897
        out, err = self.run_bzr(['grep', '-L', 'HE.LO',
1898
            '-r', '-2', 'file1.txt'])
1899
1900
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
1901
        self.assertEqual(len(out.splitlines()), 1)
1902
1903
        # fixed-string
1904
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1905
            '-L', 'HELLO'])
1906
1907
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1908
        self.assertEqual(len(out.splitlines()), 1)
1909
1910
        # regex
1911
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
1912
            '-L', '.ELLO'])
1913
1914
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
1915
        self.assertEqual(len(out.splitlines()), 1)
1916
0.43.11 by Parth Malwankar
test cases for colored results.
1917
1918
class TestColorGrep(GrepTestBase):
1919
    """Tests for the --color option."""
0.43.12 by Parth Malwankar
added feature for running color tests conditionally
1920
1921
    _test_needs_features = [features.color_feature]
1922
0.43.11 by Parth Malwankar
test cases for colored results.
1923
    _rev_sep = color_string('~', fg=FG.BOLD_YELLOW)
1924
    _sep = color_string(':', fg=FG.BOLD_CYAN)
1925
1926
    def test_color_option(self):
1927
        """Ensure options for color are valid.
1928
        """
1929
        out, err = self.run_bzr(['grep', '--color', 'foo', 'bar'], 3)
1930
        self.assertEqual(out, '')
1931
        self.assertContainsRe(err, 'Valid values for --color are', flags=TestGrep._reflags)
1932
1933
    def test_ver_basic_file(self):
1934
        """(versioned) Search for pattern in specfic file.
1935
        """
1936
        wd = 'foobar0'
1937
        self.make_branch_and_tree(wd)
1938
        os.chdir(wd)
1939
        lp = 'foo is foobar'
1940
        self._mk_versioned_file('file0.txt', line_prefix=lp, total_lines=1)
1941
1942
        # prepare colored result
1943
        foo = color_string('foo', fg=FG.BOLD_RED)
1944
        res = (color_string('file0.txt', fg=FG.MAGENTA)
1945
            + self._rev_sep + '1' + self._sep
1946
            + foo + ' is ' + foo + 'bar1' + '\n')
1947
1948
        nres = (color_string('file0.txt', fg=FG.MAGENTA)
1949
            + self._rev_sep + '1' + self._sep + '1' + self._sep
1950
            + foo + ' is ' + foo + 'bar1' + '\n')
1951
1952
        out, err = self.run_bzr(['grep', '--color',
1953
            'always', '-r', '1', 'foo'])
1954
        self.assertEqual(out, res)
1955
        self.assertEqual(len(out.splitlines()), 1)
1956
1957
        out, err = self.run_bzr(['grep', '-i', '--color',
1958
            'always', '-r', '1', 'FOO'])
1959
        self.assertEqual(out, res)
1960
        self.assertEqual(len(out.splitlines()), 1)
1961
1962
        out, err = self.run_bzr(['grep', '--color',
1963
            'always', '-r', '1', 'f.o'])
1964
        self.assertEqual(out, res)
1965
        self.assertEqual(len(out.splitlines()), 1)
1966
1967
        out, err = self.run_bzr(['grep', '-i', '--color',
1968
            'always', '-r', '1', 'F.O'])
1969
        self.assertEqual(out, res)
1970
        self.assertEqual(len(out.splitlines()), 1)
1971
1972
        out, err = self.run_bzr(['grep', '-n', '--color',
1973
            'always', '-r', '1', 'foo'])
1974
        self.assertEqual(out, nres)
1975
        self.assertEqual(len(out.splitlines()), 1)
1976
1977
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
1978
            'always', '-r', '1', 'FOO'])
1979
        self.assertEqual(out, nres)
1980
        self.assertEqual(len(out.splitlines()), 1)
1981
1982
        out, err = self.run_bzr(['grep', '-n', '--color',
1983
            'always', '-r', '1', 'f.o'])
1984
        self.assertEqual(out, nres)
1985
        self.assertEqual(len(out.splitlines()), 1)
1986
1987
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
1988
            'always', '-r', '1', 'F.O'])
1989
        self.assertEqual(out, nres)
1990
        self.assertEqual(len(out.splitlines()), 1)
1991
1992
    def test_wtree_basic_file(self):
1993
        """(wtree) Search for pattern in specfic file.
1994
        """
1995
        wd = 'foobar0'
1996
        self.make_branch_and_tree(wd)
1997
        os.chdir(wd)
1998
        lp = 'foo is foobar'
1999
        self._mk_versioned_file('file0.txt', line_prefix=lp, total_lines=1)
2000
2001
        # prepare colored result
2002
        foo = color_string('foo', fg=FG.BOLD_RED)
2003
        res = (color_string('file0.txt', fg=FG.MAGENTA)
2004
            + self._sep + foo + ' is ' + foo + 'bar1' + '\n')
2005
2006
        nres = (color_string('file0.txt', fg=FG.MAGENTA)
2007
            + self._sep + '1' + self._sep
2008
            + foo + ' is ' + foo + 'bar1' + '\n')
2009
2010
        out, err = self.run_bzr(['grep', '--color',
2011
            'always', 'foo'])
2012
        self.assertEqual(out, res)
2013
        self.assertEqual(len(out.splitlines()), 1)
2014
2015
        out, err = self.run_bzr(['grep', '-i', '--color',
2016
            'always', 'FOO'])
2017
        self.assertEqual(out, res)
2018
        self.assertEqual(len(out.splitlines()), 1)
2019
2020
        out, err = self.run_bzr(['grep', '--color',
2021
            'always', 'f.o'])
2022
        self.assertEqual(out, res)
2023
        self.assertEqual(len(out.splitlines()), 1)
2024
2025
        out, err = self.run_bzr(['grep', '-i', '--color',
2026
            'always', 'F.O'])
2027
        self.assertEqual(out, res)
2028
        self.assertEqual(len(out.splitlines()), 1)
2029
2030
        out, err = self.run_bzr(['grep', '-n', '--color',
2031
            'always', 'foo'])
2032
        self.assertEqual(out, nres)
2033
        self.assertEqual(len(out.splitlines()), 1)
2034
2035
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2036
            'always', 'FOO'])
2037
        self.assertEqual(out, nres)
2038
        self.assertEqual(len(out.splitlines()), 1)
2039
2040
        out, err = self.run_bzr(['grep', '-n', '--color',
2041
            'always', 'f.o'])
2042
        self.assertEqual(out, nres)
2043
        self.assertEqual(len(out.splitlines()), 1)
2044
2045
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2046
            'always', 'F.O'])
2047
        self.assertEqual(out, nres)
2048
        self.assertEqual(len(out.splitlines()), 1)
2049