~bzr-pqm/bzr/bzr.dev

1886.1.4 by John Arbash Meinel
Move the revprops test to test against each Repository format.
1
# Copyright (C) 2006 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1185.16.35 by Martin Pool
- stub for revision properties
16
17
"""Tests for revision properties."""
18
1886.1.4 by John Arbash Meinel
Move the revprops test to test against each Repository format.
19
from bzrlib.tests.repository_implementations.test_repository import (
20
    TestCaseWithRepository,
21
    )
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
22
1886.1.4 by John Arbash Meinel
Move the revprops test to test against each Repository format.
23
class TestRevProps(TestCaseWithRepository):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
24
1185.16.35 by Martin Pool
- stub for revision properties
25
    def test_simple_revprops(self):
26
        """Simple revision properties"""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
27
        wt = self.make_branch_and_tree('.')
28
        b = wt.branch
1185.35.16 by Aaron Bentley
Fixed tests
29
        b.nick = 'Nicholas'
1886.1.3 by John Arbash Meinel
Also update the revprops test.
30
        props = dict(flavor='choc-mint',
31
                     condiment='orange\n  mint\n\tcandy',
32
                     empty='',
33
                     non_ascii=u'\xb5')
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
34
        wt.commit(message='initial null commit', 
1185.16.35 by Martin Pool
- stub for revision properties
35
                 revprops=props,
36
                 allow_pointless=True,
37
                 rev_id='test@user-1')
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
38
        rev = b.repository.get_revision('test@user-1')
1185.16.37 by Martin Pool
- properties are retrieved when revisions are loaded
39
        self.assertTrue('flavor' in rev.properties)
40
        self.assertEquals(rev.properties['flavor'], 'choc-mint')
1886.1.3 by John Arbash Meinel
Also update the revprops test.
41
        self.assertEquals([('branch-nick', 'Nicholas'), 
1185.35.16 by Aaron Bentley
Fixed tests
42
                           ('condiment', 'orange\n  mint\n\tcandy'),
1886.1.3 by John Arbash Meinel
Also update the revprops test.
43
                           ('empty', ''),
44
                           ('flavor', 'choc-mint'),
45
                           ('non_ascii', u'\xb5'),
46
                          ], sorted(rev.properties.items()))
1185.16.37 by Martin Pool
- properties are retrieved when revisions are loaded
47
1185.16.39 by Martin Pool
- constraints on revprops
48
    def test_invalid_revprops(self):
49
        """Invalid revision properties"""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
50
        wt = self.make_branch_and_tree('.')
51
        b = wt.branch
1185.16.39 by Martin Pool
- constraints on revprops
52
        self.assertRaises(ValueError,
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
53
                          wt.commit, 
1185.16.39 by Martin Pool
- constraints on revprops
54
                          message='invalid',
55
                          revprops={'what a silly property': 'fine'})
56
        self.assertRaises(ValueError,
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
57
                          wt.commit, 
1185.16.39 by Martin Pool
- constraints on revprops
58
                          message='invalid',
59
                          revprops=dict(number=13))
1913.1.1 by John Arbash Meinel
Fix bug #55783
60
61
62
class TestRevisionAttributes(TestCaseWithRepository):
63
    """Test that revision attributes are correct."""
64
65
    def test_revision_accessors(self):
66
        """Make sure the values that come out of a revision are the 
67
        same as the ones that go in.
68
        """
69
        tree1 = self.make_branch_and_tree("br1")
70
71
        # create a revision
72
        tree1.commit(message="quux", allow_pointless=True, committer="jaq",
73
                     revprops={'empty':'',
74
                               'value':'one',
75
                               'unicode':'\xb5',
76
                               'multiline':'foo\nbar\n\n'
77
                              })
78
        assert len(tree1.branch.revision_history()) > 0
79
        rev_a = tree1.branch.repository.get_revision(
80
                            tree1.branch.last_revision())
81
82
        tree2 = self.make_branch_and_tree("br2")
83
        tree2.commit(message=rev_a.message,
84
                     timestamp=rev_a.timestamp,
85
                     timezone=rev_a.timezone,
86
                     committer=rev_a.committer,
87
                     rev_id=rev_a.revision_id,
88
                     revprops=rev_a.properties,
89
                     allow_pointless=True, # there's nothing in this commit
90
                     strict=True,
91
                     verbose=True)
92
        rev_b = tree2.branch.repository.get_revision(
93
                            tree2.branch.last_revision())
94
        
95
        self.assertEqual(rev_a.message, rev_b.message)
96
        self.assertEqual(rev_a.timestamp, rev_b.timestamp)
97
        self.assertEqual(rev_a.timezone, rev_b.timezone)
98
        self.assertEqual(rev_a.committer, rev_b.committer)
99
        self.assertEqual(rev_a.revision_id, rev_b.revision_id)
100
        self.assertEqual(rev_a.properties, rev_b.properties)
101
1913.1.5 by John Arbash Meinel
fix test name
102
    def test_zero_timezone(self):
1913.1.1 by John Arbash Meinel
Fix bug #55783
103
        tree1 = self.make_branch_and_tree("br1")
104
105
        # create a revision
106
        tree1.commit(message="quux", timezone=0, rev_id='r1')
107
        rev_a = tree1.branch.repository.get_revision('r1')
108
        self.assertEqual(0, rev_a.timezone)