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