~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_status.py

  • Committer: Naoki INADA
  • Date: 2009-10-29 10:01:19 UTC
  • mto: (4634.97.3 2.0)
  • mto: This revision was merged to the branch mainline in revision 4798.
  • Revision ID: inada-n@klab.jp-20091029100119-uckv9t7ej2qrghw3
import doc-ja rev90

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
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
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
18
from StringIO import StringIO
19
19
 
 
20
from bzrlib import config
20
21
from bzrlib.revisionspec import RevisionSpec
21
22
from bzrlib.status import show_pending_merges, show_tree_status
22
23
from bzrlib.tests import TestCaseWithTransport
34
35
        # do a merge
35
36
        tree2.merge_from_branch(tree.branch)
36
37
        output = StringIO()
37
 
        show_pending_merges(tree2, output)
 
38
        tree2.lock_read()
 
39
        try:
 
40
            show_pending_merges(tree2, output)
 
41
        finally:
 
42
            tree2.unlock()
38
43
        self.assertContainsRe(output.getvalue(), 'empty commit')
39
44
 
 
45
    def make_multiple_pending_tree(self):
 
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)
 
52
        tree3 = tree2.bzrdir.clone('c').open_workingtree()
 
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)
 
57
        return tree
 
58
 
 
59
    def test_multiple_pending(self):
 
60
        tree = self.make_multiple_pending_tree()
 
61
        output = StringIO()
 
62
        tree.lock_read()
 
63
        self.addCleanup(tree.unlock)
 
64
        show_pending_merges(tree, output)
 
65
        # 2b doesn't appear because it's an ancestor of 3b
 
66
        self.assertEqualDiff(
 
67
            'pending merge tips: (use -v to see all merge revisions)\n'
 
68
            '  Joe Foo 2007-12-04 commit 3b\n'
 
69
            '  Joe Foo 2007-12-04 commit 3c\n',
 
70
            output.getvalue())
 
71
 
 
72
    def test_multiple_pending_verbose(self):
 
73
        tree = self.make_multiple_pending_tree()
 
74
        output = StringIO()
 
75
        tree.lock_read()
 
76
        self.addCleanup(tree.unlock)
 
77
        show_pending_merges(tree, output, verbose=True)
 
78
        # Even though 2b is in the ancestry of 3c, it should only be displayed
 
79
        # under the first merge parent.
 
80
        self.assertEqualDiff('pending merges:\n'
 
81
                             '  Joe Foo 2007-12-04 commit 3b\n'
 
82
                             '    Joe Foo 2007-12-04 commit 2b\n'
 
83
                             '  Joe Foo 2007-12-04 commit 3c\n',
 
84
                             output.getvalue())
 
85
 
 
86
    def test_with_pending_ghost(self):
 
87
        """Test when a pending merge is itself a ghost"""
 
88
        tree = self.make_branch_and_tree('a')
 
89
        tree.commit('first')
 
90
        tree.add_parent_tree_id('a-ghost-revision')
 
91
        tree.lock_read()
 
92
        self.addCleanup(tree.unlock)
 
93
        output = StringIO()
 
94
        show_pending_merges(tree, output)
 
95
        self.assertEqualDiff(
 
96
            'pending merge tips: (use -v to see all merge revisions)\n'
 
97
            '  (ghost) a-ghost-revision\n',
 
98
            output.getvalue())
 
99
 
 
100
    def test_pending_with_ghosts(self):
 
101
        """Test when a pending merge's ancestry includes ghosts."""
 
102
        config.GlobalConfig().set_user_option('email', 'Joe Foo <joe@foo.com>')
 
103
        tree = self.make_branch_and_tree('a')
 
104
        tree.commit('empty commit')
 
105
        tree2 = tree.bzrdir.clone('b').open_workingtree()
 
106
        tree2.commit('a non-ghost', timestamp=1196796819, timezone=0)
 
107
        tree2.add_parent_tree_id('a-ghost-revision')
 
108
        tree2.commit('commit with ghost', timestamp=1196796819, timezone=0)
 
109
        tree2.commit('another non-ghost', timestamp=1196796819, timezone=0)
 
110
        tree.merge_from_branch(tree2.branch)
 
111
        tree.lock_read()
 
112
        self.addCleanup(tree.unlock)
 
113
        output = StringIO()
 
114
        show_pending_merges(tree, output, verbose=True)
 
115
        self.assertEqualDiff('pending merges:\n'
 
116
                             '  Joe Foo 2007-12-04 another non-ghost\n'
 
117
                             '    Joe Foo 2007-12-04 [merge] commit with ghost\n'
 
118
                             '    (ghost) a-ghost-revision\n'
 
119
                             '    Joe Foo 2007-12-04 a non-ghost\n',
 
120
                             output.getvalue())
 
121
 
40
122
    def tests_revision_to_revision(self):
41
123
        """doing a status between two revision trees should work."""
42
124
        tree = self.make_branch_and_tree('.')