Review: [MERGE] Convert test.blackbox.test_c* to use internals where appropriate

Daniel Watkins D.M.Watkins at warwick.ac.uk
Tue Aug 21 21:42:05 BST 2007


Gah, sending to the list rather than just Andrew this time.  Sorry for
the spam, Andrew.

On Thu, 2007-08-09 at 13:00 +1000, Andrew Bennetts wrote:
> You replace run_bzr_subprocess with run_bzr.  As explained by Alexander, this
> test should still use run_bzr_subprocess:
This has been done on any that compare output with a string.

> I think a comment like this would do:
> 
>     # We use run_bzr_subprocess rather than run_bzr here so that we can test
>     # mangling of line-endings on Windows.
Done.

> > +        rev_id = tree.branch.revision_history()[-1]
> 
> As Aaron says, use last_revision() instead.
Done.

> >  from bzrlib.branch import Branch
> >  from bzrlib.bzrdir import BzrDir
> > +from bzrlib.conflicts import resolve

> As Aaron says, you don't use this.
> 
> (Incidentally, pyflakes says that 're', 'sys', 'Branch', 'BzrCommandError' and
> 'WorkingTree' are imported but unused too.  Feel free to tidy that while you're
> there...)
Done.

> PEP 8 says not to use whitespace to align things.
PEP 8 says not to have 'more than one space around an assignment (or
other) operator to align it with another'.  This is a separator as
opposed to operator and isn't being used to align the separators with
one another but rather the contents of the tuples.

Regards,
-- 
Daniel Watkins (Odd_Bloke) <D.M.Watkins at warwick.ac.uk>
University of Warwick Christian Focus President
University of Warwick Computing Society WUGLUG Liaison Officer
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.19)
# revision_id: d.m.watkins at warwick.ac.uk-20070821192512-\
#   sfd2x2hap603dtm5
# target_branch: file:///home/daniel/devel/bzr/bzr.dev/
# testament_sha1: 19545d60aaf2cb4e9c1420d86416479afb80f54b
# timestamp: 2007-08-21 21:25:38 +0200
# base_revision_id: pqm at pqm.ubuntu.com-20070821044713-ttnupbvhlsbwh1he
# 
# Begin patch
=== modified file 'bzrlib/tests/blackbox/test_cat.py'
--- bzrlib/tests/blackbox/test_cat.py	2007-08-03 02:52:23 +0000
+++ bzrlib/tests/blackbox/test_cat.py	2007-08-21 19:18:03 +0000
@@ -26,40 +26,36 @@
 class TestCat(TestCaseWithTransport):
 
     def test_cat(self):
-
-        def bzr(*args, **kwargs):
-            return self.run_bzr_subprocess(list(args), **kwargs)[0]
-
-        os.mkdir('branch')
+        tree = self.make_branch_and_tree('branch')
+        self.build_tree_contents([('branch/a', 'foo\n')])
+        tree.add('a')
         os.chdir('branch')
-        bzr('init')
-        open('a', 'wb').write('foo\n')
-        bzr('add', 'a')
-
         # 'bzr cat' without an option should cat the last revision
-        bzr('cat', 'a', retcode=3)
-
-        bzr('commit', '-m', '1')
-        open('a', 'wb').write('baz\n')
-
-        self.assertEquals(bzr('cat', 'a'), 'foo\n')
-
-        bzr('commit', '-m', '2')
-        self.assertEquals(bzr('cat', 'a'), 'baz\n')
-        self.assertEquals(bzr('cat', 'a', '-r', '1'), 'foo\n')
-        self.assertEquals(bzr('cat', 'a', '-r', '-1'), 'baz\n')
-
-        rev_id = bzr('revision-history').strip().split('\n')[-1]
-
-        self.assertEquals(bzr('cat', 'a', '-r', 'revid:%s' % rev_id), 'baz\n')
-        
+        self.run_bzr('cat', 'a', retcode=3)
+
+        tree.commit(message='1')
+        self.build_tree_contents([('a', 'baz\n')])
+
+        # We use run_bzr_subprocess rather than run_bzr here so that we can
+        # test mangling of line-endings on Windows.
+        self.assertEquals(self.run_bzr_subprocess('cat', 'a')[0], 'foo\n')
+
+        tree.commit(message='2')
+        self.assertEquals(self.run_bzr_subprocess('cat', 'a')[0], 'baz\n')
+        self.assertEquals(self.run_bzr_subprocess('cat', 'a', '-r', '1')[0], 'foo\n')
+        self.assertEquals(self.run_bzr_subprocess('cat', 'a', '-r', '-1')[0], 'baz\n')
+
+        rev_id = tree.branch.last_revision()
+
+        self.assertEquals(self.run_bzr_subprocess('cat', 'a', '-r', 'revid:%s' % rev_id)[0], 'baz\n')
+
         os.chdir('..')
