/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4763.2.4 by John Arbash Meinel
merge bzr.2.1 in preparation for NEWS entry.
1
# Copyright (C) 2005-2010 Canonical Ltd
1185.16.32 by Martin Pool
- add a basic annotate built-in command
2
# -*- coding: utf-8 -*-
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
3
#
1185.16.32 by Martin Pool
- add a basic annotate built-in command
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
8
#
1185.16.32 by Martin Pool
- add a basic annotate built-in command
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
13
#
1185.16.32 by Martin Pool
- add a basic annotate built-in command
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
4183.7.1 by Sabin Iacob
update FSF mailing address
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1185.16.32 by Martin Pool
- add a basic annotate built-in command
17
18
19
"""Black-box tests for bzr.
20
21
These check that it behaves properly when it's invoked through the regular
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
22
command-line interface. This doesn't actually run a new interpreter but
6622.1.29 by Jelmer Vernooij
Fix some more tests.
23
rather starts again from the run_brz function.
1185.16.32 by Martin Pool
- add a basic annotate built-in command
24
"""
25
26
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
27
from breezy import (
5967.2.2 by Jelmer Vernooij
add test
28
    config,
29
    tests,
30
    )
1185.16.32 by Martin Pool
- add a basic annotate built-in command
31
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
32
from breezy.tests.matchers import ContainsNoVfsCalls
33
from breezy.urlutils import joinpath
1185.16.32 by Martin Pool
- add a basic annotate built-in command
34
35
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
36
class TestAnnotate(tests.TestCaseWithTransport):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
37
1185.16.53 by Martin Pool
- annotate improvements from Goffreddo, with extra bug fixes and tests
38
    def setUp(self):
39
        super(TestAnnotate, self).setUp()
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
40
        wt = self.make_branch_and_tree('.')
41
        b = wt.branch
6855.4.1 by Jelmer Vernooij
Yet more bees.
42
        self.build_tree_contents([('hello.txt', b'my helicopter\n'),
43
                                  ('nomail.txt', b'nomail\n')])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
44
        wt.add(['hello.txt'])
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
45
        self.revision_id_1 = wt.commit('add hello',
7143.15.2 by Jelmer Vernooij
Run autopep8.
46
                                       committer='test@user',
47
                                       timestamp=1165960000.00, timezone=0)
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
48
        wt.add(['nomail.txt'])
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
49
        self.revision_id_2 = wt.commit('add nomail',
7143.15.2 by Jelmer Vernooij
Run autopep8.
50
                                       committer='no mail',
51
                                       timestamp=1165970000.00, timezone=0)
6855.4.1 by Jelmer Vernooij
Yet more bees.
52
        self.build_tree_contents([('hello.txt', b'my helicopter\n'
53
                                                b'your helicopter\n')])
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
54
        self.revision_id_3 = wt.commit('mod hello',
7143.15.2 by Jelmer Vernooij
Run autopep8.
55
                                       committer='user@test',
56
                                       timestamp=1166040000.00, timezone=0)
6855.4.1 by Jelmer Vernooij
Yet more bees.
57
        self.build_tree_contents([('hello.txt', b'my helicopter\n'
58
                                                b'your helicopter\n'
59
                                                b'all of\n'
60
                                                b'our helicopters\n'
7143.15.2 by Jelmer Vernooij
Run autopep8.
61
                                   )])
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
62
        self.revision_id_4 = wt.commit('mod hello',
7143.15.2 by Jelmer Vernooij
Run autopep8.
63
                                       committer='user@test',
64
                                       timestamp=1166050000.00, timezone=0)
1185.16.53 by Martin Pool
- annotate improvements from Goffreddo, with extra bug fixes and tests
65
1185.16.32 by Martin Pool
- add a basic annotate built-in command
66
    def test_help_annotate(self):
67
        """Annotate command exists"""
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
68
        out, err = self.run_bzr('--no-plugins annotate --help')
