/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
# Copyright (C) 2010 Parth Malwankar <parth.malwankar@gmail.com>
3
#
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
import os
19
import re
20
21
from bzrlib import tests
22
23
class TestGrep(tests.TestCaseWithTransport):
24
    def _str_contains(self, base, pattern):
25
        return re.search(pattern, base) != None
26
0.40.13 by Parth Malwankar
added tests for -R and -i
27
    def _mk_file(self, path, total_lines, line_prefix, versioned):
28
        text=''
29
        for i in range(total_lines):
30
            text += line_prefix + str(i+1) + "\n"
31
0.40.12 by Parth Malwankar
added test for versioned file
32
        open(path, 'w').write(text)
33
        if versioned:
34
            self.run_bzr(['add', path])
35
            self.run_bzr(['ci', '-m', '"' + path + '" added'])
36
0.40.13 by Parth Malwankar
added tests for -R and -i
37
    def _mk_unversioned_file(self, path, line_prefix='line', total_lines=10):
38
        self._mk_file(path, total_lines, line_prefix, versioned=False)
39
40
    def _mk_versioned_file(self, path, line_prefix='line', total_lines=10):
41
        self._mk_file(path, total_lines, line_prefix, versioned=True)
42
43
    def _mk_dir(self, path, versioned):
44
        os.mkdir(path)
45
        if versioned:
46
            self.run_bzr(['add', path])
47
            self.run_bzr(['ci', '-m', '"' + path + '" added'])
48
49
    def _mk_unversioned_dir(self, path):
50
        self._mk_dir(path, versioned=True)
51
52
    def _mk_versioned_dir(self, path):
53
        self._mk_dir(path, versioned=True)
54
55
    def test_basic_unversioned_file(self):
0.40.16 by Parth Malwankar
tree.get_file_lines is now used to get lines of text
56
        """search for pattern in specfic file. should issue warning."""
0.40.11 by Parth Malwankar
added basic test
57
        wd = 'foobar0'
58
        self.make_branch_and_tree(wd)
59
        os.chdir(wd)
0.40.13 by Parth Malwankar
added tests for -R and -i
60
        self._mk_unversioned_file('file0.txt')
0.40.11 by Parth Malwankar
added basic test
61
        out, err = self.run_bzr(['grep', 'line1', 'file0.txt'])
0.40.24 by Parth Malwankar
added support for --line-number.
62
        self.assertFalse(out, self._str_contains(out, "file0.txt:line1"))
0.40.11 by Parth Malwankar
added basic test
63
        self.assertTrue(err, self._str_contains(err, "warning:.*file0.txt.*not versioned\."))
64
0.40.13 by Parth Malwankar
added tests for -R and -i
65
    def test_basic_versioned_file(self):
0.40.12 by Parth Malwankar
added test for versioned file
66
        """search for pattern in specfic file"""
67
        wd = 'foobar0'
68
        self.make_branch_and_tree(wd)
69
        os.chdir(wd)
0.40.13 by Parth Malwankar
added tests for -R and -i
70
        self._mk_versioned_file('file0.txt')
0.40.12 by Parth Malwankar
added test for versioned file
71
        out, err = self.run_bzr(['grep', 'line1', 'file0.txt'])
0.40.24 by Parth Malwankar
added support for --line-number.
72
        self.assertTrue(out, self._str_contains(out, "file0.txt:line1"))
0.40.12 by Parth Malwankar
added test for versioned file
73
        self.assertFalse(err, self._str_contains(err, "warning:.*file0.txt.*not versioned\."))
74
0.40.13 by Parth Malwankar
added tests for -R and -i
75
    def test_versioned_file_in_dir_no_recurse(self):
76
        """should not recurse without -R"""
77
        wd = 'foobar0'
78
        self.make_branch_and_tree(wd)
79
        os.chdir(wd)
80
        self._mk_versioned_dir('dir0')
81
        self._mk_versioned_file('dir0/file0.txt')
82
        out, err = self.run_bzr(['grep', 'line1'])
0.40.24 by Parth Malwankar
added support for --line-number.
83
        self.assertFalse(out, self._str_contains(out, "file0.txt:line1"))
0.40.13 by Parth Malwankar
added tests for -R and -i
84
85
    def test_versioned_file_in_dir_recurse(self):
86
        """should find pattern in hierarchy with -R"""
87
        wd = 'foobar0'
88
        self.make_branch_and_tree(wd)
89
        os.chdir(wd)
90
        self._mk_versioned_dir('dir0')
91
        self._mk_versioned_file('dir0/file0.txt')
92
        out, err = self.run_bzr(['grep', '-R', 'line1'])
