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