25
from breezy.branch import Branch
26
from breezy.osutils import pathjoin
27
from breezy.tests import TestCaseInTempDir, TestCaseWithTransport
28
from breezy.trace import mutter
29
from breezy.workingtree import WorkingTree
25
from bzrlib.branch import Branch
26
from bzrlib.osutils import pathjoin
27
from bzrlib.tests import TestCaseInTempDir, TestCaseWithTransport
28
from bzrlib.trace import mutter
29
from bzrlib.workingtree import WorkingTree
32
32
class TestMkdir(TestCaseWithTransport):
40
40
shared_repo = self.make_repository('.')
41
41
self.run_bzr(['mkdir', 'abc'], retcode=3)
42
self.assertPathDoesNotExist('abc')
42
self.failIfExists('abc')
45
class TestVersioning(TestCaseInTempDir):
44
47
def test_mkdir(self):
45
"""Basic 'brz mkdir' operation"""
48
"""Basic 'bzr mkdir' operation"""
47
self.make_branch_and_tree('.')
48
51
self.run_bzr(['mkdir', 'foo'])
49
self.assertTrue(os.path.isdir('foo'))
52
self.assert_(os.path.isdir('foo'))
51
54
self.run_bzr(['mkdir', 'foo'], retcode=3)
57
60
self.log('delta.added = %r' % delta.added)
59
self.assertEqual(len(delta.added), 1)
60
self.assertEqual(delta.added[0].path[1], 'foo')
61
self.assertFalse(delta.modified)
62
self.assertEquals(len(delta.added), 1)
63
self.assertEquals(delta.added[0][0], 'foo')
64
self.failIf(delta.modified)
63
66
def test_mkdir_in_subdir(self):
64
"""'brz mkdir' operation in subdirectory"""
67
"""'bzr mkdir' operation in subdirectory"""
66
self.make_branch_and_tree('.')
67
70
self.run_bzr(['mkdir', 'dir'])
68
self.assertTrue(os.path.isdir('dir'))
71
self.assert_(os.path.isdir('dir'))
70
74
self.log('Run mkdir in subdir')
71
self.run_bzr(['mkdir', 'subdir'], working_dir='dir')
72
self.assertTrue(os.path.isdir('dir/subdir'))
75
self.run_bzr(['mkdir', 'subdir'])
76
self.assert_(os.path.isdir('subdir'))
74
79
wt = WorkingTree.open('.')
78
83
self.log('delta.added = %r' % delta.added)
80
self.assertEqual(len(delta.added), 2)
81
self.assertEqual(delta.added[0].path[1], 'dir')
82
self.assertEqual(delta.added[1].path[1], pathjoin('dir', 'subdir'))
83
self.assertFalse(delta.modified)
85
self.assertEquals(len(delta.added), 2)
86
self.assertEquals(delta.added[0][0], 'dir')
87
self.assertEquals(delta.added[1][0], pathjoin('dir','subdir'))
88
self.failIf(delta.modified)
85
90
def test_mkdir_w_nested_trees(self):
86
"""'brz mkdir' with nested trees"""
91
"""'bzr mkdir' with nested trees"""
88
self.make_branch_and_tree('.')
89
self.make_branch_and_tree('a')
90
self.make_branch_and_tree('a/b')
92
102
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'))
103
self.failUnless(os.path.isdir('dir'))
104
self.failUnless(os.path.isdir('a/dir'))
105
self.failUnless(os.path.isdir('a/b/dir'))
97
107
wt = WorkingTree.open('.')
98
108
wt_a = WorkingTree.open('a')
99
109
wt_b = WorkingTree.open('a/b')
101
111
delta = wt.changes_from(wt.basis_tree())
102
self.assertEqual(len(delta.added), 1)
103
self.assertEqual(delta.added[0].path[1], 'dir')
104
self.assertFalse(delta.modified)
112
self.assertEquals(len(delta.added), 1)
113
self.assertEquals(delta.added[0][0], 'dir')
114
self.failIf(delta.modified)
106
116
delta = wt_a.changes_from(wt_a.basis_tree())
107
self.assertEqual(len(delta.added), 1)
108
self.assertEqual(delta.added[0].path[1], 'dir')
109
self.assertFalse(delta.modified)
117
self.assertEquals(len(delta.added), 1)
118
self.assertEquals(delta.added[0][0], 'dir')
119
self.failIf(delta.modified)
111
121
delta = wt_b.changes_from(wt_b.basis_tree())
112
self.assertEqual(len(delta.added), 1)
113
self.assertEqual(delta.added[0].path[1], 'dir')
114
self.assertFalse(delta.modified)
116
def test_mkdir_quiet(self):
117
"""'brz mkdir --quiet' should not print a status message"""
119
self.make_branch_and_tree('.')
120
out, err = self.run_bzr(['mkdir', '--quiet', 'foo'])
121
self.assertEqual('', err)
122
self.assertEqual('', out)
122
self.assertEquals(len(delta.added), 1)
123
self.assertEquals(delta.added[0][0], 'dir')
124
self.failIf(delta.modified)
126
def check_branch(self):
127
"""After all the above changes, run the check and upgrade commands.
129
The upgrade should be a no-op."""
130
b = Branch.open(u'.')
131
mutter('branch has %d revisions', b.revno())
133
mutter('check branch...')
134
from bzrlib.check import check
125
138
class SubdirCommit(TestCaseWithTransport):
129
142
tree = self.make_branch_and_tree('.')
131
144
self.build_tree(['a/', 'b/'])
133
145
def set_contents(contents):
134
146
self.build_tree_contents([
135
147
('a/one', contents),
136
148
('b/two', contents),
137
149
('top', contents),
139
set_contents(b'old contents')
151
set_contents('old contents')
140
152
tree.smart_add(['.'])
141
153
tree.commit('first revision')
142
set_contents(b'new contents')
154
set_contents('new contents')
144
156
mutter('start selective subdir commit')
145
157
self.run_bzr(['commit', 'a', '-m', 'commit a only'])
147
159
new = b.repository.revision_tree(b.get_rev_id(2))
150
def get_text_by_path(tree, path):
151
return tree.get_file_text(path)
153
self.assertEqual(get_text_by_path(new, 'b/two'), b'old contents')
154
self.assertEqual(get_text_by_path(new, 'top'), b'old contents')
155
self.assertEqual(get_text_by_path(new, 'a/one'), b'new contents')
162
self.assertEqual(new.get_file_by_path('b/two').read(), 'old contents')
163
self.assertEqual(new.get_file_by_path('top').read(), 'old contents')
164
self.assertEqual(new.get_file_by_path('a/one').read(), 'new contents')
158
168
# commit from here should do nothing
159
self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'],
169
self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
161
170
v3 = b.repository.revision_tree(b.get_rev_id(3))
163
self.assertEqual(get_text_by_path(v3, 'b/two'), b'old contents')
164
self.assertEqual(get_text_by_path(v3, 'top'), b'old contents')
165
self.assertEqual(get_text_by_path(v3, 'a/one'), b'new contents')
172
self.assertEqual(v3.get_file_by_path('b/two').read(), 'old contents')
173
self.assertEqual(v3.get_file_by_path('top').read(), 'old contents')
174
self.assertEqual(v3.get_file_by_path('a/one').read(), 'new contents')
168
177
# commit in subdirectory commits whole tree
169
self.run_bzr(['commit', '-m', 'commit whole tree from subdir'],
178
self.run_bzr(['commit', '-m', 'commit whole tree from subdir'])
171
179
v4 = b.repository.revision_tree(b.get_rev_id(4))
173
self.assertEqual(get_text_by_path(v4, 'b/two'), b'new contents')
174
self.assertEqual(get_text_by_path(v4, 'top'), b'new contents')
181
self.assertEqual(v4.get_file_by_path('b/two').read(), 'new contents')
182
self.assertEqual(v4.get_file_by_path('top').read(), 'new contents')
177
185
# TODO: factor out some kind of assert_tree_state() method