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

Daniel Watkins D.M.Watkins at warwick.ac.uk
Thu Aug 23 19:00:02 BST 2007


On Thu, 2007-08-23 at 12:11 -0400, Aaron Bentley wrote:
> Still has whitspace-alignment stuff
Fixed in 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-20070823175911-\
#   ksf5gmng9jwxttw9
# target_branch: file:///home/daniel/devel/bzr/bzr.dev/
# testament_sha1: a62b6f5c64e508ca6bf558d6fdebe4a1be93b862
# timestamp: 2007-08-23 19:59:24 +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-23 17:59:11 +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'
@@ -192,7 +186,7 @@
             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 +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-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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
Q3C6ROyf/T/8XckU4UJA62r6SA==
-------------- 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/20070823/cc2dbf82/attachment-0001.pgp 


More information about the bazaar mailing list