1185.16.53 by Martin Pool
- annotate improvements from Goffreddo, with extra bug fixes and tests
69
70
    def test_annotate_cmd(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
71
        out, err = self.run_bzr('annotate hello.txt')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
72
        self.assertEqual('', err)
73
        self.assertEqualDiff('''\
2182.3.3 by John Arbash Meinel
Add tests for annotate with dotted revnos.
74
1   test@us | my helicopter
75
3   user@te | your helicopter
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
76
4   user@te | all of
77
            | our helicopters
78
''', out)
79
80
    def test_annotate_cmd_full(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
81
        out, err = self.run_bzr('annotate hello.txt --all')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
82
        self.assertEqual('', err)
83
        self.assertEqualDiff('''\
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
84
1   test@us | my helicopter
85
3   user@te | your helicopter
86
4   user@te | all of
87
4   user@te | our helicopters
88
''', out)
89
90
    def test_annotate_cmd_long(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
91
        out, err = self.run_bzr('annotate hello.txt --long')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
92
        self.assertEqual('', err)
93
        self.assertEqualDiff('''\
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
94
1   test@user 20061212 | my helicopter
95
3   user@test 20061213 | your helicopter
96
4   user@test 20061213 | all of
97
                       | our helicopters
98
''', out)
99
100
    def test_annotate_cmd_show_ids(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
101
        out, err = self.run_bzr('annotate hello.txt --show-ids')
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
102
        max_len = max([len(self.revision_id_1),
103
                       len(self.revision_id_3),
104
                       len(self.revision_id_4)])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
105
        self.assertEqual('', err)
106
        self.assertEqualDiff('''\
2182.3.7 by John Arbash Meinel
Cleanup and add blackbox tests for annotate.
107
%*s | my helicopter
108
%*s | your helicopter
109
%*s | all of
110
%*s | our helicopters
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
111
''' % (max_len, self.revision_id_1.decode('utf-8'),
7143.15.2 by Jelmer Vernooij
Run autopep8.
112
            max_len, self.revision_id_3.decode('utf-8'),
113
            max_len, self.revision_id_4.decode('utf-8'),
114
            max_len, '',
115
       ), out)
1185.33.31 by Martin Pool
Make annotate cope better with revisions committed without a valid
116
117
    def test_no_mail(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
118
        out, err = self.run_bzr('annotate nomail.txt')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
119
        self.assertEqual('', err)
120
        self.assertEqualDiff('''\
2182.3.3 by John Arbash Meinel
Add tests for annotate with dotted revnos.
121
2   no mail | nomail
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
122
''', out)
1694.2.6 by Martin Pool
[merge] bzr.dev
123
124
    def test_annotate_cmd_revision(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
125
        out, err = self.run_bzr('annotate hello.txt -r1')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
126
        self.assertEqual('', err)
127
        self.assertEqualDiff('''\
2182.3.3 by John Arbash Meinel
Add tests for annotate with dotted revnos.
128
1   test@us | my helicopter
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
129
''', out)
1694.2.6 by Martin Pool
[merge] bzr.dev
130
1558.14.6 by Aaron Bentley
Added annotate test
131
    def test_annotate_cmd_revision3(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
132
        out, err = self.run_bzr('annotate hello.txt -r3')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
133
        self.assertEqual('', err)
134
        self.assertEqualDiff('''\
2182.3.3 by John Arbash Meinel
Add tests for annotate with dotted revnos.
135
1   test@us | my helicopter
136
3   user@te | your helicopter
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
137
''', out)
1558.14.6 by Aaron Bentley
Added annotate test
138
1694.2.6 by Martin Pool
[merge] bzr.dev
139
    def test_annotate_cmd_unknown_revision(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
140
        out, err = self.run_bzr('annotate hello.txt -r 10',
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
141
                                retcode=3)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
142
        self.assertEqual('', out)
143
        self.assertContainsRe(err, "Requested revision: '10' does not exist")
1694.2.6 by Martin Pool
[merge] bzr.dev
144
145
    def test_annotate_cmd_two_revisions(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
146
        out, err = self.run_bzr('annotate hello.txt -r1..2',
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
147
                                retcode=3)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
148
        self.assertEqual('', out)
149
        self.assertEqual('brz: ERROR: brz annotate --revision takes'
150
                         ' exactly one revision identifier\n',
2182.3.6 by John Arbash Meinel
Cleanup annotate blackbox tests
151
                         err)
2027.3.1 by John Arbash Meinel
'bzr annotate' shouldn't fail on an empty file: fix bug #56814
152
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
153
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
154
class TestSimpleAnnotate(tests.TestCaseWithTransport):
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
155
    """Annotate tests with no complex setup."""
156
4634.120.5 by Andrew Bennetts
Add test.
157
    def _setup_edited_file(self, relpath='.'):
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
158
        """Create a tree with a locally edited file."""
4634.120.5 by Andrew Bennetts
Add test.
159
        tree = self.make_branch_and_tree(relpath)
160
        file_relpath = joinpath(relpath, 'file')
6855.4.1 by Jelmer Vernooij
Yet more bees.
161
        self.build_tree_contents([(file_relpath, b'foo\ngam\n')])
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
162
        tree.add('file')
6973.13.2 by Jelmer Vernooij
Fix some more tests.
163
        tree.commit('add file', committer="test@host", rev_id=b"rev1")
6855.4.1 by Jelmer Vernooij
Yet more bees.
164
        self.build_tree_contents([(file_relpath, b'foo\nbar\ngam\n')])
4634.120.5 by Andrew Bennetts
Add test.
165
        return tree
166
167
    def test_annotate_cmd_revspec_branch(self):
168
        tree = self._setup_edited_file('trunk')
169
        tree.branch.create_checkout(self.get_url('work'), lightweight=True)
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
170
        out, err = self.run_bzr(['annotate', 'file', '-r', 'branch:../trunk'],
171
                                working_dir='work')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
172
        self.assertEqual('', err)
4634.120.5 by Andrew Bennetts
Add test.
173
        self.assertEqual(
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
174
            '1   test@ho | foo\n'
175
            '            | gam\n',
4634.120.5 by Andrew Bennetts
Add test.
176
            out)
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
177
178
    def test_annotate_edited_file(self):
179
        tree = self._setup_edited_file()
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
180
        self.overrideEnv('BRZ_EMAIL', 'current@host2')
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
181
        out, err = self.run_bzr('annotate file')
182
        self.assertEqual(
183
            '1   test@ho | foo\n'
184
            '2?  current | bar\n'
185
            '1   test@ho | gam\n',
186
            out)
187
5967.2.2 by Jelmer Vernooij
add test
188
    def test_annotate_edited_file_no_default(self):
189
        # Ensure that when no username is available annotate still works.
190
        self.overrideEnv('EMAIL', None)
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
191
        self.overrideEnv('BRZ_EMAIL', None)
5967.2.2 by Jelmer Vernooij
add test
192
        # Also, make sure that it's not inferred from mailname.
193
        self.overrideAttr(config, '_auto_user_id',
7143.15.2 by Jelmer Vernooij
Run autopep8.
194
                          lambda: (None, None))
5967.2.2 by Jelmer Vernooij
add test
195
        tree = self._setup_edited_file()
196
        out, err = self.run_bzr('annotate file')
197
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
198
            '1   test@ho | foo\n'
199
            '2?  local u | bar\n'
200
            '1   test@ho | gam\n',
5967.2.2 by Jelmer Vernooij
add test
201
            out)
202
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
203
    def test_annotate_edited_file_show_ids(self):
204
        tree = self._setup_edited_file()
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
205
        self.overrideEnv('BRZ_EMAIL', 'current@host2')
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
206
        out, err = self.run_bzr('annotate file --show-ids')
207
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
208
            '    rev1 | foo\n'
209
            'current: | bar\n'
210
            '    rev1 | gam\n',
3603.4.3 by Robert Collins
Review feedback.
211
            out)
212
213
    def _create_merged_file(self):
214
        """Create a file with a pending merge and local edit."""
215
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
216
        self.build_tree_contents([('file', b'foo\ngam\n')])
3603.4.3 by Robert Collins
Review feedback.
217
        tree.add('file')
6973.13.2 by Jelmer Vernooij
Fix some more tests.
218
        tree.commit('add file', rev_id=b"rev1", committer="test@host")
3603.4.3 by Robert Collins
Review feedback.
219
        # right side
6855.4.1 by Jelmer Vernooij
Yet more bees.
220
        self.build_tree_contents([('file', b'foo\nbar\ngam\n')])
6973.13.2 by Jelmer Vernooij
Fix some more tests.
221
        tree.commit("right", rev_id=b"rev1.1.1", committer="test@host")
222
        tree.pull(tree.branch, True, b"rev1")
3603.4.3 by Robert Collins
Review feedback.
223
        # left side
6855.4.1 by Jelmer Vernooij
Yet more bees.
224
        self.build_tree_contents([('file', b'foo\nbaz\ngam\n')])
6973.13.2 by Jelmer Vernooij
Fix some more tests.
225
        tree.commit("left", rev_id=b"rev2", committer="test@host")
3603.4.3 by Robert Collins
Review feedback.
226
        # merge
6973.13.2 by Jelmer Vernooij
Fix some more tests.
227
        tree.merge_from_branch(tree.branch, b"rev1.1.1")
3603.4.3 by Robert Collins
Review feedback.
228
        # edit the file to be 'resolved' and have a further local edit
6855.4.1 by Jelmer Vernooij
Yet more bees.
229
        self.build_tree_contents([('file', b'local\nfoo\nbar\nbaz\ngam\n')])
5638.2.4 by Vincent Ladeuil
Delete one more import.
230
        return tree
3603.4.3 by Robert Collins
Review feedback.
231
232
    def test_annotated_edited_merged_file_revnos(self):
5638.2.4 by Vincent Ladeuil
Delete one more import.
233
        wt = self._create_merged_file()
234
        out, err = self.run_bzr(['annotate', 'file'])
6449.6.1 by Jelmer Vernooij
Use config stacks in a few more places in the test suite.
235
        email = config.extract_email_address(
236
            wt.branch.get_config_stack().get('email'))
3603.4.3 by Robert Collins
Review feedback.
237
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
238
            '3?    %-7s | local\n'
239
            '1     test@ho | foo\n'
240
            '1.1.1 test@ho | bar\n'
241
            '2     test@ho | baz\n'
242
            '1     test@ho | gam\n' % email[:7],
3603.4.3 by Robert Collins
Review feedback.
243
            out)
244
245
    def test_annotated_edited_merged_file_ids(self):
246
        self._create_merged_file()
5638.2.4 by Vincent Ladeuil
Delete one more import.
247
        out, err = self.run_bzr(['annotate', 'file', '--show-ids'])
3603.4.3 by Robert Collins
Review feedback.
248
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
249
            'current: | local\n'
250
            '    rev1 | foo\n'
251
            'rev1.1.1 | bar\n'
252
            '    rev2 | baz\n'
253
            '    rev1 | gam\n',
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
254
            out)
255
2027.3.1 by John Arbash Meinel
'bzr annotate' shouldn't fail on an empty file: fix bug #56814
256
    def test_annotate_empty_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
257
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
258
        self.build_tree_contents([('empty', b'')])
2027.3.1 by John Arbash Meinel
'bzr annotate' shouldn't fail on an empty file: fix bug #56814
259
        tree.add('empty')
260
        tree.commit('add empty file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
261
        out, err = self.run_bzr(['annotate', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
262
        self.assertEqual('', out)
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
263
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
264
    def test_annotate_removed_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
265
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
266
        self.build_tree_contents([('empty', b'')])
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
267
        tree.add('empty')
268
        tree.commit('add empty file')
269
        # delete the file.
270
        tree.remove('empty')
271
        tree.commit('remove empty file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
272
        out, err = self.run_bzr(['annotate', '-r1', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
273
        self.assertEqual('', out)
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
274
3960.1.1 by Vincent Ladeuil
Fix bug #314525: don't try to put ids if there is no annotation.
275
    def test_annotate_empty_file_show_ids(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
276
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
277
        self.build_tree_contents([('empty', b'')])
3960.1.1 by Vincent Ladeuil
Fix bug #314525: don't try to put ids if there is no annotation.
278
        tree.add('empty')
279
        tree.commit('add empty file')
280
        out, err = self.run_bzr(['annotate', '--show-ids', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
281
        self.assertEqual('', out)
3960.1.1 by Vincent Ladeuil
Fix bug #314525: don't try to put ids if there is no annotation.
282
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
283
    def test_annotate_nonexistant_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
284
        tree = self.make_branch_and_tree('.')
285
        self.build_tree(['file'])
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
286
        tree.add(['file'])
287
        tree.commit('add a file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
288
        out, err = self.run_bzr(['annotate', 'doesnotexist'], retcode=3)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
289
        self.assertEqual('', out)
290
        self.assertEqual("brz: ERROR: doesnotexist is not versioned.\n", err)
3146.2.1 by Lukáš Lalinský
Don't require a working tree in cmd_annotate.
291
292
    def test_annotate_without_workingtree(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
293
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
294
        self.build_tree_contents([('empty', b'')])
3146.2.1 by Lukáš Lalinský
Don't require a working tree in cmd_annotate.
295
        tree.add('empty')
296
        tree.commit('add empty file')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
297
        bzrdir = tree.branch.controldir
3146.2.1 by Lukáš Lalinský
Don't require a working tree in cmd_annotate.
298
        bzrdir.destroy_workingtree()
299
        self.assertFalse(bzrdir.has_workingtree())
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
300
        out, err = self.run_bzr(['annotate', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
301
        self.assertEqual('', out)
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
302
303
    def test_annotate_directory(self):
304
        """Test --directory option"""
305
        wt = self.make_branch_and_tree('a')
6855.4.1 by Jelmer Vernooij
Yet more bees.
306
        self.build_tree_contents([('a/hello.txt', b'my helicopter\n')])
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
307
        wt.add(['hello.txt'])
308
        wt.commit('commit', committer='test@user')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
309
        out, err = self.run_bzr(['annotate', '-d', 'a', 'hello.txt'])
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
310
        self.assertEqualDiff('1   test@us | my helicopter\n', out)
6283.1.8 by Jelmer Vernooij
Add hpss call count test for 'bzr annotate'.
311
312
313
class TestSmartServerAnnotate(tests.TestCaseWithTransport):
314
315
    def test_simple_annotate(self):
316
        self.setup_smart_server_with_call_log()
317
        wt = self.make_branch_and_tree('branch')
6855.4.1 by Jelmer Vernooij
Yet more bees.
318
        self.build_tree_contents([('branch/hello.txt', b'my helicopter\n')])
6283.1.8 by Jelmer Vernooij
Add hpss call count test for 'bzr annotate'.
319
        wt.add(['hello.txt'])
320
        wt.commit('commit', committer='test@user')
321
        self.reset_smart_call_log()
322
        out, err = self.run_bzr(['annotate', "-d", self.get_url('branch'),
7143.15.2 by Jelmer Vernooij
Run autopep8.
323
                                 "hello.txt"])
6283.1.8 by Jelmer Vernooij
Add hpss call count test for 'bzr annotate'.
324
        # This figure represent the amount of work to perform this use case. It
325
        # is entirely ok to reduce this number if a test fails due to rpc_count
326
        # being too low. If rpc_count increases, more network roundtrips have
327
        # become necessary for this use case. Please do not adjust this number
328
        # upwards without agreement from bzr's network support maintainers.
6997.7.4 by Jelmer Vernooij
Avoid HPSS calls in annotate.
329
        self.assertLength(9, self.hpss_calls)
6366.1.4 by Jelmer Vernooij
Test connection count calls for most blackbox commands.
330
        self.assertLength(1, self.hpss_connections)
6997.7.4 by Jelmer Vernooij
Avoid HPSS calls in annotate.
331
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)