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