~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2008-07-03 10:44:34 UTC
  • mfrom: (3512.3.2 setlocale.mini)
  • mto: This revision was merged to the branch mainline in revision 3518.
  • Revision ID: mbp@sourcefrog.net-20080703104434-v4qgzvxd2wxg8etl
Set locale from environment for third party libs and day of week.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
2
 
 
 
1
# Copyright (C) 2005 Canonical Ltd
 
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
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22
22
 
23
23
import os
24
24
 
25
 
from bzrlib.tests import BzrTestBase, TestCaseInTempDir
 
25
from bzrlib.tests import TestCaseInTempDir
26
26
from bzrlib.branch import Branch
27
27
from bzrlib.trace import mutter
28
28
from bzrlib.osutils import pathjoin
30
30
 
31
31
 
32
32
class TestVersioning(TestCaseInTempDir):
33
 
    
34
 
    def test_mkdir(self): 
 
33
 
 
34
    def test_mkdir(self):
35
35
        """Basic 'bzr mkdir' operation"""
36
36
 
37
37
        self.run_bzr('init')
38
 
        self.run_bzr('mkdir', 'foo')
 
38
        self.run_bzr('mkdir foo')
39
39
        self.assert_(os.path.isdir('foo'))
40
40
 
41
 
        self.run_bzr('mkdir', 'foo', retcode=3)
 
41
        self.run_bzr('mkdir foo', retcode=3)
42
42
 
43
 
        from bzrlib.diff import compare_trees
44
43
        wt = WorkingTree.open('.')
45
 
        
46
 
        delta = compare_trees(wt.basis_tree(), wt)
 
44
 
 
45
        delta = wt.changes_from(wt.basis_tree())
47
46
 
48
47
        self.log('delta.added = %r' % delta.added)
49
48
 
55
54
        """'bzr mkdir' operation in subdirectory"""
56
55
 
57
56
        self.run_bzr('init')
58
 
        self.run_bzr('mkdir', 'dir')
 
57
        self.run_bzr('mkdir dir')
59
58
        self.assert_(os.path.isdir('dir'))
60
59
 
61
60
        os.chdir('dir')
62
61
        self.log('Run mkdir in subdir')
63
 
        self.run_bzr('mkdir', 'subdir')
 
62
        self.run_bzr('mkdir subdir')
64
63
        self.assert_(os.path.isdir('subdir'))
65
64
        os.chdir('..')
66
65
 
67
 
        from bzrlib.diff import compare_trees
68
66
        wt = WorkingTree.open('.')
69
 
        
70
 
        delta = compare_trees(wt.basis_tree(), wt)
 
67
 
 
68
        delta = wt.changes_from(wt.basis_tree())
71
69
 
72
70
        self.log('delta.added = %r' % delta.added)
73
71
 
88
86
        self.run_bzr('init')
89
87
        os.chdir('../..')
90
88
 
91
 
        self.run_bzr('mkdir', 'dir', 'a/dir', 'a/b/dir')
 
89
        self.run_bzr('mkdir dir a/dir a/b/dir')
92
90
        self.failUnless(os.path.isdir('dir'))
93
91
        self.failUnless(os.path.isdir('a/dir'))
94
92
        self.failUnless(os.path.isdir('a/b/dir'))
95
93
 
96
 
        from bzrlib.diff import compare_trees
97
94
        wt = WorkingTree.open('.')
98
95
        wt_a = WorkingTree.open('a')
99
96
        wt_b = WorkingTree.open('a/b')
100
 
        
101
 
        delta = compare_trees(wt.basis_tree(), wt)
102
 
        self.assertEquals(len(delta.added), 1)
103
 
        self.assertEquals(delta.added[0][0], 'dir')
104
 
        self.failIf(delta.modified)
105
 
 
106
 
        delta = compare_trees(wt_a.basis_tree(), wt_a)
107
 
        self.assertEquals(len(delta.added), 1)
108
 
        self.assertEquals(delta.added[0][0], 'dir')
