/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
1
# Copyright (C) 2010, 2011, 2012, 2016 Canonical Ltd
0.40.11 by Parth Malwankar
added basic test
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
0.40.147 by Jelmer Vernooij
Fix compatibility with newer versions of bzr: don't use relative imports in lazy imports, and import features from bzrlib.tests.features.
17
from __future__ import absolute_import
18
0.40.11 by Parth Malwankar
added basic test
19
import os
20
import re
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
21
import unicodedata as ud
0.40.11 by Parth Malwankar
added basic test
22
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
23
from ... import tests, osutils
7027.9.1 by Jelmer Vernooij
Fix all but one remaining grep tests.
24
from ...sixish import PY3
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
25
from ..._termcolor import color_string, FG
0.40.11 by Parth Malwankar
added basic test
26
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
27
from ...tests.features import (
6531.3.8 by Jelmer Vernooij
Move color feature into bzrlib.tests.features.
28
    UnicodeFilenameFeature,
29
    )
0.40.147 by Jelmer Vernooij
Fix compatibility with newer versions of bzr: don't use relative imports in lazy imports, and import features from bzrlib.tests.features.
30
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
31
# NOTE: As bzr-grep optimizes PATTERN search to -F/--fixed-string
32
# for patterns that are not alphanumeric+whitespace, we test grep
33
# specfically with patterns that have special characters so that
34
# regex path is tested. alphanumeric patterns test the -F path.
35
7143.15.2 by Jelmer Vernooij
Run autopep8.
36
0.43.11 by Parth Malwankar
test cases for colored results.
37
class GrepTestBase(tests.TestCaseWithTransport):
38
    """Base class for testing grep.
39
40
    Provides support methods for creating directory and file revisions.
41
    """
7143.15.2 by Jelmer Vernooij
Run autopep8.
42
    _reflags = re.MULTILINE | re.DOTALL
0.40.11 by Parth Malwankar
added basic test
43
0.40.26 by Parth Malwankar
test passing for multiple matches
44
    def _mk_file(self, path, line_prefix, total_lines, versioned):
7143.15.2 by Jelmer Vernooij
Run autopep8.
45
        text = ''
0.40.13 by Parth Malwankar
added tests for -R and -i
46
        for i in range(total_lines):
7143.15.2 by Jelmer Vernooij
Run autopep8.
47
            text += line_prefix + str(i + 1) + "\n"
0.40.13 by Parth Malwankar
added tests for -R and -i
48
6973.12.11 by Jelmer Vernooij
Fix some more tests.
49
        with open(path, 'w') as f:
50
            f.write(text)
0.40.12 by Parth Malwankar
added test for versioned file
51
        if versioned:
52
            self.run_bzr(['add', path])
0.40.25 by Parth Malwankar
added test case for multilevel dir.
53
            self.run_bzr(['ci', '-m', '"' + path + '"'])
0.40.12 by Parth Malwankar
added test for versioned file
54
0.41.14 by Parth Malwankar
updated help and added test.
55
    def _update_file(self, path, text, checkin=True):
0.40.34 by Parth Malwankar
added tests for single revision history search
56
        """append text to file 'path' and check it in"""
6973.12.11 by Jelmer Vernooij
Fix some more tests.
57
        with open(path, 'a') as f:
58
            f.write(text)
0.41.14 by Parth Malwankar
updated help and added test.
59
        if checkin:
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
60
            self.run_bzr(['ci', path, '-m', '"' + path + '"'])
0.40.34 by Parth Malwankar
added tests for single revision history search
61
0.40.37 by Parth Malwankar
grep now accepts rev range
62
    def _mk_unknown_file(self, path, line_prefix='line', total_lines=10):
0.40.26 by Parth Malwankar
test passing for multiple matches
63
        self._mk_file(path, line_prefix, total_lines, versioned=False)
0.40.13 by Parth Malwankar
added tests for -R and -i
64
65
    def _mk_versioned_file(self, path, line_prefix='line', total_lines=10):
0.40.26 by Parth Malwankar
test passing for multiple matches
66
        self._mk_file(path, line_prefix, total_lines, versioned=True)
0.40.13 by Parth Malwankar
added tests for -R and -i
67
68
    def _mk_dir(self, path, versioned):
69
        os.mkdir(path)
70
        if versioned:
71
            self.run_bzr(['add', path])
0.40.26 by Parth Malwankar
test passing for multiple matches
72
            self.run_bzr(['ci', '-m', '"' + path + '"'])
0.40.13 by Parth Malwankar
added tests for -R and -i
73
0.40.37 by Parth Malwankar
grep now accepts rev range
74
    def _mk_unknown_dir(self, path):
0.40.26 by Parth Malwankar
test passing for multiple matches
75
        self._mk_dir(path, versioned=False)
0.40.13 by Parth Malwankar
added tests for -R and -i
76
77
    def _mk_versioned_dir(self, path):
78
        self._mk_dir(path, versioned=True)
79
0.40.131 by Parth Malwankar
bzr grep now allows grepping with -r even when no tree exists.
80
0.43.11 by Parth Malwankar
test cases for colored results.
81
class TestGrep(GrepTestBase):
82
    """Core functional tests for grep."""
83
0.40.37 by Parth Malwankar
grep now accepts rev range
84
    def test_basic_unknown_file(self):
0.41.13 by Parth Malwankar
working tree grep is now working
85
        """Search for pattern in specfic file.
86
87
        If specified file is unknown, grep it anyway."""
0.40.11 by Parth Malwankar
added basic test
88
        wd = 'foobar0'
89
        self.make_branch_and_tree(wd)
90
        os.chdir(wd)
0.40.37 by Parth Malwankar
grep now accepts rev range
91
        self._mk_unknown_file('file0.txt')
