/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_status.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-09 21:42:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080709214224-r75k87r6a01pfc3h
Restore a real weave merge to 'bzr merge --weave'.

To do so efficiently, we only add the simple LCAs to the final weave
object, unless we run into complexities with the merge graph.
This gives the same effective result as adding all the texts,
with the advantage of not having to extract all of them.

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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
18
from StringIO import StringIO
42
42
            tree2.unlock()
43
43
        self.assertContainsRe(output.getvalue(), 'empty commit')
44
44
 
45
 
    def make_multiple_pending_tree(self):
 
45
    def test_multiple_pending(self):
46
46
        config.GlobalConfig().set_user_option('email', 'Joe Foo <joe@foo.com>')
47
47
        tree = self.make_branch_and_tree('a')
48
48
        tree.commit('commit 1', timestamp=1196796819, timezone=0)
53
53
        tree2.commit('commit 3b', timestamp=1196796819, timezone=0)
54
54
        tree3.commit('commit 3c', timestamp=1196796819, timezone=0)
55
55
        tree.merge_from_branch(tree2.branch)
56
 
        tree.merge_from_branch(tree3.branch, force=True)
57
 
        return tree
58
 
 
59
 
    def test_multiple_pending(self):
60
 
        tree = self.make_multiple_pending_tree()
 
56
        tree.merge_from_branch(tree3.branch)
61
57
        output = StringIO()
62
58
        tree.lock_read()
63
59
        self.addCleanup(tree.unlock)
64
60
        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
61
        # Even though 2b is in the ancestry of 3c, it should only be displayed
79
62
        # under the first merge parent.
80
63
        self.assertEqualDiff('pending merges:\n'
92
75
        self.addCleanup(tree.unlock)
93
76
        output = StringIO()
94
77
        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())
 
78
        self.assertEqualDiff('pending merges:\n'
 
79
                             '  (ghost) a-ghost-revision\n',
 
80
                             output.getvalue())
99
81
 
100
82
    def test_pending_with_ghosts(self):
101
83
        """Test when a pending merge's ancestry includes ghosts."""
111
93
        tree.lock_read()
112
94
        self.addCleanup(tree.unlock)
113
95
        output = StringIO()
114
 
        show_pending_merges(tree, output, verbose=True)
 
96
        show_pending_merges(tree, output)
115
97
        self.assertEqualDiff('pending merges:\n'
116
98
                             '  Joe Foo 2007-12-04 another non-ghost\n'
117
 
                             '    Joe Foo 2007-12-04 [merge] commit with ghost\n'
 
99
                             '    Joe Foo 2007-12-04 commit with ghost\n'
118
100
                             '    (ghost) a-ghost-revision\n'
119
101
                             '    Joe Foo 2007-12-04 a non-ghost\n',
120
102
                             output.getvalue())
130
112
                     revision=[RevisionSpec.from_string("revid:%s" % r1_id),
131
113
                               RevisionSpec.from_string("revid:%s" % r2_id)])
132
114
        # return does not matter as long as it did not raise.
 
115
 
 
116
    def test_pending_specific_files(self):
 
117
        """With a specific file list, pending merges are not shown."""
 
118
        tree = self.make_branch_and_tree('tree')
 
119
        self.build_tree_contents([('tree/a', 'content of a\n')])
 
120
        tree.add('a')
 
121
        r1_id = tree.commit('one')
 
122
        alt = tree.bzrdir.sprout('alt').open_workingtree()
 
123
        self.build_tree_contents([('alt/a', 'content of a\nfrom alt\n')])
 
124
        alt_id = alt.commit('alt')
 
125
        tree.merge_from_branch(alt.branch)
 
126
        output = StringIO()
 
127
        show_tree_status(tree, to_file=output)
 
128
        self.assertContainsRe(output.getvalue(), 'pending merges:')
 
129
        output = StringIO()
 
130
        show_tree_status(tree, to_file=output, specific_files=['a'])
 
131
        self.assertNotContainsRe(output.getvalue(), 'pending merges:')