14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
from cStringIO import StringIO
28
28
from bzrlib.bzrdir import BzrDir
29
29
from bzrlib.lockdir import LockDir
30
30
from bzrlib.mutabletree import needs_tree_write_lock
31
from bzrlib.symbol_versioning import zero_thirteen
32
31
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
33
32
from bzrlib.transport import get_transport
34
33
from bzrlib.workingtree import (
82
81
workingtree.WorkingTreeFormat.set_default_format(old_format)
83
82
self.assertEqual(old_format, workingtree.WorkingTreeFormat.get_default_format())
85
tree = self.make_branch_and_tree('.')
86
open_direct = workingtree.WorkingTree.open('.')
87
self.assertEqual(tree.basedir, open_direct.basedir)
88
open_no_args = workingtree.WorkingTree.open()
89
self.assertEqual(tree.basedir, open_no_args.basedir)
91
def test_open_containing(self):
92
tree = self.make_branch_and_tree('.')
93
open_direct, relpath = workingtree.WorkingTree.open_containing('.')
94
self.assertEqual(tree.basedir, open_direct.basedir)
95
self.assertEqual('', relpath)
96
open_no_args, relpath = workingtree.WorkingTree.open_containing()
97
self.assertEqual(tree.basedir, open_no_args.basedir)
98
self.assertEqual('', relpath)
99
open_subdir, relpath = workingtree.WorkingTree.open_containing('subdir')
100
self.assertEqual(tree.basedir, open_subdir.basedir)
101
self.assertEqual('subdir', relpath)
86
104
class SampleTreeFormat(workingtree.WorkingTreeFormat):
87
105
"""A sample format
89
this format is initializable, unsupported to aid in testing the
107
this format is initializable, unsupported to aid in testing the
90
108
open and open_downlevel routines.
124
142
found_format = workingtree.WorkingTreeFormat.find_format(dir)
125
143
self.failUnless(isinstance(found_format, format.__class__))
126
144
check_format(workingtree.WorkingTreeFormat3(), "bar")
128
146
def test_find_format_no_tree(self):
129
147
dir = bzrdir.BzrDirMetaFormat1().initialize('.')
130
148
self.assertRaises(errors.NoWorkingTree,
175
193
t = control.get_workingtree_transport(None)
176
194
self.assertEqualDiff('Bazaar-NG Working Tree format 3',
177
195
t.get('format').read())
178
self.assertEqualDiff(t.get('inventory').read(),
196
self.assertEqualDiff(t.get('inventory').read(),
179
197
'<inventory format="5">\n'
180
198
'</inventory>\n',
184
202
self.assertFalse(t.has('inventory.basis'))
185
203
# no last-revision file means 'None' or 'NULLREVISION'
186
204
self.assertFalse(t.has('last-revision'))
187
# TODO RBC 20060210 do a commit, check the inventory.basis is created
205
# TODO RBC 20060210 do a commit, check the inventory.basis is created
188
206
# correctly and last-revision file becomes present.
190
208
def test_uses_lockdir(self):
191
209
"""WorkingTreeFormat3 uses its own LockDir:
193
211
- lock is a directory
194
212
- when the WorkingTree is locked, LockDir can see that
217
235
control.create_repository()
218
236
control.create_branch()
219
237
tree = workingtree.WorkingTreeFormat3().initialize(control)
220
tree._control_files._transport.delete("pending-merges")
238
tree._transport.delete("pending-merges")
221
239
self.assertEqual([], tree.get_parent_ids())
251
269
self.assertEqual(list(tree.conflicts()), [expected])
254
class TestNonFormatSpecificCode(TestCaseWithTransport):
255
"""This class contains tests of workingtree that are not format specific."""
257
def test_gen_file_id(self):
258
file_id = self.applyDeprecated(zero_thirteen, workingtree.gen_file_id,
260
self.assertStartsWith(file_id, 'filename-')
262
def test_gen_root_id(self):
263
file_id = self.applyDeprecated(zero_thirteen, workingtree.gen_root_id)
264
self.assertStartsWith(file_id, 'tree_root-')
267
272
class InstrumentedTree(object):
268
273
"""A instrumented tree to check the needs_tree_write_lock decorator."""