-        
-        self.assertEquals(bzr('cat', 'branch/a', '-r', 'revno:1:branch'),
+
+        self.assertEquals(self.run_bzr_subprocess('cat', 'branch/a', '-r', 'revno:1:branch')[0],
                           'foo\n')
-        bzr('cat', 'a', retcode=3)
-        bzr('cat', 'a', '-r', 'revno:1:branch-that-does-not-exist', retcode=3)
-        
+        self.run_bzr('cat', 'a', retcode=3)
+        self.run_bzr('cat', 'a', '-r', 'revno:1:branch-that-does-not-exist', retcode=3)
+
     def test_cat_different_id(self):
         """'cat' works with old and new files"""
         tree = self.make_branch_and_tree('.')
@@ -89,15 +85,15 @@
                            'cat b-tree --name-from-revision')
 
         # get to the old file automatically
-        out, err = self.run_bzr('cat d-rev')
+        out, err = self.run_bzr_subprocess('cat d-rev')
         self.assertEqual('bar\n', out)
         self.assertEqual('', err)
 
-        out, err = self.run_bzr('cat a-rev-tree --name-from-revision')
+        out, err = self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
         self.assertEqual('foo\n', out)
         self.assertEqual('', err)
 
-        out, err = self.run_bzr('cat a-rev-tree')
+        out, err = self.run_bzr_subprocess('cat a-rev-tree')
         self.assertEqual('baz\n', out)
         self.assertEqual('', err)
 
@@ -108,7 +104,7 @@
         wt.commit('Making sure there is a basis_tree available')
 
         url = self.get_readonly_url() + '/README'
-        out, err = self.run_bzr(['cat', url])
+        out, err = self.run_bzr_subprocess(['cat', url])
         self.assertEqual('contents of README\n', out)
 
     def test_cat_no_working_tree(self):
@@ -119,6 +115,6 @@
         wt.branch.bzrdir.destroy_workingtree()
 
         url = self.get_readonly_url() + '/README'
-        out, err = self.run_bzr(['cat', url])
+        out, err = self.run_bzr_subprocess(['cat', url])
         self.assertEqual('contents of README\n', out)
         

=== modified file 'bzrlib/tests/blackbox/test_commit.py'
--- bzrlib/tests/blackbox/test_commit.py	2007-08-07 14:57:35 +0000
+++ bzrlib/tests/blackbox/test_commit.py	2007-08-21 19:25:12 +0000
@@ -18,17 +18,12 @@
 """Tests for the commit CLI of bzr."""
 
 import os
-import re
-import sys
 
 from bzrlib import (
     ignores,
     )
-from bzrlib.branch import Branch
 from bzrlib.bzrdir import BzrDir
-from bzrlib.errors import BzrCommandError
 from bzrlib.tests.blackbox import ExternalBase
-from bzrlib.workingtree import WorkingTree
 
 
 class TestCommit(ExternalBase):
@@ -36,7 +31,7 @@
     def test_05_empty_commit(self):
         """Commit of tree with no versioned files should fail"""
         # If forced, it should succeed, but this is not tested here.
-        self.run_bzr("init")
+        self.make_branch_and_tree('.')
         self.build_tree(['hello.txt'])
         out,err = self.run_bzr('commit -m empty', retcode=3)
         self.assertEqual('', out)
@@ -45,7 +40,7 @@
 
     def test_commit_success(self):
         """Successful commit should not leave behind a bzr-commit-* file"""
