~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2005 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
743 by Martin Pool
- new simple versioning test cases
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
743 by Martin Pool
- new simple versioning test cases
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
743 by Martin Pool
- new simple versioning test cases
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
18
"""Tests of simple versioning operations"""
19
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
20
# TODO: test trying to commit within a directory that is not yet added
21
22
23
import os
1125 by Martin Pool
- test code exercises a successful check and null upgrade of a branch
24
2530.3.6 by Martin Pool
Remove BzrTestBase alias (little used)
25
from bzrlib.tests import TestCaseInTempDir
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
26
from bzrlib.branch import Branch
1185.33.12 by Martin Pool
Remove some direct calls to logging, and some dead code
27
from bzrlib.trace import mutter
1185.31.32 by John Arbash Meinel
Updated the bzr sourcecode to use bzrlib.osutils.pathjoin rather than os.path.join to enforce internal use of / instead of \
28
from bzrlib.osutils import pathjoin
1534.4.36 by Robert Collins
Finish deprecating Branch.working_tree()
29
from bzrlib.workingtree import WorkingTree
1125 by Martin Pool
- test code exercises a successful check and null upgrade of a branch
30
743 by Martin Pool
- new simple versioning test cases
31
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
32
class TestVersioning(TestCaseInTempDir):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
33
34
    def test_mkdir(self):
744 by Martin Pool
- show nicer descriptions while running tests
35
        """Basic 'bzr mkdir' operation"""
743 by Martin Pool
- new simple versioning test cases
36
1478 by Robert Collins
convert versioning tests to use self.run_bzr, making the test suite quieter
37
        self.run_bzr('init')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
38
        self.run_bzr('mkdir foo')
743 by Martin Pool
- new simple versioning test cases
39
        self.assert_(os.path.isdir('foo'))
40
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
41
        self.run_bzr('mkdir foo', retcode=3)
749 by Martin Pool
- More tests for bzr mkdir
42
1508.1.19 by Robert Collins
Give format3 working trees their own last-revision marker.
43
        wt = WorkingTree.open('.')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
44
1852.10.3 by Robert Collins
Remove all uses of compare_trees and replace with Tree.changes_from throughout bzrlib.
45
        delta = wt.changes_from(wt.basis_tree())
749 by Martin Pool
- More tests for bzr mkdir
46
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
47
        self.log('delta.added = %r' % delta.added)
48
749 by Martin Pool
- More tests for bzr mkdir
49
        self.assertEquals(len(delta.added), 1)
50
        self.assertEquals(delta.added[0][0], 'foo')
51
        self.failIf(delta.modified)
52
1185.31.7 by John Arbash Meinel
Applying Alexander Belchenko's patch to handle multiple mkdir calls
53
    def test_mkdir_in_subdir(self):
54
        """'bzr mkdir' operation in subdirectory"""
55
56
        self.run_bzr('init')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
57
        self.run_bzr('mkdir dir')
1185.31.7 by John Arbash Meinel
Applying Alexander Belchenko's patch to handle multiple mkdir calls
58
        self.assert_(os.path.isdir('dir'))
59
60
        os.chdir('dir')
61
        self.log('Run mkdir in subdir')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
62
        self.run_bzr('mkdir subdir')
1185.31.7 by John Arbash Meinel
Applying Alexander Belchenko's patch to handle multiple mkdir calls
63
        self.assert_(os.path.isdir('subdir'))
64
        os.chdir('..')
65
1508.1.19 by Robert Collins
Give format3 working trees their own last-revision marker.
66
        wt = WorkingTree.open('.')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
67
1852.10.3 by Robert Collins
Remove all uses of compare_trees and replace with Tree.changes_from throughout bzrlib.
68
        delta = wt.changes_from(wt.basis_tree())
1185.31.7 by John Arbash Meinel
Applying Alexander Belchenko's patch to handle multiple mkdir calls
69
70
        self.log('delta.added = %r' % delta.added)
71
72
        self.assertEquals(len(delta.added), 2)
73
        self.assertEquals(delta.added[0][0], 'dir')
1185.31.32 by John Arbash Meinel
Updated the bzr sourcecode to use bzrlib.osutils.pathjoin rather than os.path.join to enforce internal use of / instead of \
74
        self.assertEquals(delta.added[1][0], pathjoin('dir','subdir'))
1185.31.7 by John Arbash Meinel
Applying Alexander Belchenko's patch to handle multiple mkdir calls
75
        self.failIf(delta.modified)
76
1185.31.8 by John Arbash Meinel
Modified mkdir functionality, to handle multiple nested trees.
77
    def test_mkdir_w_nested_trees(self):
78
        """'bzr mkdir' with nested trees"""
79
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('../..')
88
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
89
        self.run_bzr('mkdir dir a/dir a/b/dir')
1185.31.8 by John Arbash Meinel
Modified mkdir functionality, to handle multiple nested trees.
90
        self.failUnless(os.path.isdir('dir'))
91
        self.failUnless(os.path.isdir('a/dir'))
