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