~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_versioning.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-10-13 06:08:53 UTC
  • mfrom: (4737.1.1 merge-2.0-into-devel)
  • Revision ID: pqm@pqm.ubuntu.com-20091013060853-erk2aaj80fnkrv25
(andrew) Merge lp:bzr/2.0 into lp:bzr, including fixes for #322807,
        #389413, #402623 and documentation improvements.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007, 2009-2012 Canonical Ltd
 
1
# Copyright (C) 2005 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
29
29
from bzrlib.workingtree import WorkingTree
30
30
 
31
31
 
32
 
class TestMkdir(TestCaseWithTransport):
33
 
 
34
 
    def test_mkdir_fails_cleanly(self):
35
 
        """'mkdir' fails cleanly when no working tree is available.
36
 
        https://bugs.launchpad.net/bzr/+bug/138600
37
 
        """
38
 
        # Since there is a safety working tree above us, we create a bare repo
39
 
        # here locally.
40
 
        shared_repo = self.make_repository('.')
41
 
        self.run_bzr(['mkdir', 'abc'], retcode=3)
42
 
        self.assertPathDoesNotExist('abc')
 
32
class TestVersioning(TestCaseInTempDir):
43
33
 
44
34
    def test_mkdir(self):
45
35
        """Basic 'bzr mkdir' operation"""
46
36
 
47
 
        self.make_branch_and_tree('.')
48
 
        self.run_bzr(['mkdir', 'foo'])
 
37
        self.run_bzr('init')
 
38
        self.run_bzr('mkdir foo')
49
39
        self.assert_(os.path.isdir('foo'))
50
40
 
51
 
        self.run_bzr(['mkdir', 'foo'], retcode=3)
 
41
        self.run_bzr('mkdir foo', retcode=3)
52
42
 
53
43
        wt = WorkingTree.open('.')
54
44
 
58
48
 
59
49
        self.assertEquals(len(delta.added), 1)
60
50
        self.assertEquals(delta.added[0][0], 'foo')
61
 
        self.assertFalse(delta.modified)
 
51
        self.failIf(delta.modified)
62
52
 
63
53
    def test_mkdir_in_subdir(self):
64
54
        """'bzr mkdir' operation in subdirectory"""
65
55
 
66
 
        self.make_branch_and_tree('.')
67
 
        self.run_bzr(['mkdir', 'dir'])
 
56
        self.run_bzr('init')
 
57
        self.run_bzr('mkdir dir')
68
58
        self.assert_(os.path.isdir('dir'))
69
59
 
 
60
        os.chdir('dir')
70
61
        self.log('Run mkdir in subdir')
71
 
        self.run_bzr(['mkdir', 'subdir'], working_dir='dir')
72
 
        self.assert_(os.path.isdir('dir/subdir'))
 
62
        self.run_bzr('mkdir subdir')
 
63
        self.assert_(os.path.isdir('subdir'))
 
64
        os.chdir('..')
73
65
 
74
66
        wt = WorkingTree.open('.')
75
67
 
80
72
        self.assertEquals(len(delta.added), 2)
81
73
        self.assertEquals(delta.added[0][0], 'dir')
82
74
        self.assertEquals(delta.added[1][0], pathjoin('dir','subdir'))
83
 
        self.assertFalse(delta.modified)
 
75
        self.failIf(delta.modified)
84
76
 
85
77
    def test_mkdir_w_nested_trees(self):
86
78
        """'bzr mkdir' with nested trees"""
87
79
 
88
 
        self.make_branch_and_tree('.')
89
 
        self.make_branch_and_tree('a')
90
 
        self.make_branch_and_tree('a/b')
 
80
        self.run_bzr('init')
 
81
        os.mkdir('a')
 
82
        os.chdir('a')
 
83
        self.run_bzr('init')
 
84
        os.mkdir('b')
 
85
        os.chdir('b')
 
86
        self.run_bzr('init')
 
87
        os.chdir('../..')
91
88
 
92
 
        self.run_bzr(['mkdir', 'dir', 'a/dir', 'a/b/dir'])
93
 
        self.assertTrue(os.path.isdir('dir'))
94
 
        self.assertTrue(os.path.isdir('a/dir'))
95
 
        self.assertTrue(os.path.isdir('a/b/dir'))
 
89
        self.run_bzr('mkdir dir a/dir a/b/dir')
 
90
        self.failUnless(os.path.isdir('dir'))
 
91
        self.failUnless(os.path.isdir('a/dir'))
 
92
        self.failUnless(os.path.isdir('a/b/dir'))
