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

Daniel Watkins D.M.Watkins at warwick.ac.uk
Thu Aug 30 11:08:55 BST 2007


On Wed, 2007-08-29 at 19:04 -0400, Robert Collins wrote:
> Looks like some of the new lines are > 80 columns. Please fix that and 
> then its ok with me.
Fix attached.

-- 
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.90)
# revision_id: d.m.watkins at warwick.ac.uk-20070830100731-\
#   ie6j2bpvwjjb2ci8
# target_branch: file:///home/daniel/devel/bzr/bzr.dev/
# testament_sha1: 19961f7a12c6476db889264e6a35b78c2af02896
# timestamp: 2007-08-30 12:07:44 +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-30 10:07:31 +0000
@@ -26,40 +26,42 @@
 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'),
-                          'foo\n')
-        bzr('cat', 'a', retcode=3)
-        bzr('cat', 'a', '-r', 'revno:1:branch-that-does-not-exist', retcode=3)
-        
+
+        self.assertEquals(self.run_bzr_subprocess('cat', 'branch/a', '-r',
+                                                  'revno:1:branch')[0],
+                                                  'foo\n')
+        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 +91,16 @@
                            '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 +111,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 +122,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-30 10:07:31 +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'
@@ -189,10 +183,11 @@
             other_tree.rename_one('dirtorename', 'renameddir')
             other_tree.rename_one('dirtoreparent', 'renameddir/reparenteddir')
             other_tree.rename_one('filetorename', 'renamedfile')
-            other_tree.rename_one('filetoreparent', 'renameddir/reparentedfile')
+            other_tree.rename_one('filetoreparent',
+                                  'renameddir/reparentedfile')
             other_tree.remove(['dirtoremove', 'filetoremove'])
             self.build_tree_contents([
-                ('other/newdir/', ),
+                ('other/newdir/',),
                 ('other/filetomodify', 'new content'),
                 ('other/newfile', 'new file content')])
             other_tree.add('newfile')
@@ -219,25 +214,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,19 +238,19 @@
     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 '
                              'checkout', retcode=3)
         self.assertEqual(output,
                          ('',
-                          "bzr: ERROR: Working tree is out of date, please run "
-                          "'bzr update'.\n"))
+                          "bzr: ERROR: Working tree is out of date, please "
+                          "run 'bzr update'.\n"))
 
     def test_local_commit_unbound(self):
         # a --local commit on an unbound branch is an error
@@ -275,14 +266,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-23 17:59:11 +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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
TGjfEtQpUDS/+f/i7kinChIDcUYGoA==
-------------- 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/20070830/ed6afafd/attachment-0001.pgp 


More information about the bazaar mailing list