0.41.18 by Parth Malwankar
updated test to ensure that unknown files are skipped by default.
92
0.40.11 by Parth Malwankar
added basic test
93
        out, err = self.run_bzr(['grep', 'line1', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
94
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
95
        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.
96
6798.1.1 by Jelmer Vernooij
Properly escape backslashes.
97
        out, err = self.run_bzr(['grep', 'line\\d+', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
98
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
99
        self.assertEqual(len(out.splitlines()), 10)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
100
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
101
        # 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.
102
        out, err = self.run_bzr(['grep', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
103
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
104
        self.assertEqual(len(out.splitlines()), 0)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
105
106
        # unknown file is not grepped unless explicitely specified
107
        out, err = self.run_bzr(['grep', 'line1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
108
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
109
        self.assertEqual(len(out.splitlines()), 0)
0.41.18 by Parth Malwankar
updated test to ensure that unknown files are skipped by default.
110
0.41.23 by Parth Malwankar
added tests for --include/exclude
111
    def test_ver_basic_file(self):
0.41.17 by Parth Malwankar
added tests.
112
        """(versioned) Search for pattern in specfic file.
113
        """
0.41.14 by Parth Malwankar
updated help and added test.
114
        wd = 'foobar0'
115
        self.make_branch_and_tree(wd)
116
        os.chdir(wd)
117
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
118
0.41.14 by Parth Malwankar
updated help and added test.
119
        out, err = self.run_bzr(['grep', '-r', '1', 'line1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
120
        self.assertContainsRe(out, "file0.txt~1:line1",
121
                              flags=TestGrep._reflags)
122
        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
123
124
        out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]$', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
125
        self.assertContainsRe(out, "file0.txt~1:line1",
126
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
127
        self.assertEqual(len(out.splitlines()), 9)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
128
129
        # finds all the lines
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
130
        out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
131
        self.assertContainsRe(out, "file0.txt~1:line1",
132
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
133
        self.assertEqual(len(out.splitlines()), 10)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
134
0.41.17 by Parth Malwankar
added tests.
135
    def test_wtree_basic_file(self):
136
        """(wtree) Search for pattern in specfic file.
137
        """
0.40.12 by Parth Malwankar
added test for versioned file
138
        wd = 'foobar0'
139
        self.make_branch_and_tree(wd)
140
        os.chdir(wd)
0.40.13 by Parth Malwankar
added tests for -R and -i
141
        self._mk_versioned_file('file0.txt')
0.41.14 by Parth Malwankar
updated help and added test.
142
        self._update_file('file0.txt', 'ABC\n', checkin=False)
143
144
        out, err = self.run_bzr(['grep', 'ABC', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
145
        self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
146
        self.assertEqual(len(out.splitlines()), 1)
0.41.14 by Parth Malwankar
updated help and added test.
147
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
148
        out, err = self.run_bzr(['grep', '[A-Z]{3}', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
149
        self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
150
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
151
0.41.14 by Parth Malwankar
updated help and added test.
152
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'ABC', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
153
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
154
        self.assertEqual(len(out.splitlines()), 0)
0.40.12 by Parth Malwankar
added test for versioned file
155
7143.15.2 by Jelmer Vernooij
Run autopep8.
156
        out, err = self.run_bzr(
157
            ['grep', '-r', 'last:1', '[A-Z]{3}', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
158
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
159
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
160
0.41.23 by Parth Malwankar
added tests for --include/exclude
161
    def test_ver_basic_include(self):
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
162
        """(versioned) Ensure that -I flag is respected.
0.41.22 by Parth Malwankar
added basic --exclude/include tests
163
        """
164
        wd = 'foobar0'
165
        self.make_branch_and_tree(wd)
166
        os.chdir(wd)
167
        self._mk_versioned_file('file0.aa')
168
        self._mk_versioned_file('file0.bb')
169
        self._mk_versioned_file('file0.cc')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
170
0.41.22 by Parth Malwankar
added basic --exclude/include tests
171
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
172
                                 '--include', '*.aa', '--include', '*.bb', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
173
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
174
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
175
        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
176
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
177
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
178
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
179
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
180
                                 '--include', '*.aa', '--include', '*.bb', 'line1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
181
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
182
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
183
        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
184
        # one lines each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
185
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
186
187
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
188
                                 '-I', '*.aa', '-I', '*.bb', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
189
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
190
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
191
        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
192
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
193
        self.assertEqual(len(out.splitlines()), 4)
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
194
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
195
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
196
                                 '-I', '*.aa', '-I', '*.bb', 'line1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
197
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
198
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
199
        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
200
        # one lines each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
201
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
202
0.41.22 by Parth Malwankar
added basic --exclude/include tests
203
    def test_wtree_basic_include(self):
204
        """(wtree) Ensure that --include flag is respected.
205
        """
206
        wd = 'foobar0'
207
        self.make_branch_and_tree(wd)
208
        os.chdir(wd)
209
        self._mk_versioned_file('file0.aa')
210
        self._mk_versioned_file('file0.bb')
211
        self._mk_versioned_file('file0.cc')
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
212
0.41.22 by Parth Malwankar
added basic --exclude/include tests
213
        out, err = self.run_bzr(['grep', '--include', '*.aa',
7143.15.2 by Jelmer Vernooij
Run autopep8.
214
                                 '--include', '*.bb', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
215
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
216
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
217
        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
218
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
219
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
220
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
221
        out, err = self.run_bzr(['grep', '--include', '*.aa',
7143.15.2 by Jelmer Vernooij
Run autopep8.
222
                                 '--include', '*.bb', 'line1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
223
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
224
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
225
        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
226
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
227
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
228
0.41.23 by Parth Malwankar
added tests for --include/exclude
229
    def test_ver_basic_exclude(self):
0.41.22 by Parth Malwankar
added basic --exclude/include tests
230
        """(versioned) Ensure that --exclude flag is respected.
231
        """
232
        wd = 'foobar0'
233
        self.make_branch_and_tree(wd)
234
        os.chdir(wd)
235
        self._mk_versioned_file('file0.aa')
236
        self._mk_versioned_file('file0.bb')
237
        self._mk_versioned_file('file0.cc')
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
238
0.41.22 by Parth Malwankar
added basic --exclude/include tests
239
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
240
                                 '--exclude', '*.cc', 'line1'])
241
        self.assertContainsRe(out, "file0.aa~.:line1$",
242
                              flags=TestGrep._reflags)
243
        self.assertContainsRe(out, "file0.bb~.:line1$",
244
                              flags=TestGrep._reflags)
245
        self.assertContainsRe(out, "file0.aa~.:line10",
246
                              flags=TestGrep._reflags)
247
        self.assertContainsRe(out, "file0.bb~.:line10",
248
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
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.41.22 by Parth Malwankar
added basic --exclude/include tests
252
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
253
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
254
                                 '--exclude', '*.cc', 'line1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
255
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
256
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
257
        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
258
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
259
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
260
261
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
262
                                 '-X', '*.cc', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
263
        self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
264
        self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
265
        self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
266
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
267
        self.assertEqual(len(out.splitlines()), 4)
0.40.58 by Parth Malwankar
-I and -X are shortnames for --include and --exclude
268
0.41.22 by Parth Malwankar
added basic --exclude/include tests
269
    def test_wtree_basic_exclude(self):
270
        """(wtree) Ensure that --exclude flag is respected.
271
        """
272
        wd = 'foobar0'
273
        self.make_branch_and_tree(wd)
274
        os.chdir(wd)
275
        self._mk_versioned_file('file0.aa')
276
        self._mk_versioned_file('file0.bb')
277
        self._mk_versioned_file('file0.cc')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
278
0.41.22 by Parth Malwankar
added basic --exclude/include tests
279
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
280
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
281
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
282
        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
283
        # two lines each (line1, line10) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
284
        self.assertEqual(len(out.splitlines()), 4)
0.41.22 by Parth Malwankar
added basic --exclude/include tests
285
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
286
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'lin.1$'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
287
        self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
288
        self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
289
        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
290
        # one line each (line1) from file0.aa and file0.bb
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
291
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
292
0.41.23 by Parth Malwankar
added tests for --include/exclude
293
    def test_ver_multiple_files(self):
0.41.17 by Parth Malwankar
added tests.
294
        """(versioned) Search for pattern in multiple files.
295
        """
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
296
        wd = 'foobar0'
297
        self.make_branch_and_tree(wd)
298
        os.chdir(wd)
299
        self._mk_versioned_file('file0.txt', total_lines=2)
300
        self._mk_versioned_file('file1.txt', total_lines=2)
301
        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.
302
0.40.103 by Parth Malwankar
made some tests more accurate by checking number of output lines
303
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
304
        self.assertContainsRe(out, "file0.txt~.:line1",
305
                              flags=TestGrep._reflags)
306
        self.assertContainsRe(out, "file0.txt~.:line2",
307
                              flags=TestGrep._reflags)
308
        self.assertContainsRe(out, "file1.txt~.:line1",
309
                              flags=TestGrep._reflags)
310
        self.assertContainsRe(out, "file1.txt~.:line2",
311
                              flags=TestGrep._reflags)
312
        self.assertContainsRe(out, "file2.txt~.:line1",
313
                              flags=TestGrep._reflags)
314
        self.assertContainsRe(out, "file2.txt~.:line2",
315
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
316
        self.assertEqual(len(out.splitlines()), 6)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
317
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
318
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
319
        self.assertContainsRe(out, "file0.txt~.:line1",
320
                              flags=TestGrep._reflags)
321
        self.assertContainsRe(out, "file0.txt~.:line2",
322
                              flags=TestGrep._reflags)
323
        self.assertContainsRe(out, "file1.txt~.:line1",
324
                              flags=TestGrep._reflags)
325
        self.assertContainsRe(out, "file1.txt~.:line2",
326
                              flags=TestGrep._reflags)
327
        self.assertContainsRe(out, "file2.txt~.:line1",
328
                              flags=TestGrep._reflags)
329
        self.assertContainsRe(out, "file2.txt~.:line2",
330
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
331
        self.assertEqual(len(out.splitlines()), 6)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
332
333
    def test_multiple_wtree_files(self):
0.41.17 by Parth Malwankar
added tests.
334
        """(wtree) Search for pattern in multiple files in working tree.
335
        """
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
336
        wd = 'foobar0'
337
        self.make_branch_and_tree(wd)
338
        os.chdir(wd)
339
        self._mk_versioned_file('file0.txt', total_lines=2)
340
        self._mk_versioned_file('file1.txt', total_lines=2)
341
        self._mk_versioned_file('file2.txt', total_lines=2)
342
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
343
        self._update_file('file1.txt', 'HELLO\n', checkin=True)
344
        self._update_file('file2.txt', 'HELLO\n', checkin=False)
345
346
        out, err = self.run_bzr(['grep', 'HELLO',
7143.15.2 by Jelmer Vernooij
Run autopep8.
347
                                 'file0.txt', 'file1.txt', 'file2.txt'])
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
348
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
349
        self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
350
        self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
351
        self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
352
        self.assertEqual(len(out.splitlines()), 3)
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
353
354
        out, err = self.run_bzr(['grep', 'HELLO', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
355
                                 'file0.txt', 'file1.txt', 'file2.txt'])
0.41.15 by Parth Malwankar
bzr-grep now searches working copy by default.
356
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
357
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
358
        self.assertContainsRe(out, "file1.txt~.:HELLO",
359
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
360
        self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
361
        self.assertEqual(len(out.splitlines()), 1)
0.40.25 by Parth Malwankar
added test case for multilevel dir.
362
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
363
        out, err = self.run_bzr(['grep', 'HE..O',
7143.15.2 by Jelmer Vernooij
Run autopep8.
364
                                 'file0.txt', 'file1.txt', 'file2.txt'])
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
365
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
366
        self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
367
        self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
368
        self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
369
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
370
371
        out, err = self.run_bzr(['grep', 'HE..O', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
372
                                 'file0.txt', 'file1.txt', 'file2.txt'])
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
373
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
374
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
375
        self.assertContainsRe(out, "file1.txt~.:HELLO",
376
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
377
        self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
378
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
379
0.41.23 by Parth Malwankar
added tests for --include/exclude
380
    def test_ver_null_option(self):
0.41.17 by Parth Malwankar
added tests.
381
        """(versioned) --null option should use NUL instead of newline.
382
        """
383
        wd = 'foobar0'
384
        self.make_branch_and_tree(wd)
385
        os.chdir(wd)
386
        self._mk_versioned_file('file0.txt', total_lines=3)
387
7143.15.2 by Jelmer Vernooij
Run autopep8.
388
        nref = ud.normalize(
389
            u'NFC', u"file0.txt~1:line1\0file0.txt~1:line2\0file0.txt~1:line3\0")
0.40.71 by Parth Malwankar
fixed test_ver_null_option to pass on windows.
390
7143.15.2 by Jelmer Vernooij
Run autopep8.
391
        out, err = self.run_bzr(
392
            ['grep', '-r', 'last:1', '--null', 'line[1-3]'])
7027.9.1 by Jelmer Vernooij
Fix all but one remaining grep tests.
393
        if not PY3:
394
            out = out.decode('utf-8', 'ignore')
395
        nout = ud.normalize(u'NFC', out)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
396
        self.assertEqual(nout, nref)
397
        self.assertEqual(len(out.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
398
399
        out, err = self.run_bzr(['grep', '-r', 'last:1', '-Z', 'line[1-3]'])
7027.9.1 by Jelmer Vernooij
Fix all but one remaining grep tests.
400
        if not PY3:
401
            out = out.decode('utf-8', 'ignore')
402
        nout = ud.normalize(u'NFC', out)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
403
        self.assertEqual(nout, nref)
404
        self.assertEqual(len(out.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
405
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
406
        out, err = self.run_bzr(['grep', '-r', 'last:1', '--null', 'line'])
7027.9.1 by Jelmer Vernooij
Fix all but one remaining grep tests.
407
        if not PY3:
408
            out = out.decode('utf-8', 'ignore')
409
        nout = ud.normalize(u'NFC', out)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
410
        self.assertEqual(nout, nref)
411
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
412
0.41.17 by Parth Malwankar
added tests.
413
    def test_wtree_null_option(self):
414
        """(wtree) --null option should use NUL instead of newline.
415
        """
0.40.27 by Parth Malwankar
added test for null option
416
        wd = 'foobar0'
417
        self.make_branch_and_tree(wd)
418
        os.chdir(wd)
419
        self._mk_versioned_file('file0.txt', total_lines=3)
420
421
        out, err = self.run_bzr(['grep', '--null', 'line[1-3]'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
422
        self.assertEqual(
423
            out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
424
        self.assertEqual(len(out.splitlines()), 1)
0.40.27 by Parth Malwankar
added test for null option
425
426
        out, err = self.run_bzr(['grep', '-Z', 'line[1-3]'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
427
        self.assertEqual(
428
            out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
429
        self.assertEqual(len(out.splitlines()), 1)
0.40.27 by Parth Malwankar
added test for null option
430
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
431
        out, err = self.run_bzr(['grep', '-Z', 'line'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
432
        self.assertEqual(
433
            out, "file0.txt:line1\0file0.txt:line2\0file0.txt:line3\0")
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
434
        self.assertEqual(len(out.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
435
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
436
    def test_versioned_file_in_dir_no_recursive(self):
0.41.17 by Parth Malwankar
added tests.
437
        """(versioned) Should not recurse with --no-recursive"""
438
        wd = 'foobar0'
439
        self.make_branch_and_tree(wd)
440
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
441
        self._mk_versioned_file('fileX.txt', line_prefix='lin')
0.41.17 by Parth Malwankar
added tests.
442
        self._mk_versioned_dir('dir0')
443
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
444
7143.15.2 by Jelmer Vernooij
Run autopep8.
445
        out, err = self.run_bzr(
446
            ['grep', '-r', 'last:1', '--no-recursive', 'line1'])
447
        self.assertNotContainsRe(
448
            out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
449
        self.assertEqual(len(out.splitlines()), 0)
0.41.17 by Parth Malwankar
added tests.
450
7143.15.2 by Jelmer Vernooij
Run autopep8.
451
        out, err = self.run_bzr(
452
            ['grep', '-r', 'last:1', '--no-recursive', 'line1$'])
453
        self.assertNotContainsRe(
454
            out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
455
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
456
0.41.17 by Parth Malwankar
added tests.
457
    def test_wtree_file_in_dir_no_recursive(self):
458
        """(wtree) Should not recurse with --no-recursive"""
0.40.13 by Parth Malwankar
added tests for -R and -i
459
        wd = 'foobar0'
460
        self.make_branch_and_tree(wd)
461
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
462
        self._mk_versioned_file('fileX.txt', line_prefix='lin')
0.40.13 by Parth Malwankar
added tests for -R and -i
463
        self._mk_versioned_dir('dir0')
464
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
465
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
466
        out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
467
        self.assertNotContainsRe(
468
            out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
469
        self.assertEqual(len(out.splitlines()), 0)
0.40.13 by Parth Malwankar
added tests for -R and -i
470
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
471
        out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
472
        self.assertNotContainsRe(
473
            out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
474
        self.assertEqual(len(out.splitlines()), 0)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
475
0.40.13 by Parth Malwankar
added tests for -R and -i
476
    def test_versioned_file_in_dir_recurse(self):
0.41.17 by Parth Malwankar
added tests.
477
        """(versioned) Should recurse by default.
478
        """
479
        wd = 'foobar0'
480
        self.make_branch_and_tree(wd)
481
        os.chdir(wd)
482
        self._mk_versioned_dir('dir0')
483
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
484
485
        out, err = self.run_bzr(['grep', '-r', '-1', '.i.e1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
486
        self.assertContainsRe(
487
            out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
488
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
489
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
490
0.41.17 by Parth Malwankar
added tests.
491
        out, err = self.run_bzr(['grep', '-r', '-1', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
492
        self.assertContainsRe(
493
            out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
494
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
495
        self.assertEqual(len(out.splitlines()), 2)
0.41.17 by Parth Malwankar
added tests.
496
497
    def test_wtree_file_in_dir_recurse(self):
498
        """(wtree) Should recurse by default.
499
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
500
        wd = 'foobar0'
501
        self.make_branch_and_tree(wd)
502
        os.chdir(wd)
503
        self._mk_versioned_dir('dir0')
504
        self._mk_versioned_file('dir0/file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
505
0.41.4 by Parth Malwankar
--recurse is default.
506
        out, err = self.run_bzr(['grep', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
507
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
508
                              flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
509
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
510
        self.assertEqual(len(out.splitlines()), 2)
0.40.23 by Parth Malwankar
added test case for search while inside dir.
511
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
512
        out, err = self.run_bzr(['grep', 'lin.1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
513
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
514
                              flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
515
        # find line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
516
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
517
0.40.23 by Parth Malwankar
added test case for search while inside dir.
518
    def test_versioned_file_within_dir(self):
0.41.17 by Parth Malwankar
added tests.
519
        """(versioned) Search for pattern while in nested dir.
520
        """
521
        wd = 'foobar0'
522
        self.make_branch_and_tree(wd)
523
        os.chdir(wd)
524
        self._mk_versioned_dir('dir0')
525
        self._mk_versioned_file('dir0/file0.txt')
526
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
527
0.41.17 by Parth Malwankar
added tests.
528
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
529
        self.assertContainsRe(out, "^file0.txt~.:line1",
530
                              flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
531
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
532
        self.assertEqual(len(out.splitlines()), 2)
0.41.17 by Parth Malwankar
added tests.
533
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
534
        out, err = self.run_bzr(['grep', '-r', 'last:1', '.i.e1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
535
        self.assertContainsRe(out, "^file0.txt~.:line1",
536
                              flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
537
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
538
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
539
0.41.23 by Parth Malwankar
added tests for --include/exclude
540
    def test_versioned_include_file_within_dir(self):
541
        """(versioned) Ensure --include is respected with file within dir.
542
        """
543
        wd = 'foobar0'
544
        self.make_branch_and_tree(wd)
545
        os.chdir(wd)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
546
        self._mk_versioned_dir('dir0')                  # revno 1
547
        self._mk_versioned_file('dir0/file0.txt')       # revno 2
548
        self._mk_versioned_file('dir0/file1.aa')        # revno 3
549
        self._update_file('dir0/file1.aa', 'hello\n')   # revno 4
550
        self._update_file('dir0/file0.txt', 'hello\n')  # revno 5
0.41.23 by Parth Malwankar
added tests for --include/exclude
551
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
552
0.41.23 by Parth Malwankar
added tests for --include/exclude
553
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
554
                                 '--include', '*.aa', 'line1'])
555
        self.assertContainsRe(out, "^file1.aa~5:line1$",
556
                              flags=TestGrep._reflags)
557
        self.assertContainsRe(out, "^file1.aa~5:line10$",
558
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
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.104 by Parth Malwankar
made more tests more specific for accurate results.
562
563
        out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
564
                                 '--include', '*.aa', 'line1'])
565
        self.assertContainsRe(out, "^file1.aa~4:line1$",
566
                              flags=TestGrep._reflags)
567
        self.assertContainsRe(out, "^file1.aa~4:line10$",
568
                              flags=TestGrep._reflags)
569
        self.assertContainsRe(out, "^file1.aa~5:line1$",
570
                              flags=TestGrep._reflags)
571
        self.assertContainsRe(out, "^file1.aa~5:line10$",
572
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
573
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
574
        # finds line1 and line10 over two revisions
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
575
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
576
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
577
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
578
                                 '--include', '*.aa', 'lin.1'])
579
        self.assertContainsRe(out, "^file1.aa~5:line1$",
580
                              flags=TestGrep._reflags)
581
        self.assertContainsRe(out, "^file1.aa~5:line10$",
582
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
583
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
584
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
585
        self.assertEqual(len(out.splitlines()), 2)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
586
587
        out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
588
                                 '--include', '*.aa', 'lin.1'])
589
        self.assertContainsRe(out, "^file1.aa~3:line1$",
590
                              flags=TestGrep._reflags)
591
        self.assertContainsRe(out, "^file1.aa~4:line1$",
592
                              flags=TestGrep._reflags)
593
        self.assertContainsRe(out, "^file1.aa~5:line1$",
594
                              flags=TestGrep._reflags)
595
        self.assertContainsRe(out, "^file1.aa~3:line10$",
596
                              flags=TestGrep._reflags)
597
        self.assertContainsRe(out, "^file1.aa~4:line10$",
598
                              flags=TestGrep._reflags)
599
        self.assertContainsRe(out, "^file1.aa~5:line10$",
600
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
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 over 3 revisions
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
603
        self.assertEqual(len(out.splitlines()), 6)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
604
0.41.23 by Parth Malwankar
added tests for --include/exclude
605
    def test_versioned_exclude_file_within_dir(self):
606
        """(versioned) 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
0.41.23 by Parth Malwankar
added tests for --include/exclude
616
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
617
                                 '--exclude', '*.txt', 'line1'])
618
        self.assertContainsRe(out, "^file1.aa~.:line1",
619
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
620
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
621
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
622
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
623
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
624
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
625
                                 '--exclude', '*.txt', 'l[a-z]ne1'])
626
        self.assertContainsRe(out, "^file1.aa~.:line1",
627
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
628
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
629
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
630
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
631
0.41.17 by Parth Malwankar
added tests.
632
    def test_wtree_file_within_dir(self):
633
        """(wtree) Search for pattern while in nested dir.
634
        """
0.40.23 by Parth Malwankar
added test case for search while inside dir.
635
        wd = 'foobar0'
636
        self.make_branch_and_tree(wd)
637
        os.chdir(wd)
638
        self._mk_versioned_dir('dir0')
639
        self._mk_versioned_file('dir0/file0.txt')
640
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
641
0.40.23 by Parth Malwankar
added test case for search while inside dir.
642
        out, err = self.run_bzr(['grep', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
643
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
644
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
645
        self.assertEqual(len(out.splitlines()), 2)
0.40.13 by Parth Malwankar
added tests for -R and -i
646
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
647
        out, err = self.run_bzr(['grep', 'l[aeiou]ne1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
648
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
649
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
650
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
651
0.41.23 by Parth Malwankar
added tests for --include/exclude
652
    def test_wtree_include_file_within_dir(self):
653
        """(wtree) Ensure --include is respected with file within dir.
654
        """
655
        wd = 'foobar0'
656
        self.make_branch_and_tree(wd)
657
        os.chdir(wd)
658
        self._mk_versioned_dir('dir0')
659
        self._mk_versioned_file('dir0/file0.txt')
660
        self._mk_versioned_file('dir0/file1.aa')
661
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
662
0.41.23 by Parth Malwankar
added tests for --include/exclude
663
        out, err = self.run_bzr(['grep', '--include', '*.aa', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
664
        self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
665
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
666
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
667
668
        out, err = self.run_bzr(['grep', '--include', '*.aa', 'l[ixn]ne1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
669
        self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
670
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.104 by Parth Malwankar
made more tests more specific for accurate results.
671
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
672
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
673
674
    def test_wtree_exclude_file_within_dir(self):
675
        """(wtree) Ensure --exclude is respected with file within dir.
676
        """
677
        wd = 'foobar0'
678
        self.make_branch_and_tree(wd)
679
        os.chdir(wd)
680
        self._mk_versioned_dir('dir0')
681
        self._mk_versioned_file('dir0/file0.txt')
682
        self._mk_versioned_file('dir0/file1.aa')
683
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
684
685
        out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'li.e1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
686
        self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
687
        self.assertContainsRe(out, "^file1.aa:line10$",
688
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
689
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
690
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
691
        self.assertEqual(len(out.splitlines()), 2)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
692
0.41.23 by Parth Malwankar
added tests for --include/exclude
693
        out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
694
        self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
695
        self.assertContainsRe(out, "^file1.aa:line10$",
696
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
697
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
698
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
699
        self.assertEqual(len(out.splitlines()), 2)
0.41.23 by Parth Malwankar
added tests for --include/exclude
700
701
    def test_versioned_include_from_outside_dir(self):
702
        """(versioned) Ensure --include is respected during recursive search.
703
        """
704
        wd = 'foobar0'
705
        self.make_branch_and_tree(wd)
706
        os.chdir(wd)
707
708
        self._mk_versioned_dir('dir0')
709
        self._mk_versioned_file('dir0/file0.aa')
710
711
        self._mk_versioned_dir('dir1')
712
        self._mk_versioned_file('dir1/file1.bb')
713
714
        self._mk_versioned_dir('dir2')
715
        self._mk_versioned_file('dir2/file2.cc')
716
717
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
718
                                 '--include', '*.aa', '--include', '*.bb', 'l..e1'])
719
        self.assertContainsRe(
720
            out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
721
        self.assertContainsRe(
722
            out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
723
        self.assertContainsRe(
724
            out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
725
        self.assertContainsRe(
726
            out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
727
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
728
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
729
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
730
731
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
732
                                 '--include', '*.aa', '--include', '*.bb', 'line1'])
733
        self.assertContainsRe(
734
            out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
735
        self.assertContainsRe(
736
            out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
737
        self.assertContainsRe(
738
            out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
739
        self.assertContainsRe(
740
            out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
741
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
742
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
743
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
744
745
    def test_wtree_include_from_outside_dir(self):
746
        """(wtree) Ensure --include is respected during recursive search.
747
        """
748
        wd = 'foobar0'
749
        self.make_branch_and_tree(wd)
750
        os.chdir(wd)
751
752
        self._mk_versioned_dir('dir0')
753
        self._mk_versioned_file('dir0/file0.aa')
754
755
        self._mk_versioned_dir('dir1')
756
        self._mk_versioned_file('dir1/file1.bb')
757
758
        self._mk_versioned_dir('dir2')
759
        self._mk_versioned_file('dir2/file2.cc')
760
761
        out, err = self.run_bzr(['grep', '--include', '*.aa',
7143.15.2 by Jelmer Vernooij
Run autopep8.
762
                                 '--include', '*.bb', 'l.n.1'])
763
        self.assertContainsRe(out, "^dir0/file0.aa:line1$",
764
                              flags=TestGrep._reflags)
765
        self.assertContainsRe(out, "^dir1/file1.bb:line1$",
766
                              flags=TestGrep._reflags)
767
        self.assertContainsRe(
768
            out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
769
        self.assertContainsRe(
770
            out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
771
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
772
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
773
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
774
775
        out, err = self.run_bzr(['grep', '--include', '*.aa',
7143.15.2 by Jelmer Vernooij
Run autopep8.
776
                                 '--include', '*.bb', 'line1'])
777
        self.assertContainsRe(out, "^dir0/file0.aa:line1$",
778
                              flags=TestGrep._reflags)
779
        self.assertContainsRe(out, "^dir1/file1.bb:line1$",
780
                              flags=TestGrep._reflags)
781
        self.assertContainsRe(
782
            out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
783
        self.assertContainsRe(
784
            out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
785
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
786
        # finds line1 and line10
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
787
        self.assertEqual(len(out.splitlines()), 4)
0.41.23 by Parth Malwankar
added tests for --include/exclude
788
789
    def test_versioned_exclude_from_outside_dir(self):
790
        """(versioned) Ensure --exclude is respected during recursive search.
791
        """
792
        wd = 'foobar0'
793
        self.make_branch_and_tree(wd)
794
        os.chdir(wd)
795
796
        self._mk_versioned_dir('dir0')
797
        self._mk_versioned_file('dir0/file0.aa')
798
799
        self._mk_versioned_dir('dir1')
800
        self._mk_versioned_file('dir1/file1.bb')
801
802
        self._mk_versioned_dir('dir2')
803
        self._mk_versioned_file('dir2/file2.cc')
804
805
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
806
                                 '--exclude', '*.cc', 'l..e1'])
807
        self.assertContainsRe(
808
            out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
809
        self.assertContainsRe(
810
            out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
811
        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.
812
813
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
814
                                 '--exclude', '*.cc', 'line1'])
815
        self.assertContainsRe(
816
            out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
817
        self.assertContainsRe(
818
            out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
819
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.41.23 by Parth Malwankar
added tests for --include/exclude
820
821
    def test_wtree_exclude_from_outside_dir(self):
822
        """(wtree) Ensure --exclude is respected during recursive search.
823
        """
824
        wd = 'foobar0'
825
        self.make_branch_and_tree(wd)
826
        os.chdir(wd)
827
828
        self._mk_versioned_dir('dir0')
829
        self._mk_versioned_file('dir0/file0.aa')
830
831
        self._mk_versioned_dir('dir1')
832
        self._mk_versioned_file('dir1/file1.bb')
833
834
        self._mk_versioned_dir('dir2')
835
        self._mk_versioned_file('dir2/file2.cc')
836
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
837
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'l[hijk]ne1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
838
        self.assertContainsRe(out, "^dir0/file0.aa:line1",
839
                              flags=TestGrep._reflags)
840
        self.assertContainsRe(out, "^dir1/file1.bb:line1",
841
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
842
        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.
843
0.41.23 by Parth Malwankar
added tests for --include/exclude
844
        out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
845
        self.assertContainsRe(out, "^dir0/file0.aa:line1",
846
                              flags=TestGrep._reflags)
847
        self.assertContainsRe(out, "^dir1/file1.bb:line1",
848
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
849
        self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
0.41.23 by Parth Malwankar
added tests for --include/exclude
850
851
    def test_workingtree_files_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
852
        """(wtree) Grep for pattern with dirs passed as argument.
853
        """
0.40.41 by Parth Malwankar
added test for dir arg provided by user
854
        wd = 'foobar0'
855
        self.make_branch_and_tree(wd)
856
        os.chdir(wd)
857
858
        self._mk_versioned_dir('dir0')
859
        self._mk_versioned_file('dir0/file0.txt')
860
861
        self._mk_versioned_dir('dir1')
862
        self._mk_versioned_file('dir1/file1.txt')
863
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
864
        out, err = self.run_bzr(['grep', 'l[aeiou]ne1', 'dir0', 'dir1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
865
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
866
                              flags=TestGrep._reflags)
867
        self.assertContainsRe(out, "^dir1/file1.txt:line1",
868
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
869
0.40.41 by Parth Malwankar
added test for dir arg provided by user
870
        out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
871
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
872
                              flags=TestGrep._reflags)
873
        self.assertContainsRe(out, "^dir1/file1.txt:line1",
874
                              flags=TestGrep._reflags)
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
875
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
876
    def test_versioned_files_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
877
        """(versioned) Grep for pattern with dirs passed as argument.
878
        """
879
        wd = 'foobar0'
880
        self.make_branch_and_tree(wd)
881
        os.chdir(wd)
882
883
        self._mk_versioned_dir('dir0')
884
        self._mk_versioned_file('dir0/file0.txt')
885
886
        self._mk_versioned_dir('dir1')
887
        self._mk_versioned_file('dir1/file1.txt')
888
7143.15.2 by Jelmer Vernooij
Run autopep8.
889
        out, err = self.run_bzr(
890
            ['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
891
        self.assertContainsRe(
892
            out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
893
        self.assertContainsRe(
894
            out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
895
7143.15.2 by Jelmer Vernooij
Run autopep8.
896
        out, err = self.run_bzr(
897
            ['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
898
        self.assertContainsRe(
899
            out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
900
        self.assertContainsRe(
901
            out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
902
903
    def test_wtree_files_from_outside_dir(self):
904
        """(wtree) Grep for pattern with dirs passed as argument.
905
        """
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
906
        wd = 'foobar0'
907
        self.make_branch_and_tree(wd)
908
        os.chdir(wd)
909
910
        self._mk_versioned_dir('dir0')
911
        self._mk_versioned_file('dir0/file0.txt')
912
913
        self._mk_versioned_dir('dir1')
914
        self._mk_versioned_file('dir1/file1.txt')
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', 'li.e1', 'dir0', 'dir1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
917
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
918
                              flags=TestGrep._reflags)
919
        self.assertContainsRe(out, "^dir1/file1.txt:line1",
920
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
921
0.40.45 by Parth Malwankar
fixed case where only revno:0 is present. added test.
922
        out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
923
        self.assertContainsRe(out, "^dir0/file0.txt:line1",
924
                              flags=TestGrep._reflags)
925
        self.assertContainsRe(out, "^dir1/file1.txt:line1",
926
                              flags=TestGrep._reflags)
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
927
928
    def test_versioned_files_from_outside_two_dirs(self):
0.41.17 by Parth Malwankar
added tests.
929
        """(versioned) Grep for pattern with two levels of nested dir.
930
        """
931
        wd = 'foobar0'
932
        self.make_branch_and_tree(wd)
933
        os.chdir(wd)
934
935
        self._mk_versioned_dir('dir0')
936
        self._mk_versioned_file('dir0/file0.txt')
937
938
        self._mk_versioned_dir('dir1')
939
        self._mk_versioned_file('dir1/file1.txt')
940
941
        self._mk_versioned_dir('dir0/dir00')
942
        self._mk_versioned_file('dir0/dir00/file0.txt')
943
7143.15.2 by Jelmer Vernooij
Run autopep8.
944
        out, err = self.run_bzr(
945
            ['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
946
        self.assertContainsRe(
947
            out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
948
949
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
950
        self.assertContainsRe(
951
            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.
952
7143.15.2 by Jelmer Vernooij
Run autopep8.
953
        out, err = self.run_bzr(
954
            ['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
955
        self.assertContainsRe(
956
            out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
957
958
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
959
        self.assertContainsRe(
960
            out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
961
962
    def test_wtree_files_from_outside_two_dirs(self):
963
        """(wtree) Grep for pattern with two levels of nested dir.
964
        """
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
965
        wd = 'foobar0'
966
        self.make_branch_and_tree(wd)
967
        os.chdir(wd)
968
969
        self._mk_versioned_dir('dir0')
970
        self._mk_versioned_file('dir0/file0.txt')
971
972
        self._mk_versioned_dir('dir1')
973
        self._mk_versioned_file('dir1/file1.txt')
974
975
        self._mk_versioned_dir('dir0/dir00')
976
        self._mk_versioned_file('dir0/dir00/file0.txt')
977
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
978
        out, err = self.run_bzr(['grep', 'lin.1', 'dir0/dir00'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
979
        self.assertContainsRe(
980
            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.
981
982
        out, err = self.run_bzr(['grep', 'li.e1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
983
        self.assertContainsRe(
984
            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.
985
0.40.44 by Parth Malwankar
improved display of path when dir is given as argument
986
        out, err = self.run_bzr(['grep', 'line1', 'dir0/dir00'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
987
        self.assertContainsRe(
988
            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
989
0.41.4 by Parth Malwankar
--recurse is default.
990
        out, err = self.run_bzr(['grep', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
991
        self.assertContainsRe(
992
            out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
0.40.41 by Parth Malwankar
added test for dir arg provided by user
993
0.40.25 by Parth Malwankar
added test case for multilevel dir.
994
    def test_versioned_file_within_dir_two_levels(self):
0.41.17 by Parth Malwankar
added tests.
995
        """(versioned) Search for pattern while in nested dir (two levels).
996
        """
997
        wd = 'foobar0'
998
        self.make_branch_and_tree(wd)
999
        os.chdir(wd)
1000
        self._mk_versioned_dir('dir0')
1001
        self._mk_versioned_dir('dir0/dir1')
1002
        self._mk_versioned_file('dir0/dir1/file0.txt')
1003
        os.chdir('dir0')
1004
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1005
        out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1006
        self.assertContainsRe(
1007
            out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1008
1009
        out, err = self.run_bzr(
1010
            ['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
1011
        self.assertContainsRe(
1012
            out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1013
1014
        out, err = self.run_bzr(
1015
            ['grep', '-r', 'last:1', '--no-recursive', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1016
        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.
1017
1018
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1019
        self.assertContainsRe(
1020
            out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1021
1022
        out, err = self.run_bzr(
1023
            ['grep', '-r', 'last:1', '--from-root', 'line1'])
1024
        self.assertContainsRe(
1025
            out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1026
1027
        out, err = self.run_bzr(
1028
            ['grep', '-r', 'last:1', '--no-recursive', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1029
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1030
        self.assertEqual(len(out.splitlines()), 0)
0.41.17 by Parth Malwankar
added tests.
1031
1032
    def test_wtree_file_within_dir_two_levels(self):
1033
        """(wtree) Search for pattern while in nested dir (two levels).
1034
        """
0.40.25 by Parth Malwankar
added test case for multilevel dir.
1035
        wd = 'foobar0'
1036
        self.make_branch_and_tree(wd)
1037
        os.chdir(wd)
1038
        self._mk_versioned_dir('dir0')
1039
        self._mk_versioned_dir('dir0/dir1')
1040
        self._mk_versioned_file('dir0/dir1/file0.txt')
1041
        os.chdir('dir0')
0.41.4 by Parth Malwankar
--recurse is default.
1042
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1043
        out, err = self.run_bzr(['grep', 'l[hij]ne1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1044
        self.assertContainsRe(out, "^dir1/file0.txt:line1",
1045
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1046
1047
        out, err = self.run_bzr(['grep', '--from-root', 'l.ne1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1048
        self.assertContainsRe(
1049
            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.
1050
1051
        out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1052
        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.
1053
0.41.4 by Parth Malwankar
--recurse is default.
1054
        out, err = self.run_bzr(['grep', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1055
        self.assertContainsRe(out, "^dir1/file0.txt:line1",
1056
                              flags=TestGrep._reflags)
0.41.4 by Parth Malwankar
--recurse is default.
1057
0.40.25 by Parth Malwankar
added test case for multilevel dir.
1058
        out, err = self.run_bzr(['grep', '--from-root', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1059
        self.assertContainsRe(
1060
            out, "^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
0.41.4 by Parth Malwankar
--recurse is default.
1061
0.41.6 by Parth Malwankar
renamed --recurse/--no-recurse => --recursive/--no-recursive
1062
        out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1063
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.25 by Parth Malwankar
added test case for multilevel dir.
1064
0.41.17 by Parth Malwankar
added tests.
1065
    def test_versioned_ignore_case_no_match(self):
1066
        """(versioned) Match fails without --ignore-case.
1067
        """
1068
        wd = 'foobar0'
1069
        self.make_branch_and_tree(wd)
1070
        os.chdir(wd)
1071
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1072
0.41.17 by Parth Malwankar
added tests.
1073
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'LinE1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1074
        self.assertNotContainsRe(
1075
            out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1076
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1077
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'Li.E1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1078
        self.assertNotContainsRe(
1079
            out, "file0.txt~.:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1080
0.41.17 by Parth Malwankar
added tests.
1081
    def test_wtree_ignore_case_no_match(self):
1082
        """(wtree) Match fails without --ignore-case.
1083
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
1084
        wd = 'foobar0'
1085
        self.make_branch_and_tree(wd)
1086
        os.chdir(wd)
1087
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1088
0.40.13 by Parth Malwankar
added tests for -R and -i
1089
        out, err = self.run_bzr(['grep', 'LinE1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1090
        self.assertNotContainsRe(
1091
            out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
1092
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1093
        out, err = self.run_bzr(['grep', '.inE1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1094
        self.assertNotContainsRe(
1095
            out, "file0.txt:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1096
0.41.17 by Parth Malwankar
added tests.
1097
    def test_versioned_ignore_case_match(self):
1098
        """(versioned) Match fails without --ignore-case.
1099
        """
1100
        wd = 'foobar0'
1101
        self.make_branch_and_tree(wd)
1102
        os.chdir(wd)
1103
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1104
1105
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1106
                                 '-i', 'Li.E1', 'file0.txt'])
1107
        self.assertContainsRe(out, "file0.txt~.:line1",
1108
                              flags=TestGrep._reflags)
1109
1110
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1111
                                 '-i', 'LinE1', 'file0.txt'])
1112
        self.assertContainsRe(out, "file0.txt~.:line1",
1113
                              flags=TestGrep._reflags)
1114
1115
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1116
                                 '--ignore-case', 'LinE1', 'file0.txt'])
1117
        self.assertContainsRe(out, "^file0.txt~.:line1",
1118
                              flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1119
1120
    def test_wtree_ignore_case_match(self):
1121
        """(wtree) Match fails without --ignore-case.
1122
        """
0.40.13 by Parth Malwankar
added tests for -R and -i
1123
        wd = 'foobar0'
1124
        self.make_branch_and_tree(wd)
1125
        os.chdir(wd)
1126
        self._mk_versioned_file('file0.txt')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1127
0.40.13 by Parth Malwankar
added tests for -R and -i
1128
        out, err = self.run_bzr(['grep', '-i', 'LinE1', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1129
        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.
1130
7143.15.2 by Jelmer Vernooij
Run autopep8.
1131
        out, err = self.run_bzr(
1132
            ['grep', '--ignore-case', 'LinE1', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1133
        self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
1134
7143.15.2 by Jelmer Vernooij
Run autopep8.
1135
        out, err = self.run_bzr(
1136
            ['grep', '--ignore-case', 'Li.E1', 'file0.txt'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1137
        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.
1138
0.41.17 by Parth Malwankar
added tests.
1139
    def test_versioned_from_root_fail(self):
1140
        """(versioned) Match should fail without --from-root.
1141
        """
1142
        wd = 'foobar0'
1143
        self.make_branch_and_tree(wd)
1144
        os.chdir(wd)
1145
        self._mk_versioned_file('file0.txt')
1146
        self._mk_versioned_dir('dir0')
1147
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1148
1149
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'li.e1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1150
        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.
1151
0.41.17 by Parth Malwankar
added tests.
1152
        out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1153
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1154
1155
    def test_wtree_from_root_fail(self):
1156
        """(wtree) Match should fail without --from-root.
1157
        """
0.40.14 by Parth Malwankar
added test for --from-root
1158
        wd = 'foobar0'
1159
        self.make_branch_and_tree(wd)
1160
        os.chdir(wd)
1161
        self._mk_versioned_file('file0.txt')
1162
        self._mk_versioned_dir('dir0')
1163
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1164
0.40.14 by Parth Malwankar
added test for --from-root
1165
        out, err = self.run_bzr(['grep', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1166
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1167
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1168
        out, err = self.run_bzr(['grep', 'li.e1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1169
        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.
1170
0.41.17 by Parth Malwankar
added tests.
1171
    def test_versioned_from_root_pass(self):
1172
        """(versioned) Match pass with --from-root.
1173
        """
1174
        wd = 'foobar0'
1175
        self.make_branch_and_tree(wd)
1176
        os.chdir(wd)
1177
        self._mk_versioned_file('file0.txt')
1178
        self._mk_versioned_dir('dir0')
1179
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1180
1181
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1182
                                 '--from-root', 'l.ne1'])
1183
        self.assertContainsRe(out, "file0.txt~.:line1",
1184
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1185
0.41.17 by Parth Malwankar
added tests.
1186
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1187
                                 '--from-root', 'line1'])
1188
        self.assertContainsRe(out, "file0.txt~.:line1",
1189
                              flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1190
1191
    def test_wtree_from_root_pass(self):
1192
        """(wtree) Match pass with --from-root.
1193
        """
0.40.14 by Parth Malwankar
added test for --from-root
1194
        wd = 'foobar0'
1195
        self.make_branch_and_tree(wd)
1196
        os.chdir(wd)
1197
        self._mk_versioned_file('file0.txt')
1198
        self._mk_versioned_dir('dir0')
1199
        os.chdir('dir0')
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1200
1201
        out, err = self.run_bzr(['grep', '--from-root', 'lin.1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1202
        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.
1203
0.40.14 by Parth Malwankar
added test for --from-root
1204
        out, err = self.run_bzr(['grep', '--from-root', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1205
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1206
1207
    def test_versioned_with_line_number(self):
1208
        """(versioned) Search for pattern with --line-number.
1209
        """
1210
        wd = 'foobar0'
1211
        self.make_branch_and_tree(wd)
1212
        os.chdir(wd)
1213
        self._mk_versioned_file('file0.txt')
1214
1215
        out, err = self.run_bzr(['grep', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1216
                                 '--line-number', 'li.e3', 'file0.txt'])
1217
        self.assertContainsRe(out, "file0.txt~.:3:line3",
1218
                              flags=TestGrep._reflags)
1219
1220
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1221
                                 '--line-number', 'line3', 'file0.txt'])
1222
        self.assertContainsRe(out, "file0.txt~.:3:line3",
1223
                              flags=TestGrep._reflags)
1224
1225
        out, err = self.run_bzr(['grep', '-r', 'last:1',
1226
                                 '-n', 'line1', 'file0.txt'])
1227
        self.assertContainsRe(out, "file0.txt~.:1:line1",
1228
                              flags=TestGrep._reflags)
0.41.17 by Parth Malwankar
added tests.
1229
0.47.3 by Martin
Fix previously untested bug with regexp and line numbers introduced by optimisation
1230
        out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1231
        self.assertContainsRe(out, "file0.txt:3:line3",
1232
                              flags=TestGrep._reflags)
0.47.3 by Martin
Fix previously untested bug with regexp and line numbers introduced by optimisation
1233
0.41.17 by Parth Malwankar
added tests.
1234
    def test_wtree_with_line_number(self):
1235
        """(wtree) Search for pattern with --line-number.
1236
        """
0.40.24 by Parth Malwankar
added support for --line-number.
1237
        wd = 'foobar0'
1238
        self.make_branch_and_tree(wd)
1239
        os.chdir(wd)
1240
        self._mk_versioned_file('file0.txt')
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1241
7143.15.2 by Jelmer Vernooij
Run autopep8.
1242
        out, err = self.run_bzr(
1243
            ['grep', '--line-number', 'line3', 'file0.txt'])
1244
        self.assertContainsRe(out, "file0.txt:3:line3",
1245
                              flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1246
0.40.24 by Parth Malwankar
added support for --line-number.
1247
        out, err = self.run_bzr(['grep', '-n', 'line1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1248
        self.assertContainsRe(out, "file0.txt:1:line1",
1249
                              flags=TestGrep._reflags)
0.40.14 by Parth Malwankar
added test for --from-root
1250
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1251
        out, err = self.run_bzr(['grep', '-n', '[hjkl]ine1', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1252
        self.assertContainsRe(out, "file0.txt:1:line1",
1253
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1254
0.47.3 by Martin
Fix previously untested bug with regexp and line numbers introduced by optimisation
1255
        out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1256
        self.assertContainsRe(out, "file0.txt:3:line3",
1257
                              flags=TestGrep._reflags)
0.47.3 by Martin
Fix previously untested bug with regexp and line numbers introduced by optimisation
1258
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1259
    def test_revno_basic_history_grep_file(self):
0.41.17 by Parth Malwankar
added tests.
1260
        """Search for pattern in specific revision number in a file.
1261
        """
0.40.34 by Parth Malwankar
added tests for single revision history search
1262
        wd = 'foobar0'
1263
        fname = 'file0.txt'
1264
        self.make_branch_and_tree(wd)
1265
        os.chdir(wd)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1266
        self._mk_versioned_file(fname, total_lines=0)
0.40.34 by Parth Malwankar
added tests for single revision history search
1267
        self._update_file(fname, text="v2 text\n")
1268
        self._update_file(fname, text="v3 text\n")
1269
        self._update_file(fname, text="v4 text\n")
1270
1271
        # rev 2 should not have text 'v3'
1272
        out, err = self.run_bzr(['grep', '-r', '2', 'v3', fname])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1273
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1274
1275
        # rev 3 should not have text 'v3'
1276
        out, err = self.run_bzr(['grep', '-r', '3', 'v3', fname])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1277
        self.assertContainsRe(out, "file0.txt~3:v3.*", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1278
1279
        # rev 3 should not have text 'v3' with line number
1280
        out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3', fname])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1281
        self.assertContainsRe(out, "file0.txt~3:2:v3.*",
1282
                              flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1283
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1284
        # rev 2 should not have text 'v3'
1285
        out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3', fname])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1286
        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.
1287
1288
        # rev 3 should not have text 'v3'
1289
        out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3', fname])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1290
        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.
1291
1292
        # rev 3 should not have text 'v3' with line number
1293
        out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3', fname])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1294
        self.assertContainsRe(out, "file0.txt~3:2:v3.*",
1295
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1296
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1297
    def test_revno_basic_history_grep_full(self):
0.41.17 by Parth Malwankar
added tests.
1298
        """Search for pattern in specific revision number in a file.
1299
        """
0.40.34 by Parth Malwankar
added tests for single revision history search
1300
        wd = 'foobar0'
1301
        fname = 'file0.txt'
1302
        self.make_branch_and_tree(wd)
1303
        os.chdir(wd)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1304
        self._mk_versioned_file(fname, total_lines=0)  # rev1
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1305
        self._mk_versioned_file('file1.txt')          # rev2
1306
        self._update_file(fname, text="v3 text\n")    # rev3
1307
        self._update_file(fname, text="v4 text\n")    # rev4
1308
        self._update_file(fname, text="v5 text\n")    # rev5
0.40.34 by Parth Malwankar
added tests for single revision history search
1309
1310
        # rev 2 should not have text 'v3'
1311
        out, err = self.run_bzr(['grep', '-r', '2', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1312
        self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1313
1314
        # rev 3 should not have text 'v3'
1315
        out, err = self.run_bzr(['grep', '-r', '3', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1316
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
0.40.34 by Parth Malwankar
added tests for single revision history search
1317
1318
        # rev 3 should not have text 'v3' with line number
1319
        out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1320
        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
1321
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1322
        # rev 2 should not have text 'v3'
1323
        out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1324
        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.
1325
1326
        # rev 3 should not have text 'v3'
1327
        out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1328
        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.
1329
1330
        # rev 3 should not have text 'v3' with line number
1331
        out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1332
        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.
1333
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1334
    def test_revno_versioned_file_in_dir(self):
0.41.17 by Parth Malwankar
added tests.
1335
        """Grep specific version of file withing dir.
1336
        """
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1337
        wd = 'foobar0'
1338
        self.make_branch_and_tree(wd)
1339
        os.chdir(wd)
1340
        self._mk_versioned_dir('dir0')                      # rev1
1341
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1342
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1343
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1344
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1345
1346
        # v4 should not be present in revno 3
0.41.4 by Parth Malwankar
--recurse is default.
1347
        out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1348
        self.assertNotContainsRe(
1349
            out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1350
1351
        # v4 should be present in revno 4
0.41.4 by Parth Malwankar
--recurse is default.
1352
        out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1353
        self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1354
                              flags=TestGrep._reflags)
0.40.35 by Parth Malwankar
fixed asserts and added test for revno based grep
1355
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1356
        # v4 should not be present in revno 3
1357
        out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1358
        self.assertNotContainsRe(
1359
            out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1360
1361
        # v4 should be present in revno 4
1362
        out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1363
        self.assertContainsRe(out, "^dir0/file0.txt~4:v4",
1364
                              flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1365
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1366
    def test_revno_range_basic_history_grep(self):
0.41.17 by Parth Malwankar
added tests.
1367
        """Search for pattern in revision range for file.
1368
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1369
        wd = 'foobar0'
1370
        fname = 'file0.txt'
1371
        self.make_branch_and_tree(wd)
1372
        os.chdir(wd)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1373
        self._mk_versioned_file(fname, total_lines=0)  # rev1
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1374
        self._mk_versioned_file('file1.txt')          # rev2
1375
        self._update_file(fname, text="v3 text\n")    # rev3
1376
        self._update_file(fname, text="v4 text\n")    # rev4
1377
        self._update_file(fname, text="v5 text\n")    # rev5
1378
        self._update_file(fname, text="v6 text\n")    # rev6
1379
1380
        out, err = self.run_bzr(['grep', '-r', '1..', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1381
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1382
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1383
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1384
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1385
        self.assertEqual(len(out.splitlines()), 4)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1386
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1387
        out, err = self.run_bzr(['grep', '-r', '..1', 'v3'])
1388
        # searching only rev1 gives nothing
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1389
        self.assertEqual(len(out.splitlines()), 0)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1390
1391
        out, err = self.run_bzr(['grep', '-r', '..6', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1392
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1393
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1394
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1395
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1396
        self.assertEqual(len(out.splitlines()), 4)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1397
1398
        out, err = self.run_bzr(['grep', '-r', '..', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1399
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1400
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1401
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1402
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1403
        self.assertEqual(len(out.splitlines()), 4)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1404
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1405
        out, err = self.run_bzr(['grep', '-r', '1..5', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1406
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1407
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1408
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1409
        self.assertNotContainsRe(
1410
            out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1411
        self.assertEqual(len(out.splitlines()), 3)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1412
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1413
        out, err = self.run_bzr(['grep', '-r', '5..1', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1414
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1415
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1416
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1417
        self.assertNotContainsRe(
1418
            out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1419
        self.assertEqual(len(out.splitlines()), 3)
0.40.106 by Parth Malwankar
fixed error in dotted rev reverse search.
1420
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1421
        out, err = self.run_bzr(['grep', '-r', '1..', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1422
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1423
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1424
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1425
        self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1426
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1427
1428
        out, err = self.run_bzr(['grep', '-r', '1..5', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1429
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1430
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1431
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1432
        self.assertNotContainsRe(
1433
            out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1434
        self.assertEqual(len(out.splitlines()), 3)
0.40.105 by Parth Malwankar
fixed bug in ordering of user provided versions.
1435
1436
        out, err = self.run_bzr(['grep', '-r', '5..1', '[tuv]3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1437
        self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1438
        self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1439
        self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1440
        self.assertNotContainsRe(
1441
            out, "file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1442
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1443
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1444
    def test_revno_range_versioned_file_in_dir(self):
0.41.17 by Parth Malwankar
added tests.
1445
        """Grep rev-range for pattern for file withing a dir.
1446
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1447
        wd = 'foobar0'
1448
        self.make_branch_and_tree(wd)
1449
        os.chdir(wd)
1450
        self._mk_versioned_dir('dir0')                      # rev1
1451
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1452
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1453
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1454
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1455
        self._update_file('dir0/file0.txt', "v6 text\n")    # rev6
1456
0.41.4 by Parth Malwankar
--recurse is default.
1457
        out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1458
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1459
                              flags=TestGrep._reflags)
1460
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1461
                              flags=TestGrep._reflags)
1462
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1463
                              flags=TestGrep._reflags)
1464
        self.assertNotContainsRe(
1465
            out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1466
        self.assertEqual(len(out.splitlines()), 3)
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1467
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1468
        out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1469
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1470
                              flags=TestGrep._reflags)
1471
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1472
                              flags=TestGrep._reflags)
1473
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1474
                              flags=TestGrep._reflags)
1475
        self.assertNotContainsRe(
1476
            out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1477
        self.assertEqual(len(out.splitlines()), 3)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1478
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1479
    def test_revno_range_versioned_file_from_outside_dir(self):
0.41.17 by Parth Malwankar
added tests.
1480
        """Grep rev-range for pattern from outside dir.
1481
        """
0.40.38 by Parth Malwankar
added --levels options. added tests for range search.
1482
        wd = 'foobar0'
1483
        self.make_branch_and_tree(wd)
1484
        os.chdir(wd)
1485
        self._mk_versioned_dir('dir0')                      # rev1
1486
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1487
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1488
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1489
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1490
        self._update_file('dir0/file0.txt', "v6 text\n")    # rev6
1491
1492
        out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1493
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1494
                              flags=TestGrep._reflags)
1495
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1496
                              flags=TestGrep._reflags)
1497
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1498
                              flags=TestGrep._reflags)
1499
        self.assertNotContainsRe(
1500
            out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.13 by Parth Malwankar
added tests for -R and -i
1501
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1502
        out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1503
        self.assertContainsRe(out, "^dir0/file0.txt~3:v3",
1504
                              flags=TestGrep._reflags)
1505
        self.assertContainsRe(out, "^dir0/file0.txt~4:v3",
1506
                              flags=TestGrep._reflags)
1507
        self.assertContainsRe(out, "^dir0/file0.txt~5:v3",
1508
                              flags=TestGrep._reflags)
1509
        self.assertNotContainsRe(
1510
            out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1511
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1512
    def test_levels(self):
0.41.17 by Parth Malwankar
added tests.
1513
        """--levels=0 should show findings from merged revision.
1514
        """
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1515
        wd0 = 'foobar0'
1516
        wd1 = 'foobar1'
1517
1518
        self.make_branch_and_tree(wd0)
1519
        os.chdir(wd0)
1520
        self._mk_versioned_file('file0.txt')
1521
        os.chdir('..')
1522
1523
        out, err = self.run_bzr(['branch', wd0, wd1])
1524
        os.chdir(wd1)
1525
        self._mk_versioned_file('file1.txt')
1526
        os.chdir(osutils.pathjoin('..', wd0))
1527
1528
        out, err = self.run_bzr(['merge', osutils.pathjoin('..', wd1)])
1529
        out, err = self.run_bzr(['ci', '-m', 'merged'])
1530
1531
        out, err = self.run_bzr(['grep', 'line1'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1532
        self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1533
        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.
1534
0.41.17 by Parth Malwankar
added tests.
1535
        # levels should be ignored by wtree grep
1536
        out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1537
        self.assertContainsRe(out, "^file0.txt:line1$",
1538
                              flags=TestGrep._reflags)
1539
        self.assertContainsRe(out, "^file1.txt:line1$",
1540
                              flags=TestGrep._reflags)
1541
        self.assertContainsRe(out, "^file0.txt:line10$",
1542
                              flags=TestGrep._reflags)
1543
        self.assertContainsRe(out, "^file1.txt:line10$",
1544
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1545
        self.assertEqual(len(out.splitlines()), 4)
0.41.17 by Parth Malwankar
added tests.
1546
7143.15.2 by Jelmer Vernooij
Run autopep8.
1547
        out, err = self.run_bzr(
1548
            ['grep', '-r', 'last:1..', '--levels=0', 'line1'])
1549
        self.assertContainsRe(out, "^file0.txt~2:line1$",
1550
                              flags=TestGrep._reflags)
1551
        self.assertContainsRe(out, "^file1.txt~2:line1$",
1552
                              flags=TestGrep._reflags)
1553
        self.assertContainsRe(
1554
            out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1555
        self.assertContainsRe(
1556
            out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1557
        self.assertContainsRe(out, "^file0.txt~2:line10$",
1558
                              flags=TestGrep._reflags)
1559
        self.assertContainsRe(out, "^file1.txt~2:line10$",
1560
                              flags=TestGrep._reflags)
1561
        self.assertContainsRe(
1562
            out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1563
        self.assertContainsRe(
1564
            out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1565
        self.assertEqual(len(out.splitlines()), 8)
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1566
7143.15.2 by Jelmer Vernooij
Run autopep8.
1567
        out, err = self.run_bzr(
1568
            ['grep', '-r', '-1..', '-n', '--levels=0', 'line1'])
1569
        self.assertContainsRe(out, "^file0.txt~2:1:line1$",
1570
                              flags=TestGrep._reflags)
1571
        self.assertContainsRe(out, "^file1.txt~2:1:line1$",
1572
                              flags=TestGrep._reflags)
1573
        self.assertContainsRe(
1574
            out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1575
        self.assertContainsRe(
1576
            out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1577
        self.assertContainsRe(
1578
            out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1579
        self.assertContainsRe(
1580
            out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1581
        self.assertContainsRe(
1582
            out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1583
        self.assertContainsRe(
1584
            out, "^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1585
        self.assertEqual(len(out.splitlines()), 8)
0.40.46 by Parth Malwankar
--levels=0 now implicitly prints revnos. added test for --levels=0.
1586
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1587
        # levels should be ignored by wtree grep
1588
        out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1589
        self.assertContainsRe(out, "^file0.txt:line1$",
1590
                              flags=TestGrep._reflags)
1591
        self.assertContainsRe(out, "^file1.txt:line1$",
1592
                              flags=TestGrep._reflags)
1593
        self.assertContainsRe(out, "^file0.txt:line10$",
1594
                              flags=TestGrep._reflags)
1595
        self.assertContainsRe(out, "^file1.txt:line10$",
1596
                              flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1597
        self.assertEqual(len(out.splitlines()), 4)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1598
7143.15.2 by Jelmer Vernooij
Run autopep8.
1599
        out, err = self.run_bzr(
1600
            ['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
1601
        self.assertContainsRe(out, "^file0.txt~2:line1$",
1602
                              flags=TestGrep._reflags)
1603
        self.assertContainsRe(out, "^file1.txt~2:line1$",
1604
                              flags=TestGrep._reflags)
1605
        self.assertContainsRe(
1606
            out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1607
        self.assertContainsRe(
1608
            out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1609
        self.assertContainsRe(out, "^file0.txt~2:line10$",
1610
                              flags=TestGrep._reflags)
1611
        self.assertContainsRe(out, "^file1.txt~2:line10$",
1612
                              flags=TestGrep._reflags)
1613
        self.assertContainsRe(
1614
            out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1615
        self.assertContainsRe(
1616
            out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1617
        self.assertEqual(len(out.splitlines()), 8)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1618
7143.15.2 by Jelmer Vernooij
Run autopep8.
1619
        out, err = self.run_bzr(
1620
            ['grep', '-r', '-1..', '-n', '--levels=0', '.ine1'])
1621
        self.assertContainsRe(out, "file0.txt~2:1:line1",
1622
                              flags=TestGrep._reflags)
1623
        self.assertContainsRe(out, "file1.txt~2:1:line1",
1624
                              flags=TestGrep._reflags)
1625
        self.assertContainsRe(
1626
            out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1627
        self.assertContainsRe(
1628
            out, "file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1629
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1630
    def test_dotted_rev_grep(self):
1631
        """Grep in dotted revs
1632
        """
1633
        wd0 = 'foobar0'
1634
        wd1 = 'foobar1'
1635
1636
        self.make_branch_and_tree(wd0)
1637
        os.chdir(wd0)
1638
        self._mk_versioned_file('file0.txt')
1639
        os.chdir('..')
1640
1641
        out, err = self.run_bzr(['branch', wd0, wd1])
1642
        os.chdir(wd1)
1643
        self._mk_versioned_file('file1.txt')        # revno 1.1.1
1644
        self._update_file('file1.txt', "text 0\n")  # revno 1.1.2
1645
        self._update_file('file1.txt', "text 1\n")  # revno 1.1.3
1646
        self._update_file('file1.txt', "text 2\n")  # revno 1.1.4
1647
        os.chdir(osutils.pathjoin('..', wd0))
1648
1649
        out, err = self.run_bzr(['merge', osutils.pathjoin('..', wd1)])
1650
        out, err = self.run_bzr(['ci', '-m', 'merged'])
1651
1652
        out, err = self.run_bzr(['grep', '-r', '1.1.1..1.1.4', 'text'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1653
        self.assertContainsRe(
1654
            out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1655
        self.assertContainsRe(
1656
            out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1657
        self.assertContainsRe(
1658
            out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1659
        self.assertContainsRe(
1660
            out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1661
        self.assertContainsRe(
1662
            out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1663
        self.assertContainsRe(
1664
            out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1665
        self.assertEqual(len(out.splitlines()), 6)
0.40.97 by Parth Malwankar
fixed caching bug for rev range.
1666
0.41.17 by Parth Malwankar
added tests.
1667
    def test_versioned_binary_file_grep(self):
1668
        """(versioned) Grep for pattern in binary file.
1669
        """
1670
        wd = 'foobar0'
1671
        self.make_branch_and_tree(wd)
1672
        os.chdir(wd)
0.40.107 by Parth Malwankar
made tests more precise
1673
        self._mk_versioned_file('file.txt')
0.40.60 by Parth Malwankar
'binary file skipped' warning is only shown with --verbose flag
1674
        self._mk_versioned_file('file0.bin')
1675
        self._update_file('file0.bin', "\x00lineNN\x00\n")
1676
1677
        # note: set --verbose/-v flag to get the skip message.
1678
        out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1679
                                 'lineNN', 'file0.bin'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1680
        self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1681
        self.assertContainsRe(
1682
            err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1683
        self.assertEqual(len(out.splitlines()), 0)
1684
        self.assertEqual(len(err.splitlines()), 1)
0.41.17 by Parth Malwankar
added tests.
1685
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1686
        out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1687
                                 'line.N', 'file0.bin'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1688
        self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1689
        self.assertContainsRe(
1690
            err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
0.40.109 by Parth Malwankar
changed assertTrue to assertEqual
1691
        self.assertEqual(len(out.splitlines()), 0)
1692
        self.assertEqual(len(err.splitlines()), 1)
0.40.87 by Parth Malwankar
updated tests for better coverage of pattern and fixed-string match.
1693
0.41.17 by Parth Malwankar
added tests.
1694
    def test_wtree_binary_file_grep(self):
1695
        """(wtree) Grep for pattern in binary file.
1696
        """
0.40.47 by Parth Malwankar
fixes bug #531336. binary files are now skipped.
1697
        wd = 'foobar0'
1698
        self.make_branch_and_tree(wd)
1699
        os.chdir(wd)
0.40.60 by Parth Malwankar
'binary file skipped' warning is only shown with --verbose flag
1700
        self._mk_versioned_file('file0.bin')
1701
        self._update_file('file0.bin', "\x00lineNN\x00\n")
1702
1703
        # note: set --verbose/-v flag to get the skip message.
1704
        out, err = self.run_bzr(['grep', '-v', 'lineNN', 'file0.bin'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1705
        self.assertNotContainsRe(
1706
            out, "file0.bin:line1", flags=TestGrep._reflags)
1707
        self.assertContainsRe(
1708
            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
1709
1710
        # binary warning should not be shown without --verbose
1711
        out, err = self.run_bzr(['grep', 'lineNN', 'file0.bin'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
1712
        self.assertNotContainsRe(
1713
            out, "file0.bin:line1", flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1714
        self.assertNotContainsRe(err, "Binary file", flags=TestGrep._reflags)
0.40.47 by Parth Malwankar
fixes bug #531336. binary files are now skipped.
1715
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1716
    def test_revspec(self):
1717
        """Ensure various revspecs work
1718
        """
1719
        wd = 'foobar0'
1720
        self.make_branch_and_tree(wd)
1721
        os.chdir(wd)
1722
        self._mk_versioned_dir('dir0')                      # rev1
1723
        self._mk_versioned_file('dir0/file0.txt')           # rev2
1724
        self._update_file('dir0/file0.txt', "v3 text\n")    # rev3
1725
        self._update_file('dir0/file0.txt', "v4 text\n")    # rev4
1726
        self._update_file('dir0/file0.txt', "v5 text\n")    # rev5
1727
1728
        out, err = self.run_bzr(['grep', '-r', 'revno:1..2', 'v3'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1729
        self.assertNotContainsRe(out, "file0", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1730
        self.assertEqual(len(out.splitlines()), 0)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1731
1732
        out, err = self.run_bzr(['grep', '-r', 'revno:4..', 'v4'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1733
        self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1734
        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.
1735
1736
        out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v4'])
0.40.99 by Parth Malwankar
updated tests to use assertContainsRe/assertNotContainsRe
1737
        self.assertNotContainsRe(out, "file0", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1738
        self.assertEqual(len(out.splitlines()), 0)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1739
1740
        out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v3'])
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1741
        self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
0.40.110 by Parth Malwankar
made some tests more precise
1742
        self.assertEqual(len(out.splitlines()), 1)
0.40.96 by Parth Malwankar
added test to ensure that various revspecs work.
1743
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1744
    def test_wtree_files_with_matches(self):
1745
        """(wtree) Ensure --files-with-matches, -l works
1746
        """
1747
        wd = 'foobar0'
1748
        self.make_branch_and_tree(wd)
1749
        os.chdir(wd)
1750
1751
        self._mk_versioned_file('file0.txt', total_lines=2)
1752
        self._mk_versioned_file('file1.txt', total_lines=2)
1753
        self._mk_versioned_dir('dir0')
1754
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)
1755
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)
1756
1757
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
1758
        self._update_file('dir0/file00.txt', 'HELLO\n', checkin=False)
1759
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1760
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1761
        out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1762
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1763
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1764
        self.assertContainsRe(out, "^dir0/file00.txt$",
1765
                              flags=TestGrep._reflags)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1766
        self.assertEqual(len(out.splitlines()), 2)
1767
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1768
        # regex
1769
        out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1770
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1771
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1772
        self.assertContainsRe(out, "^dir0/file00.txt$",
1773
                              flags=TestGrep._reflags)
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1774
        self.assertEqual(len(out.splitlines()), 2)
1775
1776
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1777
        out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1778
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1779
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1780
        self.assertContainsRe(out, "^dir0/file00.txt$",
1781
                              flags=TestGrep._reflags)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1782
        self.assertEqual(len(out.splitlines()), 2)
1783
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1784
        # regex
1785
        out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1786
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1787
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1788
        self.assertContainsRe(out, "^dir0/file00.txt$",
1789
                              flags=TestGrep._reflags)
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1790
        self.assertEqual(len(out.splitlines()), 2)
1791
1792
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1793
        out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1794
7143.15.2 by Jelmer Vernooij
Run autopep8.
1795
        self.assertContainsRe(out, "^dir0/file00.txt$",
1796
                              flags=TestGrep._reflags)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1797
        self.assertEqual(len(out.splitlines()), 1)
1798
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1799
        # regex
1800
        out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1801
7143.15.2 by Jelmer Vernooij
Run autopep8.
1802
        self.assertContainsRe(out, "^dir0/file00.txt$",
1803
                              flags=TestGrep._reflags)
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1804
        self.assertEqual(len(out.splitlines()), 1)
1805
1806
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1807
        out, err = self.run_bzr(['grep', '-l', 'HELLO', 'file0.txt'])
1808
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1809
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1810
        self.assertEqual(len(out.splitlines()), 1)
1811
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1812
        # regex
1813
        out, err = self.run_bzr(['grep', '-l', '.ELLO', 'file0.txt'])
1814
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1815
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1816
        self.assertEqual(len(out.splitlines()), 1)
1817
1818
        # fixed-string
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1819
        out, err = self.run_bzr(['grep', '--no-recursive', '-l', 'HELLO'])
1820
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1821
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1822
        self.assertEqual(len(out.splitlines()), 1)
1823
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1824
        # regex
1825
        out, err = self.run_bzr(['grep', '--no-recursive', '-l', '.ELLO'])
1826
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1827
        self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
0.40.123 by Parth Malwankar
added regex tests for wtree -l search
1828
        self.assertEqual(len(out.splitlines()), 1)
1829
0.40.115 by Parth Malwankar
added test for versioned grep.
1830
    def test_ver_files_with_matches(self):
1831
        """(ver) Ensure --files-with-matches, -l works
1832
        """
1833
        wd = 'foobar0'
1834
        self.make_branch_and_tree(wd)
1835
        os.chdir(wd)
1836
1837
        self._mk_versioned_file('file0.txt', total_lines=2)         # rev 1
1838
        self._mk_versioned_file('file1.txt', total_lines=2)         # rev 2
1839
        self._mk_versioned_dir('dir0')                              # rev 3
1840
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)   # rev 4
1841
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)   # rev 5
1842
1843
        self._update_file('file0.txt', 'HELLO\n')                   # rev 6
1844
        self._update_file('dir0/file00.txt', 'HELLO\n')             # rev 7
1845
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1846
        # fixed-string
1847
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1848
                                 'HELLO'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1849
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1850
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1851
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1852
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1853
        self.assertEqual(len(out.splitlines()), 2)
1854
1855
        # regex
1856
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1857
                                 'H.LLO'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1858
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1859
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1860
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1861
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1862
        self.assertEqual(len(out.splitlines()), 2)
1863
1864
        # fixed-string
1865
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1866
                                 'HELLO'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1867
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1868
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1869
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1870
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1871
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1872
        self.assertEqual(len(out.splitlines()), 3)
1873
1874
        # regex
1875
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1876
                                 'H.LLO'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1877
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1878
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
1879
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1880
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1881
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1882
        self.assertEqual(len(out.splitlines()), 3)
1883
1884
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1885
        out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
1886
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1887
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1888
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1889
                              flags=TestGrep._reflags)
0.40.115 by Parth Malwankar
added test for versioned grep.
1890
        self.assertEqual(len(out.splitlines()), 2)
1891
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1892
        # regex
1893
        out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
1894
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1895
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1896
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1897
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1898
        self.assertEqual(len(out.splitlines()), 2)
1899
1900
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1901
        out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1902
                                 'dir0', 'file1.txt'])
0.40.115 by Parth Malwankar
added test for versioned grep.
1903
7143.15.2 by Jelmer Vernooij
Run autopep8.
1904
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1905
                              flags=TestGrep._reflags)
0.40.115 by Parth Malwankar
added test for versioned grep.
1906
        self.assertEqual(len(out.splitlines()), 1)
1907
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1908
        # regex
1909
        out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1910
                                 'dir0', 'file1.txt'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1911
7143.15.2 by Jelmer Vernooij
Run autopep8.
1912
        self.assertContainsRe(out, "^dir0/file00.txt~7$",
1913
                              flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1914
        self.assertEqual(len(out.splitlines()), 1)
1915
1916
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1917
        out, err = self.run_bzr(['grep', '-l', 'HELLO',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1918
                                 '-r', '-2', 'file0.txt'])
0.40.115 by Parth Malwankar
added test for versioned grep.
1919
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1920
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
0.40.115 by Parth Malwankar
added test for versioned grep.
1921
        self.assertEqual(len(out.splitlines()), 1)
1922
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1923
        # regex
1924
        out, err = self.run_bzr(['grep', '-l', 'HE.LO',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1925
                                 '-r', '-2', 'file0.txt'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1926
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1927
        self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1928
        self.assertEqual(len(out.splitlines()), 1)
1929
1930
        # fixed-string
0.40.115 by Parth Malwankar
added test for versioned grep.
1931
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1932
                                 '-l', 'HELLO'])
0.40.115 by Parth Malwankar
added test for versioned grep.
1933
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1934
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
0.40.115 by Parth Malwankar
added test for versioned grep.
1935
        self.assertEqual(len(out.splitlines()), 1)
1936
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1937
        # regex
1938
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
1939
                                 '-l', '.ELLO'])
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1940
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1941
        self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
0.40.120 by Parth Malwankar
added tests for regex search for -l/--files-with-matches
1942
        self.assertEqual(len(out.splitlines()), 1)
0.40.114 by Parth Malwankar
test for wtree -l/--files-with-matches
1943
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1944
    def test_wtree_files_without_matches(self):
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1945
        """(wtree) Ensure --files-without-match, -L works
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1946
        """
1947
        wd = 'foobar0'
1948
        self.make_branch_and_tree(wd)
1949
        os.chdir(wd)
1950
1951
        self._mk_versioned_file('file0.txt', total_lines=2)
1952
        self._mk_versioned_file('file1.txt', total_lines=2)
1953
        self._mk_versioned_dir('dir0')
1954
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)
1955
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)
1956
1957
        self._update_file('file0.txt', 'HELLO\n', checkin=False)
1958
        self._update_file('dir0/file00.txt', 'HELLO\n', checkin=False)
1959
1960
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1961
        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
1962
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1963
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1964
        self.assertContainsRe(out, "^dir0/file01.txt$",
1965
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1966
        self.assertEqual(len(out.splitlines()), 2)
1967
1968
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
1969
        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
1970
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1971
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1972
        self.assertContainsRe(out, "^dir0/file01.txt$",
1973
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1974
        self.assertEqual(len(out.splitlines()), 2)
1975
1976
        # fixed-string
1977
        out, err = self.run_bzr(['grep', '-L', 'HELLO'])
1978
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1979
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1980
        self.assertContainsRe(out, "^dir0/file01.txt$",
1981
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1982
        self.assertEqual(len(out.splitlines()), 2)
1983
1984
        # regex
1985
        out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
1986
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1987
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1988
        self.assertContainsRe(out, "^dir0/file01.txt$",
1989
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1990
        self.assertEqual(len(out.splitlines()), 2)
1991
1992
        # fixed-string
1993
        out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
1994
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
1995
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
1996
        self.assertContainsRe(out, "^dir0/file01.txt$",
1997
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
1998
        self.assertEqual(len(out.splitlines()), 2)
1999
2000
        # regex
2001
        out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
2002
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2003
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2004
        self.assertContainsRe(out, "^dir0/file01.txt$",
2005
                              flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
2006
        self.assertEqual(len(out.splitlines()), 2)
2007
2008
        # fixed-string
2009
        out, err = self.run_bzr(['grep', '-L', 'HELLO', 'file1.txt'])
2010
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2011
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
2012
        self.assertEqual(len(out.splitlines()), 1)
2013
2014
        # regex
2015
        out, err = self.run_bzr(['grep', '-L', '.ELLO', 'file1.txt'])
2016
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2017
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
2018
        self.assertEqual(len(out.splitlines()), 1)
2019
2020
        # fixed-string
2021
        out, err = self.run_bzr(['grep', '--no-recursive', '-L', 'HELLO'])
2022
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2023
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
2024
        self.assertEqual(len(out.splitlines()), 1)
2025
2026
        # regex
2027
        out, err = self.run_bzr(['grep', '--no-recursive', '-L', '.ELLO'])
2028
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2029
        self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
0.40.124 by Parth Malwankar
added test for wtree grep with -L/--files-without-match
2030
        self.assertEqual(len(out.splitlines()), 1)
2031
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2032
    def test_ver_files_without_matches(self):
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
2033
        """(ver) Ensure --files-without-match, -L works
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2034
        """
2035
        wd = 'foobar0'
2036
        self.make_branch_and_tree(wd)
2037
        os.chdir(wd)
2038
2039
        self._mk_versioned_file('file0.txt', total_lines=2)         # rev 1
2040
        self._mk_versioned_file('file1.txt', total_lines=2)         # rev 2
2041
        self._mk_versioned_dir('dir0')                              # rev 3
2042
        self._mk_versioned_file('dir0/file00.txt', total_lines=2)   # rev 4
2043
        self._mk_versioned_file('dir0/file01.txt', total_lines=2)   # rev 5
2044
2045
        self._update_file('file0.txt', 'HELLO\n')                   # rev 6
2046
        self._update_file('dir0/file00.txt', 'HELLO\n')             # rev 7
2047
2048
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
2049
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2050
                                 'HELLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2051
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2052
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2053
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2054
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2055
        self.assertEqual(len(out.splitlines()), 2)
2056
2057
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
2058
        out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2059
                                 'H.LLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2060
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2061
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2062
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2063
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2064
        self.assertEqual(len(out.splitlines()), 2)
2065
2066
        # fixed-string
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
2067
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2068
                                 'HELLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2069
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2070
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2071
        self.assertContainsRe(out, "^dir0/file00.txt~6$",
2072
                              flags=TestGrep._reflags)
2073
        self.assertContainsRe(out, "^dir0/file01.txt~6$",
2074
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2075
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2076
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2077
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2078
        self.assertEqual(len(out.splitlines()), 5)
2079
2080
        # regex
0.40.126 by Parth Malwankar
renamed --files-without-matches => --files-without-match
2081
        out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2082
                                 'H.LLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2083
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2084
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2085
        self.assertContainsRe(out, "^dir0/file00.txt~6$",
2086
                              flags=TestGrep._reflags)
2087
        self.assertContainsRe(out, "^dir0/file01.txt~6$",
2088
                              flags=TestGrep._reflags)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2089
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2090
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2091
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2092
        self.assertEqual(len(out.splitlines()), 5)
2093
2094
        # fixed-string
2095
        out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
2096
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2097
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2098
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2099
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2100
        self.assertEqual(len(out.splitlines()), 2)
2101
2102
        # regex
2103
        out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
2104
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2105
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2106
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2107
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2108
        self.assertEqual(len(out.splitlines()), 2)
2109
2110
        # fixed-string
2111
        out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2112
                                 'dir0', 'file1.txt'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2113
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2114
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2115
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2116
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2117
        self.assertEqual(len(out.splitlines()), 2)
2118
2119
        # regex
2120
        out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2121
                                 'dir0', 'file1.txt'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2122
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2123
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2124
        self.assertContainsRe(out, "^dir0/file01.txt~7$",
2125
                              flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2126
        self.assertEqual(len(out.splitlines()), 2)
2127
2128
        # fixed-string
2129
        out, err = self.run_bzr(['grep', '-L', 'HELLO',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2130
                                 '-r', '-2', 'file1.txt'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2131
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2132
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2133
        self.assertEqual(len(out.splitlines()), 1)
2134
2135
        # regex
2136
        out, err = self.run_bzr(['grep', '-L', 'HE.LO',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2137
                                 '-r', '-2', 'file1.txt'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2138
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2139
        self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2140
        self.assertEqual(len(out.splitlines()), 1)
2141
2142
        # fixed-string
2143
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2144
                                 '-L', 'HELLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2145
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2146
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2147
        self.assertEqual(len(out.splitlines()), 1)
2148
2149
        # regex
2150
        out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2151
                                 '-L', '.ELLO'])
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2152
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
2153
        self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
0.40.122 by Parth Malwankar
added test for versioned -L and some fixes.
2154
        self.assertEqual(len(out.splitlines()), 1)
2155
0.40.131 by Parth Malwankar
bzr grep now allows grepping with -r even when no tree exists.
2156
    def test_no_tree(self):
2157
        """Ensure grep works without working tree.
2158
        """
2159
        wd0 = 'foobar0'
2160
        wd1 = 'foobar1'
2161
        self.make_branch_and_tree(wd0)
2162
        os.chdir(wd0)
2163
        self._mk_versioned_file('file0.txt')
2164
        os.chdir('..')
2165
        out, err = self.run_bzr(['branch', '--no-tree', wd0, wd1])
2166
        os.chdir(wd1)
2167
2168
        out, err = self.run_bzr(['grep', 'line1'], 3)
7143.15.2 by Jelmer Vernooij
Run autopep8.
2169
        self.assertContainsRe(
2170
            err, "Cannot search working tree", flags=TestGrep._reflags)
0.40.131 by Parth Malwankar
bzr grep now allows grepping with -r even when no tree exists.
2171
        self.assertEqual(out, '')
2172
2173
        out, err = self.run_bzr(['grep', '-r', '1', 'line1'])
7143.15.2 by Jelmer Vernooij
Run autopep8.
2174
        self.assertContainsRe(out, "file0.txt~1:line1",
2175
                              flags=TestGrep._reflags)
2176
        self.assertEqual(len(out.splitlines()), 2)  # finds line1 and line10
0.40.131 by Parth Malwankar
bzr grep now allows grepping with -r even when no tree exists.
2177
0.43.11 by Parth Malwankar
test cases for colored results.
2178
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2179
class TestNonAscii(GrepTestBase):
2180
    """Tests for non-ascii filenames and file contents"""
2181
0.40.147 by Jelmer Vernooij
Fix compatibility with newer versions of bzr: don't use relative imports in lazy imports, and import features from bzrlib.tests.features.
2182
    _test_needs_features = [UnicodeFilenameFeature]
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2183
2184
    def test_unicode_only_file(self):
2185
        """Test filename and contents that requires a unicode encoding"""
2186
        tree = self.make_branch_and_tree(".")
2187
        contents = [u"\u1234"]
2188
        self.build_tree(contents)
2189
        tree.add(contents)
2190
        tree.commit("Initial commit")
7045.3.1 by Jelmer Vernooij
Fix another ~500 tests.
2191
        as_utf8 = u"\u1234"
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2192
2193
        # GZ 2010-06-07: Note we can't actually grep for \u1234 as the pattern
2194
        #                is mangled according to the user encoding.
7065.3.5 by Jelmer Vernooij
Fix some tests.
2195
        streams = self.run_bzr_raw(["grep", "--files-with-matches",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2196
                                    u"contents"], encoding="UTF-8")
7065.3.5 by Jelmer Vernooij
Fix some tests.
2197
        as_utf8 = as_utf8.encode("UTF-8")
2198
        self.assertEqual(streams, (as_utf8 + b"\n", b""))
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2199
7065.3.5 by Jelmer Vernooij
Fix some tests.
2200
        streams = self.run_bzr_raw(["grep", "-r", "1", "--files-with-matches",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2201
                                    u"contents"], encoding="UTF-8")
7065.3.5 by Jelmer Vernooij
Fix some tests.
2202
        self.assertEqual(streams, (as_utf8 + b"~1\n", b""))
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2203
2204
        fileencoding = osutils.get_user_encoding()
2205
        as_mangled = as_utf8.decode(fileencoding, "replace").encode("UTF-8")
2206
7065.3.5 by Jelmer Vernooij
Fix some tests.
2207
        streams = self.run_bzr_raw(["grep", "-n",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2208
                                    u"contents"], encoding="UTF-8")
7065.3.5 by Jelmer Vernooij
Fix some tests.
2209
        self.assertEqual(streams, (b"%s:1:contents of %s\n" %
7143.15.2 by Jelmer Vernooij
Run autopep8.
2210
                                   (as_utf8, as_mangled), b""))
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2211
7065.3.5 by Jelmer Vernooij
Fix some tests.
2212
        streams = self.run_bzr_raw(["grep", "-n", "-r", "1",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2213
                                    u"contents"], encoding="UTF-8")
7065.3.5 by Jelmer Vernooij
Fix some tests.
2214
        self.assertEqual(streams, (b"%s~1:1:contents of %s\n" %
7143.15.2 by Jelmer Vernooij
Run autopep8.
2215
                                   (as_utf8, as_mangled), b""))
0.46.21 by Martin
Fix and test bytes/unicode issue but there's more to do in this area
2216
2217
0.43.11 by Parth Malwankar
test cases for colored results.
2218
class TestColorGrep(GrepTestBase):
2219
    """Tests for the --color option."""
0.43.12 by Parth Malwankar
added feature for running color tests conditionally
2220
0.43.11 by Parth Malwankar
test cases for colored results.
2221
    _rev_sep = color_string('~', fg=FG.BOLD_YELLOW)
2222
    _sep = color_string(':', fg=FG.BOLD_CYAN)
2223
2224
    def test_color_option(self):
2225
        """Ensure options for color are valid.
2226
        """
2227
        out, err = self.run_bzr(['grep', '--color', 'foo', 'bar'], 3)
2228
        self.assertEqual(out, '')
7143.15.2 by Jelmer Vernooij
Run autopep8.
2229
        self.assertContainsRe(
2230
            err, 'Valid values for --color are', flags=TestGrep._reflags)
0.43.11 by Parth Malwankar
test cases for colored results.
2231
0.46.17 by Martin
Fix previously untested issue with colour and match-only, and test a related issue
2232
    def test_ver_matching_files(self):
2233
        """(versioned) Search for matches or no matches only"""
2234
        tree = self.make_branch_and_tree(".")
2235
        contents = ["d/", "d/aaa", "bbb"]
2236
        self.build_tree(contents)
2237
        tree.add(contents)
2238
        tree.commit("Initial commit")
2239
2240
        # GZ 2010-06-05: Maybe modify the working tree here
2241
2242
        streams = self.run_bzr(["grep", "--color", "always", "-r", "1",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2243
                                "--files-with-matches", "aaa"])
0.46.17 by Martin
Fix previously untested issue with colour and match-only, and test a related issue
2244
        self.assertEqual(streams, ("".join([
2245
            FG.MAGENTA, "d/aaa", self._rev_sep, "1", "\n"
2246
            ]), ""))
2247
2248
        streams = self.run_bzr(["grep", "--color", "always", "-r", "1",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2249
                                "--files-without-match", "aaa"])
0.46.17 by Martin
Fix previously untested issue with colour and match-only, and test a related issue
2250
        self.assertEqual(streams, ("".join([
2251
            FG.MAGENTA, "bbb", self._rev_sep, "1", "\n"
2252
            ]), ""))
2253
2254
    def test_wtree_matching_files(self):
2255
        """(wtree) Search for matches or no matches only"""
2256
        tree = self.make_branch_and_tree(".")
2257
        contents = ["d/", "d/aaa", "bbb"]
2258
        self.build_tree(contents)
2259
        tree.add(contents)
2260
        tree.commit("Initial commit")
2261
2262
        # GZ 2010-06-05: Maybe modify the working tree here
2263
2264
        streams = self.run_bzr(["grep", "--color", "always",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2265
                                "--files-with-matches", "aaa"])
0.46.17 by Martin
Fix previously untested issue with colour and match-only, and test a related issue
2266
        self.assertEqual(streams, ("".join([
2267
            FG.MAGENTA, "d/aaa", FG.NONE, "\n"
2268
            ]), ""))
2269
2270
        streams = self.run_bzr(["grep", "--color", "always",
7143.15.2 by Jelmer Vernooij
Run autopep8.
2271
                                "--files-without-match", "aaa"])
0.46.17 by Martin
Fix previously untested issue with colour and match-only, and test a related issue
2272
        self.assertEqual(streams, ("".join([
2273
            FG.MAGENTA, "bbb", FG.NONE, "\n"
2274
            ]), ""))
2275
0.43.11 by Parth Malwankar
test cases for colored results.
2276
    def test_ver_basic_file(self):
2277
        """(versioned) Search for pattern in specfic file.
2278
        """
2279
        wd = 'foobar0'
2280
        self.make_branch_and_tree(wd)
2281
        os.chdir(wd)
2282
        lp = 'foo is foobar'
2283
        self._mk_versioned_file('file0.txt', line_prefix=lp, total_lines=1)
2284
2285
        # prepare colored result
2286
        foo = color_string('foo', fg=FG.BOLD_RED)
0.46.4 by Martin
Move remaining formatting setup out of _file_grep and save a colour switch as a side effect
2287
        res = (FG.MAGENTA + 'file0.txt'
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
2288
               + self._rev_sep + '1' + self._sep
7143.15.2 by Jelmer Vernooij
Run autopep8.
2289
               + foo + ' is ' + foo + 'bar1' + '\n')
0.40.133 by Parth Malwankar
added test case to check --color=auto
2290
        txt_res = 'file0.txt~1:foo is foobar1\n'
0.43.11 by Parth Malwankar
test cases for colored results.
2291
0.46.4 by Martin
Move remaining formatting setup out of _file_grep and save a colour switch as a side effect
2292
        nres = (FG.MAGENTA + 'file0.txt'
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
2293
                + self._rev_sep + '1' + self._sep + '1' + self._sep
7143.15.2 by Jelmer Vernooij
Run autopep8.
2294
                + foo + ' is ' + foo + 'bar1' + '\n')
0.43.11 by Parth Malwankar
test cases for colored results.
2295
2296
        out, err = self.run_bzr(['grep', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2297
                                 'always', '-r', '1', 'foo'])
0.43.11 by Parth Malwankar
test cases for colored results.
2298
        self.assertEqual(out, res)
2299
        self.assertEqual(len(out.splitlines()), 1)
2300
0.40.133 by Parth Malwankar
added test case to check --color=auto
2301
        # auto should produce plain text result
2302
        # as stdout is redireched here.
2303
        out, err = self.run_bzr(['grep', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2304
                                 'auto', '-r', '1', 'foo'])
0.40.133 by Parth Malwankar
added test case to check --color=auto
2305
        self.assertEqual(out, txt_res)
2306
        self.assertEqual(len(out.splitlines()), 1)
2307
0.43.11 by Parth Malwankar
test cases for colored results.
2308
        out, err = self.run_bzr(['grep', '-i', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2309
                                 'always', '-r', '1', 'FOO'])
0.43.11 by Parth Malwankar
test cases for colored results.
2310
        self.assertEqual(out, res)
2311
        self.assertEqual(len(out.splitlines()), 1)
2312
2313
        out, err = self.run_bzr(['grep', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2314
                                 'always', '-r', '1', 'f.o'])
0.43.11 by Parth Malwankar
test cases for colored results.
2315
        self.assertEqual(out, res)
2316
        self.assertEqual(len(out.splitlines()), 1)
2317
2318
        out, err = self.run_bzr(['grep', '-i', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2319
                                 'always', '-r', '1', 'F.O'])
0.43.11 by Parth Malwankar
test cases for colored results.
2320
        self.assertEqual(out, res)
2321
        self.assertEqual(len(out.splitlines()), 1)
2322
2323
        out, err = self.run_bzr(['grep', '-n', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2324
                                 'always', '-r', '1', 'foo'])
0.43.11 by Parth Malwankar
test cases for colored results.
2325
        self.assertEqual(out, nres)
2326
        self.assertEqual(len(out.splitlines()), 1)
2327
2328
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2329
                                 'always', '-r', '1', 'FOO'])
0.43.11 by Parth Malwankar
test cases for colored results.
2330
        self.assertEqual(out, nres)
2331
        self.assertEqual(len(out.splitlines()), 1)
2332
2333
        out, err = self.run_bzr(['grep', '-n', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2334
                                 'always', '-r', '1', 'f.o'])
0.43.11 by Parth Malwankar
test cases for colored results.
2335
        self.assertEqual(out, nres)
2336
        self.assertEqual(len(out.splitlines()), 1)
2337
2338
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2339
                                 'always', '-r', '1', 'F.O'])
0.43.11 by Parth Malwankar
test cases for colored results.
2340
        self.assertEqual(out, nres)
2341
        self.assertEqual(len(out.splitlines()), 1)
2342
2343
    def test_wtree_basic_file(self):
2344
        """(wtree) Search for pattern in specfic file.
2345
        """
2346
        wd = 'foobar0'
2347
        self.make_branch_and_tree(wd)
2348
        os.chdir(wd)
2349
        lp = 'foo is foobar'
2350
        self._mk_versioned_file('file0.txt', line_prefix=lp, total_lines=1)
2351
2352
        # prepare colored result
2353
        foo = color_string('foo', fg=FG.BOLD_RED)
0.46.4 by Martin
Move remaining formatting setup out of _file_grep and save a colour switch as a side effect
2354
        res = (FG.MAGENTA + 'file0.txt'
7143.15.2 by Jelmer Vernooij
Run autopep8.
2355
               + self._sep + foo + ' is ' + foo + 'bar1' + '\n')
0.43.11 by Parth Malwankar
test cases for colored results.
2356
0.46.4 by Martin
Move remaining formatting setup out of _file_grep and save a colour switch as a side effect
2357
        nres = (FG.MAGENTA + 'file0.txt'
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
2358
                + self._sep + '1' + self._sep
7143.15.2 by Jelmer Vernooij
Run autopep8.
2359
                + foo + ' is ' + foo + 'bar1' + '\n')
2360
2361
        out, err = self.run_bzr(['grep', '--color',
2362
                                 'always', 'foo'])
2363
        self.assertEqual(out, res)
2364
        self.assertEqual(len(out.splitlines()), 1)
2365
2366
        out, err = self.run_bzr(['grep', '-i', '--color',
2367
                                 'always', 'FOO'])
2368
        self.assertEqual(out, res)
2369
        self.assertEqual(len(out.splitlines()), 1)
2370
2371
        out, err = self.run_bzr(['grep', '--color',
2372
                                 'always', 'f.o'])
2373
        self.assertEqual(out, res)
2374
        self.assertEqual(len(out.splitlines()), 1)
2375
2376
        out, err = self.run_bzr(['grep', '-i', '--color',
2377
                                 'always', 'F.O'])
2378
        self.assertEqual(out, res)
2379
        self.assertEqual(len(out.splitlines()), 1)
2380
2381
        out, err = self.run_bzr(['grep', '-n', '--color',
2382
                                 'always', 'foo'])
2383
        self.assertEqual(out, nres)
2384
        self.assertEqual(len(out.splitlines()), 1)
2385
2386
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2387
                                 'always', 'FOO'])
2388
        self.assertEqual(out, nres)
2389
        self.assertEqual(len(out.splitlines()), 1)
2390
2391
        out, err = self.run_bzr(['grep', '-n', '--color',
2392
                                 'always', 'f.o'])
2393
        self.assertEqual(out, nres)
2394
        self.assertEqual(len(out.splitlines()), 1)
2395
2396
        out, err = self.run_bzr(['grep', '-n', '-i', '--color',
2397
                                 'always', 'F.O'])
0.43.11 by Parth Malwankar
test cases for colored results.
2398
        self.assertEqual(out, nres)
2399
        self.assertEqual(len(out.splitlines()), 1)
2400
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2401
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
2402
# copied from breezy.tests.blackbox.test_diff
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2403
def subst_dates(string):
2404
    """Replace date strings with constant values."""
2405
    return re.sub(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-\+]\d{4}',
2406
                  'YYYY-MM-DD HH:MM:SS +ZZZZ', string)
2407
2408
2409
class TestGrepDiff(tests.TestCaseWithTransport):
2410
2411
    def make_example_branch(self):
2412
        tree = self.make_branch_and_tree('.')
2413
        self.build_tree_contents([
6855.4.1 by Jelmer Vernooij
Yet more bees.
2414
            ('hello', b'foo\n'),
2415
            ('goodbye', b'baz\n')])
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2416
        tree.add(['hello'])
2417
        tree.commit('setup')
2418
        tree.add(['goodbye'])
2419
        tree.commit('setup')
2420
        return tree
2421
2422
    def test_grep_diff_basic(self):
2423
        """grep -p basic test."""
2424
        tree = self.make_example_branch()
6855.4.1 by Jelmer Vernooij
Yet more bees.
2425
        self.build_tree_contents([('hello', b'hello world!\n')])
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2426
        tree.commit('updated hello')
2427
        out, err = self.run_bzr(['grep', '-p', 'hello'])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
2428
        self.assertEqual(err, '')
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2429
        self.assertEqualDiff(subst_dates(out), '''\
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2430
=== revno:3 ===
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2431
  === modified file 'hello'
2432
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2433
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2434
    +hello world!
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2435
=== revno:1 ===
0.48.9 by Parth Malwankar
added inital test for 'grep -p'
2436
  === added file 'hello'
2437
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2438
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2439
''')
2440
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2441
    def test_grep_diff_revision(self):
2442
        """grep -p specific revision."""
2443
        tree = self.make_example_branch()
6855.4.1 by Jelmer Vernooij
Yet more bees.
2444
        self.build_tree_contents([('hello', b'hello world!\n')])
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2445
        tree.commit('updated hello')
2446
        out, err = self.run_bzr(['grep', '-p', '-r', '3', 'hello'])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
2447
        self.assertEqual(err, '')
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2448
        self.assertEqualDiff(subst_dates(out), '''\
2449
=== revno:3 ===
2450
  === modified file 'hello'
2451
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2452
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2453
    +hello world!
2454
''')
2455
2456
    def test_grep_diff_revision_range(self):
2457
        """grep -p revision range."""
2458
        tree = self.make_example_branch()
7143.15.2 by Jelmer Vernooij
Run autopep8.
2459
        self.build_tree_contents([('hello', b'hello world!1\n')])  # rev 3
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2460
        tree.commit('rev3')
7143.15.2 by Jelmer Vernooij
Run autopep8.
2461
        self.build_tree_contents([('blah', b'hello world!2\n')])  # rev 4
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2462
        tree.add('blah')
2463
        tree.commit('rev4')
6973.12.11 by Jelmer Vernooij
Fix some more tests.
2464
        with open('hello', 'a') as f:
2465
            f.write('hello world!3\n')
7143.15.2 by Jelmer Vernooij
Run autopep8.
2466
        # self.build_tree_contents([('hello', 'hello world!3\n')]) # rev 5
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2467
        tree.commit('rev5')
2468
        out, err = self.run_bzr(['grep', '-p', '-r', '2..5', 'hello'])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
2469
        self.assertEqual(err, '')
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2470
        self.assertEqualDiff(subst_dates(out), '''\
2471
=== revno:5 ===
2472
  === modified file 'hello'
2473
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2474
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2475
    +hello world!3
2476
=== revno:4 ===
2477
  === added file 'blah'
2478
    +hello world!2
2479
=== revno:3 ===
2480
  === modified file 'hello'
2481
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2482
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2483
    +hello world!1
2484
''')
2485
2486
    def test_grep_diff_color(self):
2487
        """grep -p color test."""
2488
        tree = self.make_example_branch()
6855.4.1 by Jelmer Vernooij
Yet more bees.
2489
        self.build_tree_contents([('hello', b'hello world!\n')])
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2490
        tree.commit('updated hello')
2491
        out, err = self.run_bzr(['grep', '--diff', '-r', '3',
7143.15.2 by Jelmer Vernooij
Run autopep8.
2492
                                 '--color', 'always', 'hello'])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
2493
        self.assertEqual(err, '')
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2494
        revno = color_string('=== revno:3 ===', fg=FG.BOLD_BLUE) + '\n'
7143.15.2 by Jelmer Vernooij
Run autopep8.
2495
        filename = color_string(
2496
            "  === modified file 'hello'", fg=FG.BOLD_MAGENTA) + '\n'
0.48.10 by Parth Malwankar
more tests for 'grep --diff'
2497
        redhello = color_string('hello', fg=FG.BOLD_RED)
2498
        diffstr = '''\
2499
    --- hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2500
    +++ hello	YYYY-MM-DD HH:MM:SS +ZZZZ
2501
    +hello world!
2502
'''
2503
        diffstr = diffstr.replace('hello', redhello)
2504
        self.assertEqualDiff(subst_dates(out), revno + filename + diffstr)
2505
2506
    def test_grep_norevs(self):
2507
        """grep -p with zero revisions."""
2508
        out, err = self.run_bzr(['init'])
2509
        out, err = self.run_bzr(['grep', '--diff', 'foo'], 3)
7027.9.1 by Jelmer Vernooij
Fix all but one remaining grep tests.
2510
        self.assertEqual(out, '')
7143.15.2 by Jelmer Vernooij
Run autopep8.
2511
        self.assertContainsRe(
2512
            err, "ERROR:.*revision.* does not exist in branch")