/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.1 by John Arbash Meinel
Add tests to cleanup the copyright of all source files
1
# Copyright (C) 2005 Canonical Ltd
1551.6.20 by Aaron Bentley
Add copyright and whitespace
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
16
17
1551.6.19 by Aaron Bentley
Fix pending merge status on empty trees
18
from StringIO import StringIO
19
3074.3.2 by John Arbash Meinel
update the ignore list in one-go.
20
from bzrlib import config
1948.4.33 by John Arbash Meinel
Switch from get_revision_spec() to RevisionSpec.from_string() (as advised by Martin)
21
from bzrlib.revisionspec import RevisionSpec
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
22
from bzrlib.status import show_pending_merges, show_tree_status
23
from bzrlib.tests import TestCaseWithTransport
24
25
26
class TestStatus(TestCaseWithTransport):
1551.6.20 by Aaron Bentley
Add copyright and whitespace
27
1551.6.19 by Aaron Bentley
Fix pending merge status on empty trees
28
    def test_pending_none(self):
1551.6.20 by Aaron Bentley
Add copyright and whitespace
29
        # Test whether show_pending_merges works in a tree with no commits
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
30
        tree = self.make_branch_and_tree('a')
1908.6.7 by Robert Collins
Remove all users of set_pending_merges and add_pending_merge except tests that they work correctly.
31
        tree.commit('empty commit')
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
32
        tree2 = self.make_branch_and_tree('b')
1979.2.1 by Robert Collins
(robertc) adds a convenience method "merge_from_branch" to WorkingTree.
33
        # set a left most parent that is not a present commit
1908.6.11 by Robert Collins
Remove usage of tree.pending_merges().
34
        tree2.add_parent_tree_id('some-ghost', allow_leftmost_as_ghost=True)
1908.6.7 by Robert Collins
Remove all users of set_pending_merges and add_pending_merge except tests that they work correctly.
35
        # do a merge
1979.2.1 by Robert Collins
(robertc) adds a convenience method "merge_from_branch" to WorkingTree.
36
        tree2.merge_from_branch(tree.branch)
1551.6.19 by Aaron Bentley
Fix pending merge status on empty trees
37
        output = StringIO()
3074.3.1 by John Arbash Meinel
Fix bug #172657, use Graph.find_difference() rather than ancestry set operations.
38
        tree2.lock_read()
39
        try:
40
            show_pending_merges(tree2, output)
41
        finally:
42
            tree2.unlock()
1551.6.19 by Aaron Bentley
Fix pending merge status on empty trees
43
        self.assertContainsRe(output.getvalue(), 'empty commit')
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
44
3936.2.1 by Ian Clatworthy
verbose flag for status - code & tests
45
    def make_multiple_pending_tree(self):
3074.3.2 by John Arbash Meinel
update the ignore list in one-go.
46
        config.GlobalConfig().set_user_option('email', 'Joe Foo <joe@foo.com>')
47
        tree = self.make_branch_and_tree('a')
48
        tree.commit('commit 1', timestamp=1196796819, timezone=0)
49
        tree2 = tree.bzrdir.clone('b').open_workingtree()
50
        tree.commit('commit 2', timestamp=1196796819, timezone=0)
51
        tree2.commit('commit 2b', timestamp=1196796819, timezone=0)
3377.3.37 by John Arbash Meinel
Ian's first review comments.
52
        tree3 = tree2.bzrdir.clone('c').open_workingtree()
3074.3.2 by John Arbash Meinel
update the ignore list in one-go.
53
        tree2.commit('commit 3b', timestamp=1196796819, timezone=0)
54
        tree3.commit('commit 3c', timestamp=1196796819, timezone=0)
55
        tree.merge_from_branch(tree2.branch)
56
        tree.merge_from_branch(tree3.branch)
3936.2.1 by Ian Clatworthy
verbose flag for status - code & tests
57
        return tree
58
59
    def test_multiple_pending(self):
60
        tree = self.make_multiple_pending_tree()
3074.3.2 by John Arbash Meinel
update the ignore list in one-go.
61
        output = StringIO()
62
        tree.lock_read()
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
63
        self.addCleanup(tree.unlock)
64
        show_pending_merges(tree, output)
3936.2.1 by Ian Clatworthy
verbose flag for status - code & tests
65
        # 2b doesn't appear because it's an ancestor of 3b