0.40.24 by Parth Malwankar
added support for --line-number.
93
        self.assertTrue(out, self._str_contains(out, "^dir0/file0.txt:line1"))
94
        out, err = self.run_bzr(['grep', '--recursive', 'line1'])
95
        self.assertTrue(out, self._str_contains(out, "^dir0/file0.txt:line1"))
0.40.23 by Parth Malwankar
added test case for search while inside dir.
96
97
    def test_versioned_file_within_dir(self):
98
        """search for pattern while in nested dir"""
99
        wd = 'foobar0'
100
        self.make_branch_and_tree(wd)
101
        os.chdir(wd)
102
        self._mk_versioned_dir('dir0')
103
        self._mk_versioned_file('dir0/file0.txt')
104
        os.chdir('dir0')
105
        out, err = self.run_bzr(['grep', 'line1'])
0.40.24 by Parth Malwankar
added support for --line-number.
106
        self.assertTrue(out, self._str_contains(out, "^file0.txt:line1"))
0.40.13 by Parth Malwankar
added tests for -R and -i
107
108
    def test_ignore_case_no_match(self):
109
        """match fails without --ignore-case"""
110
        wd = 'foobar0'
111
        self.make_branch_and_tree(wd)
112
        os.chdir(wd)
113
        self._mk_versioned_file('file0.txt')
114
        out, err = self.run_bzr(['grep', 'LinE1', 'file0.txt'])
0.40.24 by Parth Malwankar
added support for --line-number.
115
        self.assertFalse(out, self._str_contains(out, "file0.txt:line1"))
0.40.13 by Parth Malwankar
added tests for -R and -i
116
117
    def test_ignore_case_match(self):
118
        """match fails without --ignore-case"""
119
        wd = 'foobar0'
120
        self.make_branch_and_tree(wd)
121
        os.chdir(wd)
122
        self._mk_versioned_file('file0.txt')
123
        out, err = self.run_bzr(['grep', '-i', 'LinE1', 'file0.txt'])
0.40.24 by Parth Malwankar
added support for --line-number.
124
        self.assertTrue(out, self._str_contains(out, "file0.txt:line1"))
125
        out, err = self.run_bzr(['grep', '--ignore-case', 'LinE1', 'file0.txt'])
126
        self.assertTrue(out, self._str_contains(out, "^file0.txt:line1"))
0.40.13 by Parth Malwankar
added tests for -R and -i
127
0.40.15 by Parth Malwankar
some fixes and test updates
128
    def test_from_root_fail(self):
0.40.14 by Parth Malwankar
added test for --from-root
129
        """match should fail without --from-root"""
130
        wd = 'foobar0'
131
        self.make_branch_and_tree(wd)
132
        os.chdir(wd)
133
        self._mk_versioned_file('file0.txt')
134
        self._mk_versioned_dir('dir0')
135
        os.chdir('dir0')
136
        out, err = self.run_bzr(['grep', 'line1'])
0.40.24 by Parth Malwankar
added support for --line-number.
137
        self.assertFalse(out, self._str_contains(out, ".*file0.txt:line1"))
0.40.14 by Parth Malwankar
added test for --from-root
138
0.40.15 by Parth Malwankar
some fixes and test updates
139
    def test_from_root_pass(self):
0.40.14 by Parth Malwankar
added test for --from-root
140
        """match pass with --from-root"""
141
        wd = 'foobar0'
142
        self.make_branch_and_tree(wd)
143
        os.chdir(wd)
144
        self._mk_versioned_file('file0.txt')
145
        self._mk_versioned_dir('dir0')
146
        os.chdir('dir0')
147
        out, err = self.run_bzr(['grep', '--from-root', 'line1'])
0.40.24 by Parth Malwankar
added support for --line-number.
148
        self.assertTrue(out, self._str_contains(out, ".*file0.txt:line1"))
149
150
    def test_with_line_number(self):
151
        """search for pattern with --line-number"""
152
        wd = 'foobar0'
153
        self.make_branch_and_tree(wd)
154
        os.chdir(wd)
155
        self._mk_versioned_file('file0.txt')
156
        out, err = self.run_bzr(['grep', '--line-number', 'line3', 'file0.txt'])
157
        self.assertTrue(out, self._str_contains(out, "file0.txt:3:line1"))
158
        out, err = self.run_bzr(['grep', '-n', 'line1', 'file0.txt'])
159
        self.assertTrue(out, self._str_contains(out, "file0.txt:1:line1"))
0.40.14 by Parth Malwankar
added test for --from-root
160
0.40.13 by Parth Malwankar
added tests for -R and -i
161