109
 
        self.failIf(delta.modified)
110
 
 
111
 
        delta = compare_trees(wt_b.basis_tree(), wt_b)
 
97
 
 
98
        delta = wt.changes_from(wt.basis_tree())
 
99
        self.assertEquals(len(delta.added), 1)
 
100
        self.assertEquals(delta.added[0][0], 'dir')
 
101
        self.failIf(delta.modified)
 
102
 
 
103
        delta = wt_a.changes_from(wt_a.basis_tree())
 
104
        self.assertEquals(len(delta.added), 1)
 
105
        self.assertEquals(delta.added[0][0], 'dir')
 
106
        self.failIf(delta.modified)
 
107
 
 
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
111
        self.failIf(delta.modified)
119
116
        The upgrade should be a no-op."""
120
117
        b = Branch.open(u'.')
121
118
        mutter('branch has %d revisions', b.revno())
122
 
        
 
119
 
123
120
        mutter('check branch...')
124
121
        from bzrlib.check import check
125
122
        check(b, False)
133
130
        eq = self.assertEqual
134
131
 
135
132
        self.build_tree(['a/', 'b/'])
136
 
        
 
133
 
137
134
        run_bzr('init')
138
135
        b = Branch.open(u'.')
139
 
        
 
136
 
140
137
        for fn in ('a/one', 'b/two', 'top'):
141
138
            file(fn, 'w').write('old contents')
142
 
            
 
139
 
143
140
        run_bzr('add')
144
 
        run_bzr('commit', '-m', 'first revision')
145
 
        
 
141
        run_bzr(['commit', '-m', 'first revision'])
 
142
 
146
143
        for fn in ('a/one', 'b/two', 'top'):
147
144
            file(fn, 'w').write('new contents')
148
 
            
 
145
 
149
146
        mutter('start selective subdir commit')
150
 
        run_bzr('commit', 'a', '-m', 'commit a only')
151
 
        
 
147
        run_bzr(['commit', 'a', '-m', 'commit a only'])
 
148
 
152
149
        old = b.repository.revision_tree(b.get_rev_id(1))
153
150
        new = b.repository.revision_tree(b.get_rev_id(2))
154
 
        
 
151
        new.lock_read()
 
152
 
155
153
        eq(new.get_file_by_path('b/two').read(), 'old contents')
156
154
        eq(new.get_file_by_path('top').read(), 'old contents')
157
155
        eq(new.get_file_by_path('a/one').read(), 'new contents')
158
 
        
 
156
        new.unlock()
 
157
 
159
158
        os.chdir('a')
160
159
        # commit from here should do nothing
161
 
        run_bzr('commit', '.', '-m', 'commit subdir only', '--unchanged')
 
160
        run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
162
161
        v3 = b.repository.revision_tree(b.get_rev_id(3))
 
162
        v3.lock_read()
163
163
        eq(v3.get_file_by_path('b/two').read(), 'old contents')
164
164
        eq(v3.get_file_by_path('top').read(), 'old contents')
165
165
        eq(v3.get_file_by_path('a/one').read(), 'new contents')
166
 
                
 
166
        v3.unlock()
 
167
 
167
168
        # commit in subdirectory commits whole tree
168
 
        run_bzr('commit', '-m', 'commit whole tree from subdir')
 
169
        run_bzr(['commit', '-m', 'commit whole tree from subdir'])
169
170
        v4 = b.repository.revision_tree(b.get_rev_id(4))
170
 
        eq(v4.get_file_by_path('b/two').read(), 'new contents')        
 
171
        v4.lock_read()
 
172
        eq(v4.get_file_by_path('b/two').read(), 'new contents')
171
173
        eq(v4.get_file_by_path('top').read(), 'new contents')
172
 
        
 
174
        v4.unlock()
 
175
 
173
176
        # TODO: factor out some kind of assert_tree_state() method
174
 
        
 
177
 
175
178
 
176
179
if __name__ == '__main__':
177
180
    import unittest
178
181
    unittest.main()
179