~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_annotate.py

  • Committer: Alexander Belchenko
  • Date: 2006-07-31 16:12:57 UTC
  • mto: (1711.2.111 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060731161257-91a231523255332c
new official bzr.ico

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 Canonical Ltd
 
1
# Copyright (C) 2005 by Canonical Ltd
2
2
# -*- coding: utf-8 -*-
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
24
24
"""
25
25
 
26
26
 
 
27
from cStringIO import StringIO
27
28
import os
 
29
import shutil
 
30
import sys
28
31
 
 
32
from bzrlib.branch import Branch
 
33
from bzrlib.errors import BzrCommandError
 
34
from bzrlib.osutils import has_symlinks
29
35
from bzrlib.tests import TestCaseWithTransport
 
36
from bzrlib.annotate import annotate_file
30
37
 
31
38
 
32
39
class TestAnnotate(TestCaseWithTransport):
38
45
        self.build_tree_contents([('hello.txt', 'my helicopter\n'),
39
46
                                  ('nomail.txt', 'nomail\n')])
40
47
        wt.add(['hello.txt'])
41
 
        self.revision_id_1 = wt.commit('add hello',
42
 
                              committer='test@user',
43
 
                              timestamp=1165960000.00, timezone=0)
 
48
        wt.commit('add hello', committer='test@user')
44
49
        wt.add(['nomail.txt'])
45
 
        self.revision_id_2 = wt.commit('add nomail',
46
 
                              committer='no mail',
47
 
                              timestamp=1165970000.00, timezone=0)
48
 
        self.build_tree_contents([('hello.txt', 'my helicopter\n'
49
 
                                                'your helicopter\n')])
50
 
        self.revision_id_3 = wt.commit('mod hello',
51
 
                              committer='user@test',
52
 
                              timestamp=1166040000.00, timezone=0)
53
 
        self.build_tree_contents([('hello.txt', 'my helicopter\n'
54
 
                                                'your helicopter\n'
55
 
                                                'all of\n'
56
 
                                                'our helicopters\n'
57
 
                                  )])
58
 
        self.revision_id_4 = wt.commit('mod hello',
59
 
                              committer='user@test',
60
 
                              timestamp=1166050000.00, timezone=0)
 
50
        wt.commit('add nomail', committer='no mail')
 
51
        file('hello.txt', 'ab').write('your helicopter')
 
52
        wt.commit('mod hello', committer='user@test')
61
53
 
62
54
    def test_help_annotate(self):
63
55
        """Annotate command exists"""
64
 
        out, err = self.run_bzr('--no-plugins annotate --help')
 
56
        out, err = self.run_bzr_captured(['--no-plugins', 'annotate', '--help'])
65
57
 
66
58
    def test_annotate_cmd(self):
67
 
        out, err = self.run_bzr('annotate hello.txt')
68
 
        self.assertEqual('', err)
69
 
        self.assertEqualDiff('''\
70
 
1   test@us | my helicopter
71
 
3   user@te | your helicopter
72
 
4   user@te | all of
73
 
            | our helicopters
74
 
''', out)
75
 
 
76
 
    def test_annotate_cmd_full(self):
77
 
        out, err = self.run_bzr('annotate hello.txt --all')
78
 
        self.assertEqual('', err)
79
 
        self.assertEqualDiff('''\
80
 
1   test@us | my helicopter
81
 
3   user@te | your helicopter
82
 
4   user@te | all of
83
 
4   user@te | our helicopters
84
 
''', out)
85
 
 
86
 
    def test_annotate_cmd_long(self):
87
 
        out, err = self.run_bzr('annotate hello.txt --long')
88
 
        self.assertEqual('', err)
89
 
        self.assertEqualDiff('''\
90
 
1   test@user 20061212 | my helicopter
91
 
3   user@test 20061213 | your helicopter
92
 
4   user@test 20061213 | all of
93
 
                       | our helicopters
94
 
''', out)
95
 
 
96
 
    def test_annotate_cmd_show_ids(self):
97
 
        out, err = self.run_bzr('annotate hello.txt --show-ids')
98
 
        max_len = max([len(self.revision_id_1),
99
 
                       len(self.revision_id_3),
100
 
                       len(self.revision_id_4)])
101
 
        self.assertEqual('', err)
102
 
        self.assertEqualDiff('''\
103
 
%*s | my helicopter
104
 
%*s | your helicopter
105
 
%*s | all of
106
 
%*s | our helicopters
107
 
''' % (max_len, self.revision_id_1,
108
 
       max_len, self.revision_id_3,
109
 
       max_len, self.revision_id_4,
110
 
       max_len, '',
111
 
      )
112
 
, out)
 
59
        out, err = self.run_bzr_captured(['annotate', 'hello.txt'])
 
60
        self.assertEquals(err, '')
 
61
        self.assertEqualDiff(out, '''\
 
62
    1 test@us | my helicopter
 
63
    3 user@te | your helicopter
 
64
''')
113
65
 
114
66
    def test_no_mail(self):
115
 
        out, err = self.run_bzr('annotate nomail.txt')
116
 
        self.assertEqual('', err)
117
 
        self.assertEqualDiff('''\
118
 
2   no mail | nomail
119
 
''', out)
 
67
        out, err = self.run_bzr_captured(['annotate', 'nomail.txt'])
 
68
        self.assertEquals(err, '')
 
69
        self.assertEqualDiff(out, '''\
 
70
    2 no mail | nomail
 
71
''')
120
72
 
121
73
    def test_annotate_cmd_revision(self):
122
 
        out, err = self.run_bzr('annotate hello.txt -r1')
123
 
        self.assertEqual('', err)
124
 
        self.assertEqualDiff('''\
125
 
1   test@us | my helicopter
126
 
''', out)
 
74
        out, err = self.run_bzr_captured(['annotate', 'hello.txt', '-r 1'])
 
75
        self.assertEquals(err, '')
 
76
        self.assertEqualDiff(out, '''\
 
77
    1 test@us | my helicopter
 
78
''')
127
79
 
128
80
    def test_annotate_cmd_revision3(self):
129
 
        out, err = self.run_bzr('annotate hello.txt -r3')
130
 
        self.assertEqual('', err)
131
 
        self.assertEqualDiff('''\
132
 
1   test@us | my helicopter
133
 
3   user@te | your helicopter
134
 
''', out)
 
81
        out, err = self.run_bzr_captured(['annotate', 'hello.txt', '-r 3'])
 
82
        self.assertEquals(err, '')
 
83
        self.assertEqualDiff(out, '''\
 
84
    1 test@us | my helicopter
 
85
    3 user@te | your helicopter
 
86
''')
135
87
 
136
88
    def test_annotate_cmd_unknown_revision(self):
137
 
        out, err = self.run_bzr('annotate hello.txt -r 10',
138
 
                                retcode=3)
139
 
        self.assertEqual('', out)
140
 
        self.assertContainsRe(err, 'Requested revision: \'10\' does not exist')
 
89
        out, err = self.run_bzr_captured(['annotate', 'hello.txt', '-r 10'],
 
90
                                         retcode=3)
 
91
        self.assertEquals(out, '')
 
92
        self.assertContainsRe(err, 'has no revision 10')
141
93
 
142
94
    def test_annotate_cmd_two_revisions(self):
143
 
        out, err = self.run_bzr('annotate hello.txt -r1..2',
144
 
                                retcode=3)
145
 
        self.assertEqual('', out)
146
 
        self.assertEqual('bzr: ERROR: bzr annotate --revision takes'
147
 
                         ' exactly 1 argument\n',
148
 
                         err)
149
 
 
150
 
    def test_annotate_empty_file(self):
151
 
        tree = self.make_branch_and_tree('tree')
152
 
        self.build_tree_contents([('tree/empty', '')])
153
 
        tree.add('empty')
154
 
        tree.commit('add empty file')
155
 
 
156
 
        os.chdir('tree')
157
 
        out, err = self.run_bzr('annotate empty')
158
 
        self.assertEqual('', out)
159
 
 
160
 
    def test_annotate_nonexistant_file(self):
161
 
        tree = self.make_branch_and_tree('tree')
162
 
        self.build_tree(['tree/file'])
163
 
        tree.add(['file'])
164
 
        tree.commit('add a file')
165
 
 
166
 
        os.chdir('tree')
167
 
        out, err = self.run_bzr("annotate doesnotexist", retcode=3)
168
 
        self.assertEqual('', out)
169
 
        self.assertEqual("bzr: ERROR: doesnotexist is not versioned\n", err)
 
95
        out, err = self.run_bzr_captured(['annotate', 'hello.txt', '-r 1..2'],
 
96
                                         retcode=3)
 
97
        self.assertEquals(out, '')
 
98
        self.assertEquals(err, 'bzr: ERROR: bzr annotate --revision takes'
 
99
                               ' exactly 1 argument\n')