66
        self.assertEqualDiff('pending merge tips:\n'
67
                             '  Joe Foo 2007-12-04 commit 3b\n'
68
                             '  Joe Foo 2007-12-04 commit 3c\n',
69
                             output.getvalue())
70
71
    def test_multiple_pending_verbose(self):
72
        tree = self.make_multiple_pending_tree()
73
        output = StringIO()
74
        tree.lock_read()
75
        self.addCleanup(tree.unlock)
76
        show_pending_merges(tree, output, verbose=True)
3377.3.37 by John Arbash Meinel
Ian's first review comments.
77
        # Even though 2b is in the ancestry of 3c, it should only be displayed
78
        # under the first merge parent.
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
79
        self.assertEqualDiff('pending merges:\n'
80
                             '  Joe Foo 2007-12-04 commit 3b\n'
81
                             '    Joe Foo 2007-12-04 commit 2b\n'
82
                             '  Joe Foo 2007-12-04 commit 3c\n',
83
                             output.getvalue())
3074.3.2 by John Arbash Meinel
update the ignore list in one-go.
84
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
85
    def test_with_pending_ghost(self):
86
        """Test when a pending merge is itself a ghost"""
87
        tree = self.make_branch_and_tree('a')
88
        tree.commit('first')
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
89
        tree.add_parent_tree_id('a-ghost-revision')
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
90
        tree.lock_read()
91
        self.addCleanup(tree.unlock)
92
        output = StringIO()
93
        show_pending_merges(tree, output)
3936.2.1 by Ian Clatworthy
verbose flag for status - code & tests
94
        self.assertEqualDiff('pending merge tips:\n'
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
95
                             '  (ghost) a-ghost-revision\n',
96
                             output.getvalue())
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
97
98
    def test_pending_with_ghosts(self):
99
        """Test when a pending merge's ancestry includes ghosts."""
100
        config.GlobalConfig().set_user_option('email', 'Joe Foo <joe@foo.com>')
101
        tree = self.make_branch_and_tree('a')
102
        tree.commit('empty commit')
103
        tree2 = tree.bzrdir.clone('b').open_workingtree()
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
104
        tree2.commit('a non-ghost', timestamp=1196796819, timezone=0)
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
105
        tree2.add_parent_tree_id('a-ghost-revision')
106
        tree2.commit('commit with ghost', timestamp=1196796819, timezone=0)
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
107
        tree2.commit('another non-ghost', timestamp=1196796819, timezone=0)
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
108
        tree.merge_from_branch(tree2.branch)
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
109
        tree.lock_read()
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
110
        self.addCleanup(tree.unlock)
111
        output = StringIO()
3936.2.1 by Ian Clatworthy
verbose flag for status - code & tests
112
        show_pending_merges(tree, output, verbose=True)
3377.3.42 by John Arbash Meinel
Get the tests to actually work, and get the code to go along with.
113
        self.assertEqualDiff('pending merges:\n'
114
                             '  Joe Foo 2007-12-04 another non-ghost\n'
115
                             '    Joe Foo 2007-12-04 commit with ghost\n'
116
                             '    (ghost) a-ghost-revision\n'
117
                             '    Joe Foo 2007-12-04 a non-ghost\n',
118
                             output.getvalue())
3377.3.40 by John Arbash Meinel
a little bit more cleanup, change how ghosts are handled
119
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
120
    def tests_revision_to_revision(self):
121
        """doing a status between two revision trees should work."""
122
        tree = self.make_branch_and_tree('.')
123
        r1_id = tree.commit('one', allow_pointless=True)
124
        r2_id = tree.commit('two', allow_pointless=True)
125
        r2_tree = tree.branch.repository.revision_tree(r2_id)
126
        output = StringIO()
1948.4.29 by John Arbash Meinel
Remove a few more direct references to RevisionSpec
127
        show_tree_status(tree, to_file=output,
1948.4.33 by John Arbash Meinel
Switch from get_revision_spec() to RevisionSpec.from_string() (as advised by Martin)
128
                     revision=[RevisionSpec.from_string("revid:%s" % r1_id),
129
                               RevisionSpec.from_string("revid:%s" % r2_id)])
1852.2.1 by Robert Collins
General cleanups - status, add a status test with two revision trees, and commands.py importing of bzrlib.trace.
130
        # return does not matter as long as it did not raise.