96
93
 
97
94
        wt = WorkingTree.open('.')
98
95
        wt_a = WorkingTree.open('a')
101
98
        delta = wt.changes_from(wt.basis_tree())
102
99
        self.assertEquals(len(delta.added), 1)
103
100
        self.assertEquals(delta.added[0][0], 'dir')
104
 
        self.assertFalse(delta.modified)
 
101
        self.failIf(delta.modified)
105
102
 
106
103
        delta = wt_a.changes_from(wt_a.basis_tree())
107
104
        self.assertEquals(len(delta.added), 1)
108
105
        self.assertEquals(delta.added[0][0], 'dir')
109
 
        self.assertFalse(delta.modified)
 
106
        self.failIf(delta.modified)
110
107
 
111
108
        delta = wt_b.changes_from(wt_b.basis_tree())
112
109
        self.assertEquals(len(delta.added), 1)
113
110
        self.assertEquals(delta.added[0][0], 'dir')
114
 
        self.assertFalse(delta.modified)
115
 
 
116
 
    def test_mkdir_quiet(self):
117
 
        """'bzr mkdir --quiet' should not print a status message"""
118
 
 
119
 
        self.make_branch_and_tree('.')
120
 
        out, err = self.run_bzr(['mkdir', '--quiet', 'foo'])
121
 
        self.assertEquals('', err)
122
 
        self.assertEquals('', out)
 
111
        self.failIf(delta.modified)
 
112
 
 
113
    def check_branch(self):
 
114
        """After all the above changes, run the check and upgrade commands.
 
115
 
 
116
        The upgrade should be a no-op."""
 
117
        b = Branch.open(u'.')
 
118
        mutter('branch has %d revisions', b.revno())
 
119
 
 
120
        mutter('check branch...')
 
121
        from bzrlib.check import check
 
122
        check(b, False)
123
123
 
124
124
 
125
125
class SubdirCommit(TestCaseWithTransport):
146
146
        new = b.repository.revision_tree(b.get_rev_id(2))
147
147
        new.lock_read()
148
148
 
149
 
        def get_text_by_path(tree, path):
150
 
            return tree.get_file_text(tree.path2id(path), path)
151
 
 
152
 
        self.assertEqual(get_text_by_path(new, 'b/two'), 'old contents')
153
 
        self.assertEqual(get_text_by_path(new, 'top'), 'old contents')
154
 
        self.assertEqual(get_text_by_path(new, 'a/one'), 'new contents')
 
149
        self.assertEqual(new.get_file_by_path('b/two').read(), 'old contents')
 
150
        self.assertEqual(new.get_file_by_path('top').read(), 'old contents')
 
151
        self.assertEqual(new.get_file_by_path('a/one').read(), 'new contents')
155
152
        new.unlock()
156
153
 
 
154
        os.chdir('a')
157
155
        # commit from here should do nothing
158
 
        self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'],
159
 
                     working_dir='a')
 
156
        self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
160
157
        v3 = b.repository.revision_tree(b.get_rev_id(3))
161
158
        v3.lock_read()
162
 
        self.assertEqual(get_text_by_path(v3, 'b/two'), 'old contents')
163
 
        self.assertEqual(get_text_by_path(v3, 'top'), 'old contents')
164
 
        self.assertEqual(get_text_by_path(v3, 'a/one'), 'new contents')
 
159
        self.assertEqual(v3.get_file_by_path('b/two').read(), 'old contents')
 
160
        self.assertEqual(v3.get_file_by_path('top').read(), 'old contents')
 
161
        self.assertEqual(v3.get_file_by_path('a/one').read(), 'new contents')
165
162
        v3.unlock()
166
163
 
167
164
        # commit in subdirectory commits whole tree
168
 
        self.run_bzr(['commit', '-m', 'commit whole tree from subdir'],
169
 
                     working_dir='a')
 
165
        self.run_bzr(['commit', '-m', 'commit whole tree from subdir'])
170
166
        v4 = b.repository.revision_tree(b.get_rev_id(4))
171
167
        v4.lock_read()
172
 
        self.assertEqual(get_text_by_path(v4, 'b/two'), 'new contents')
173
 
        self.assertEqual(get_text_by_path(v4, 'top'), 'new contents')
 
168
        self.assertEqual(v4.get_file_by_path('b/two').read(), 'new contents')
 
169
        self.assertEqual(v4.get_file_by_path('top').read(), 'new contents')
174
170
        v4.unlock()
175
171
 
176
172
        # TODO: factor out some kind of assert_tree_state() method