/brz/remove-bazaar

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