/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.urlutils import joinpath
1185.16.32 by Martin Pool
- add a basic annotate built-in command
33
7344.1.1 by Martin
Fix tests that need whoami not to be set
34
from ..test_bedding import override_whoami
1185.16.32 by Martin Pool
- add a basic annotate built-in command
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.
7344.1.1 by Martin
Fix tests that need whoami not to be set
190
        override_whoami(self)
5967.2.2 by Jelmer Vernooij
add test
191
        tree = self._setup_edited_file()
192
        out, err = self.run_bzr('annotate file')
193
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
194
            '1   test@ho | foo\n'
195
            '2?  local u | bar\n'
196
            '1   test@ho | gam\n',
5967.2.2 by Jelmer Vernooij
add test
197
            out)
198
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
199
    def test_annotate_edited_file_show_ids(self):
200
        tree = self._setup_edited_file()
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
201
        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.
202
        out, err = self.run_bzr('annotate file --show-ids')
203
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
204
            '    rev1 | foo\n'
205
            'current: | bar\n'
206
            '    rev1 | gam\n',
3603.4.3 by Robert Collins
Review feedback.
207
            out)
208
209
    def _create_merged_file(self):
210
        """Create a file with a pending merge and local edit."""
211
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
212
        self.build_tree_contents([('file', b'foo\ngam\n')])
3603.4.3 by Robert Collins
Review feedback.
213
        tree.add('file')
6973.13.2 by Jelmer Vernooij
Fix some more tests.
214
        tree.commit('add file', rev_id=b"rev1", committer="test@host")
3603.4.3 by Robert Collins
Review feedback.
215
        # right side
6855.4.1 by Jelmer Vernooij
Yet more bees.
216
        self.build_tree_contents([('file', b'foo\nbar\ngam\n')])
6973.13.2 by Jelmer Vernooij
Fix some more tests.
217
        tree.commit("right", rev_id=b"rev1.1.1", committer="test@host")
218
        tree.pull(tree.branch, True, b"rev1")
3603.4.3 by Robert Collins
Review feedback.
219
        # left side
6855.4.1 by Jelmer Vernooij
Yet more bees.
220
        self.build_tree_contents([('file', b'foo\nbaz\ngam\n')])
6973.13.2 by Jelmer Vernooij
Fix some more tests.
221
        tree.commit("left", rev_id=b"rev2", committer="test@host")
3603.4.3 by Robert Collins
Review feedback.
222
        # merge
6973.13.2 by Jelmer Vernooij
Fix some more tests.
223
        tree.merge_from_branch(tree.branch, b"rev1.1.1")
3603.4.3 by Robert Collins
Review feedback.
224
        # edit the file to be 'resolved' and have a further local edit
6855.4.1 by Jelmer Vernooij
Yet more bees.
225
        self.build_tree_contents([('file', b'local\nfoo\nbar\nbaz\ngam\n')])
5638.2.4 by Vincent Ladeuil
Delete one more import.
226
        return tree
3603.4.3 by Robert Collins
Review feedback.
227
228
    def test_annotated_edited_merged_file_revnos(self):
5638.2.4 by Vincent Ladeuil
Delete one more import.
229
        wt = self._create_merged_file()
230
        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.
231
        email = config.extract_email_address(
232
            wt.branch.get_config_stack().get('email'))
3603.4.3 by Robert Collins
Review feedback.
233
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
234
            '3?    %-7s | local\n'
235
            '1     test@ho | foo\n'
236
            '1.1.1 test@ho | bar\n'
237
            '2     test@ho | baz\n'
238
            '1     test@ho | gam\n' % email[:7],
3603.4.3 by Robert Collins
Review feedback.
239
            out)
240
241
    def test_annotated_edited_merged_file_ids(self):
242
        self._create_merged_file()
5638.2.4 by Vincent Ladeuil
Delete one more import.
243
        out, err = self.run_bzr(['annotate', 'file', '--show-ids'])
3603.4.3 by Robert Collins
Review feedback.
244
        self.assertEqual(
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
245
            'current: | local\n'
246
            '    rev1 | foo\n'
247
            'rev1.1.1 | bar\n'
248
            '    rev2 | baz\n'
249
            '    rev1 | gam\n',
3603.4.1 by Robert Collins
Implement lookups into the current working tree for bzr annotate, fixing bug 3439.
250
            out)
251
2027.3.1 by John Arbash Meinel
'bzr annotate' shouldn't fail on an empty file: fix bug #56814
252
    def test_annotate_empty_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
253
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
254
        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
255
        tree.add('empty')
256
        tree.commit('add empty file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
257
        out, err = self.run_bzr(['annotate', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
258
        self.assertEqual('', out)
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
259
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
260
    def test_annotate_removed_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
261
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
262
        self.build_tree_contents([('empty', b'')])
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
263
        tree.add('empty')
264
        tree.commit('add empty file')
265
        # delete the file.
266
        tree.remove('empty')
267
        tree.commit('remove empty file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
268
        out, err = self.run_bzr(['annotate', '-r1', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
269
        self.assertEqual('', out)
5638.2.1 by Andrew King
Fix 537442 - cannot annotate deleted file
270
3960.1.1 by Vincent Ladeuil
Fix bug #314525: don't try to put ids if there is no annotation.
271
    def test_annotate_empty_file_show_ids(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
272
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
273
        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.
274
        tree.add('empty')
275
        tree.commit('add empty file')
276
        out, err = self.run_bzr(['annotate', '--show-ids', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
277
        self.assertEqual('', out)
3960.1.1 by Vincent Ladeuil
Fix bug #314525: don't try to put ids if there is no annotation.
278
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
279
    def test_annotate_nonexistant_file(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
280
        tree = self.make_branch_and_tree('.')
281
        self.build_tree(['file'])
2561.2.1 by James Westby
Display a useful error message when annotating a non-existant file (#122656)
282
        tree.add(['file'])
283
        tree.commit('add a file')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
284
        out, err = self.run_bzr(['annotate', 'doesnotexist'], retcode=3)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
285
        self.assertEqual('', out)
286
        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.
287
288
    def test_annotate_without_workingtree(self):
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
289
        tree = self.make_branch_and_tree('.')
6855.4.1 by Jelmer Vernooij
Yet more bees.
290
        self.build_tree_contents([('empty', b'')])
3146.2.1 by Lukáš Lalinský
Don't require a working tree in cmd_annotate.
291
        tree.add('empty')
292
        tree.commit('add empty file')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
293
        bzrdir = tree.branch.controldir
3146.2.1 by Lukáš Lalinský
Don't require a working tree in cmd_annotate.
294
        bzrdir.destroy_workingtree()
295
        self.assertFalse(bzrdir.has_workingtree())
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
296
        out, err = self.run_bzr(['annotate', 'empty'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
297
        self.assertEqual('', out)
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
298
299
    def test_annotate_directory(self):
300
        """Test --directory option"""
301
        wt = self.make_branch_and_tree('a')
6855.4.1 by Jelmer Vernooij
Yet more bees.
302
        self.build_tree_contents([('a/hello.txt', b'my helicopter\n')])
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
303
        wt.add(['hello.txt'])
304
        wt.commit('commit', committer='test@user')
5638.2.3 by Vincent Ladeuil
Freshen up the tests to a more modern style.
305
        out, err = self.run_bzr(['annotate', '-d', 'a', 'hello.txt'])
5171.3.7 by Martin von Gagern
Added blackbox tests for --directory option.
306
        self.assertEqualDiff('1   test@us | my helicopter\n', out)