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