92
        self.failUnless(os.path.isdir('a/b/dir'))
93
1508.1.19 by Robert Collins
Give format3 working trees their own last-revision marker.
94
        wt = WorkingTree.open('.')
95
        wt_a = WorkingTree.open('a')
96
        wt_b = WorkingTree.open('a/b')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
97
1852.10.3 by Robert Collins
Remove all uses of compare_trees and replace with Tree.changes_from throughout bzrlib.
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())
1185.31.8 by John Arbash Meinel
Modified mkdir functionality, to handle multiple nested trees.
109
        self.assertEquals(len(delta.added), 1)
110
        self.assertEquals(delta.added[0][0], 'dir')
111
        self.failIf(delta.modified)
112
1380 by Martin Pool
- upgrade can no longer be done in current version branches
113
    def check_branch(self):
1125 by Martin Pool
- test code exercises a successful check and null upgrade of a branch
114
        """After all the above changes, run the check and upgrade commands.
115
116
        The upgrade should be a no-op."""
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
117
        b = Branch.open(u'.')
1185.33.12 by Martin Pool
Remove some direct calls to logging, and some dead code
118
        mutter('branch has %d revisions', b.revno())
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
119
1185.33.12 by Martin Pool
Remove some direct calls to logging, and some dead code
120
        mutter('check branch...')
1125 by Martin Pool
- test code exercises a successful check and null upgrade of a branch
121
        from bzrlib.check import check
1450 by Robert Collins
hah, missed tests in check changes
122
        check(b, False)
1506 by Robert Collins
Merge Johns current integration work.
123
124
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
125
class SubdirCommit(TestCaseInTempDir):
1102 by Martin Pool
- merge test refactoring from robertc
126
127
    def test_subdir_commit(self):
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
128
        """Test committing a subdirectory, and committing within a directory."""
129
        run_bzr = self.run_bzr
130
        eq = self.assertEqual
131
132
        self.build_tree(['a/', 'b/'])
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
133
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
134
        run_bzr('init')
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
135
        b = Branch.open(u'.')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
136
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
137
        for fn in ('a/one', 'b/two', 'top'):
138
            file(fn, 'w').write('old contents')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
139
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
140
        run_bzr('add')
2552.2.5 by Vincent Ladeuil
Revert the intrusive run_bzr('commit') rewritings.
141
        run_bzr(['commit', '-m', 'first revision'])
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
142
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
143
        for fn in ('a/one', 'b/two', 'top'):
144
            file(fn, 'w').write('new contents')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
145
1185.33.12 by Martin Pool
Remove some direct calls to logging, and some dead code
146
        mutter('start selective subdir commit')
2552.2.5 by Vincent Ladeuil
Revert the intrusive run_bzr('commit') rewritings.
147
        run_bzr(['commit', 'a', '-m', 'commit a only'])
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
148
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
149
        old = b.repository.revision_tree(b.get_rev_id(1))
150
        new = b.repository.revision_tree(b.get_rev_id(2))
3010.1.16 by Robert Collins
Lock correctness in test_versioning
151
        new.lock_read()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
152
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
153
        eq(new.get_file_by_path('b/two').read(), 'old contents')
154
        eq(new.get_file_by_path('top').read(), 'old contents')
155
        eq(new.get_file_by_path('a/one').read(), 'new contents')
3010.1.16 by Robert Collins
Lock correctness in test_versioning
156
        new.unlock()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
157
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
158
        os.chdir('a')
159
        # commit from here should do nothing
2552.2.5 by Vincent Ladeuil
Revert the intrusive run_bzr('commit') rewritings.
160
        run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
161
        v3 = b.repository.revision_tree(b.get_rev_id(3))
3010.1.16 by Robert Collins
Lock correctness in test_versioning
162
        v3.lock_read()
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
163
        eq(v3.get_file_by_path('b/two').read(), 'old contents')
164
        eq(v3.get_file_by_path('top').read(), 'old contents')
165
        eq(v3.get_file_by_path('a/one').read(), 'new contents')
3010.1.16 by Robert Collins
Lock correctness in test_versioning
166
        v3.unlock()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
167
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
168
        # commit in subdirectory commits whole tree
2552.2.5 by Vincent Ladeuil
Revert the intrusive run_bzr('commit') rewritings.
169
        run_bzr(['commit', '-m', 'commit whole tree from subdir'])
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
170
        v4 = b.repository.revision_tree(b.get_rev_id(4))
3010.1.16 by Robert Collins
Lock correctness in test_versioning
171
        v4.lock_read()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
172
        eq(v4.get_file_by_path('b/two').read(), 'new contents')
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
173
        eq(v4.get_file_by_path('top').read(), 'new contents')
3010.1.16 by Robert Collins
Lock correctness in test_versioning
174
        v4.unlock()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
175
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
176
        # TODO: factor out some kind of assert_tree_state() method
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
177
1244 by Martin Pool
- let selftest/versioning run as standalone test
178
179
if __name__ == '__main__':
180
    import unittest
181
    unittest.main()