-        self.run_bzr("init")
+        self.make_branch_and_tree('.')
         self.run_bzr('commit --unchanged -m message')
         self.assertEqual('', self.run_bzr('unknowns')[0])
 
@@ -55,30 +50,29 @@
 
     def test_commit_with_path(self):
         """Commit tree with path of root specified"""
-        self.run_bzr('init a')
+        a_tree = self.make_branch_and_tree('a')
         self.build_tree(['a/a_file'])
-        self.run_bzr('add a/a_file')
+        a_tree.add('a_file')
         self.run_bzr(['commit', '-m', 'first commit', 'a'])
 
-        self.run_bzr('branch a b')
+        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
         self.build_tree_contents([('b/a_file', 'changes in b')])
         self.run_bzr(['commit', '-m', 'first commit in b', 'b'])
 
         self.build_tree_contents([('a/a_file', 'new contents')])
         self.run_bzr(['commit', '-m', 'change in a', 'a'])
 
-        os.chdir('b')
-        self.run_bzr('merge ../a', retcode=1) # will conflict
-        os.chdir('..')
+        b_tree.merge_from_branch(a_tree.branch)
+        self.assertEqual(len(b_tree.conflicts()), 1)
         self.run_bzr('resolved b/a_file')
         self.run_bzr(['commit', '-m', 'merge into b', 'b'])
 
 
     def test_10_verbose_commit(self):
         """Add one file and examine verbose commit output"""
-        self.run_bzr("init")
+        tree = self.make_branch_and_tree('.')
         self.build_tree(['hello.txt'])
-        self.run_bzr("add hello.txt")
+        tree.add("hello.txt")
         out,err = self.run_bzr('commit -m added')
         self.assertEqual('', out)
         self.assertEqual('added hello.txt\n'
@@ -141,11 +135,11 @@
 
     def test_verbose_commit_with_unchanged(self):
         """Unchanged files should not be listed by default in verbose output"""
-        self.run_bzr("init")
+        tree = self.make_branch_and_tree('.')
         self.build_tree(['hello.txt', 'unchanged.txt'])
-        self.run_bzr('add unchanged.txt')
+        tree.add('unchanged.txt')
         self.run_bzr('commit -m unchanged unchanged.txt')
-        self.run_bzr("add hello.txt")
+        tree.add("hello.txt")
         out,err = self.run_bzr('commit -m added')
         self.assertEqual('', out)
         self.assertEqual('added hello.txt\n'
@@ -219,25 +213,21 @@
             err)
 
     def test_empty_commit_message(self):
-        self.run_bzr("init")
-        file('foo.c', 'wt').write('int main() {}')
-        self.run_bzr('add foo.c')
+        tree = self.make_branch_and_tree('.')
+        self.build_tree_contents([('foo.c', 'int main() {}')])
+        tree.add('foo.c')
         self.run_bzr('commit -m ""', retcode=3)
 
     def test_other_branch_commit(self):
         # this branch is to ensure consistent behaviour, whether we're run
         # inside a branch, or not.
-        os.mkdir('empty_branch')
-        os.chdir('empty_branch')
-        self.run_bzr('init')
-        os.mkdir('branch')
-        os.chdir('branch')
-        self.run_bzr('init')
-        file('foo.c', 'wt').write('int main() {}')
-        file('bar.c', 'wt').write('int main() {}')
-        os.chdir('..')
-        self.run_bzr('add branch/foo.c')
-        self.run_bzr('add branch')
+        outer_tree = self.make_branch_and_tree('.')
+        inner_tree = self.make_branch_and_tree('branch')
+        self.build_tree_contents([
+            ('branch/foo.c', 'int main() {}'),
+            ('branch/bar.c', 'int main() {}')])
+        inner_tree.add('foo.c')
+        inner_tree.add('bar.c')
         # can't commit files in different trees; sane error
         self.run_bzr('commit -m newstuff branch/foo.c .', retcode=3)
         self.run_bzr('commit -m newstuff branch/foo.c')
@@ -247,11 +237,11 @@
     def test_out_of_date_tree_commit(self):
         # check we get an error code and a clear message committing with an out
         # of date checkout
-        self.make_branch_and_tree('branch')
+        tree = self.make_branch_and_tree('branch')
         # make a checkout
-        self.run_bzr('checkout --lightweight branch checkout')
+        checkout = tree.branch.create_checkout('checkout', lightweight=True)
         # commit to the original branch to make the checkout out of date
-        self.run_bzr('commit --unchanged -m message branch')
+        tree.commit('message branch', allow_pointless=True)
         # now commit to the checkout should emit
         # ERROR: Out of date with the branch, 'bzr update' is suggested
         output = self.run_bzr('commit --unchanged -m checkout_message '
@@ -275,14 +265,14 @@
         # past. This is a user story reported to fail in bug #43959 where 
         # a merge done in a checkout (using the update command) failed to
         # commit correctly.
-        self.run_bzr('init trunk')
+        trunk = self.make_branch_and_tree('trunk')
 
-        self.run_bzr('checkout trunk u1')
+        u1 = trunk.branch.create_checkout('u1')
         self.build_tree_contents([('u1/hosts', 'initial contents')])
-        self.run_bzr('add u1/hosts')
+        u1.add('hosts')
         self.run_bzr('commit -m add-hosts u1')
 
-        self.run_bzr('checkout trunk u2')
+        u2 = trunk.branch.create_checkout('u2')
         self.build_tree_contents([('u2/hosts', 'altered in u2')])
         self.run_bzr('commit -m checkin-from-u2 u2')
 

=== modified file 'bzrlib/tests/blackbox/test_conflicts.py'
--- bzrlib/tests/blackbox/test_conflicts.py	2007-06-27 19:13:50 +0000
+++ bzrlib/tests/blackbox/test_conflicts.py	2007-08-03 13:50:09 +0000
@@ -29,30 +29,31 @@
 
     def setUp(self):
         super(ExternalBase, self).setUp()
-        try:
-            os.mkdir('a')
-        except:
-            raise os.getcwd()
+        a_tree = self.make_branch_and_tree('a')
+        self.build_tree_contents([
+            ('a/myfile',        'contentsa\n'),
+            ('a/my_other_file', 'contentsa\n'),
+            ('a/mydir/',                     ),
+            ])
+        a_tree.add('myfile')
+        a_tree.add('my_other_file')
+        a_tree.add('mydir')
+        a_tree.commit(message="new")
+        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
+        self.build_tree_contents([
+            ('b/myfile',        'contentsb\n'),
+            ('b/my_other_file', 'contentsb\n'),
+            ])
+        b_tree.rename_one('mydir', 'mydir2')
+        b_tree.commit(message="change")
+        self.build_tree_contents([
+            ('a/myfile',        'contentsa2\n'),
+            ('a/my_other_file', 'contentsa2\n'),
+            ])
+        a_tree.rename_one('mydir', 'mydir3')
+        a_tree.commit(message='change')
+        a_tree.merge_from_branch(b_tree.branch)
         os.chdir('a')
-        self.run_bzr('init')
-        file('myfile', 'wb').write('contentsa\n')
-        file('my_other_file', 'wb').write('contentsa\n')
-        os.mkdir('mydir')
-        self.run_bzr('add')
-        self.run_bzr('commit -m new')
-        os.chdir('..')
-        self.run_bzr('branch a b')
-        os.chdir('b')
-        file('myfile', 'wb').write('contentsb\n')
-        file('my_other_file', 'wb').write('contentsb\n')
-        self.run_bzr('mv mydir mydir2')
-        self.run_bzr('commit -m change')
-        os.chdir('../a')
-        file('myfile', 'wb').write('contentsa2\n')
-        file('my_other_file', 'wb').write('contentsa2\n')
-        self.run_bzr('mv mydir mydir3')
-        self.run_bzr('commit -m change')
-        self.run_bzr('merge ../b', retcode=1)
 
     def test_conflicts(self):
         conflicts, errs = self.run_bzr('conflicts')

# Begin bundle
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070821/8c4763f9/attachment-0001.pgp 


More information about the bazaar mailing list