23
# TODO: remove unittest dependency; put that stuff inside the test suite
23
25
from copy import deepcopy
26
from cStringIO import StringIO
25
from cStringIO import StringIO
28
from stat import S_ISDIR
26
29
from unittest import TestSuite
39
42
from bzrlib.store.revision.text import TextRevisionStore
40
43
from bzrlib.store.text import TextStore
41
44
from bzrlib.store.versioned import WeaveStore
42
from bzrlib.symbol_versioning import *
43
45
from bzrlib.trace import mutter
44
46
from bzrlib.transactions import WriteTransaction
45
47
from bzrlib.transport import get_transport
93
95
if not allow_unsupported and not format.is_supported():
94
96
# see open_downlevel to open legacy branches.
95
raise errors.UnsupportedFormatError(
96
'sorry, format %s not supported' % format,
97
['use a different bzr version',
98
'or remove the .bzr directory'
99
' and "bzr init" again'])
97
raise errors.UnsupportedFormatError(format=format)
101
99
def clone(self, url, revision_id=None, basis=None, force_new_repo=False):
102
100
"""Clone this bzrdir and its contents to url verbatim.
1381
class ScratchDir(BzrDir6):
1382
"""Special test class: a bzrdir that cleans up itself..
1384
>>> d = ScratchDir()
1385
>>> base = d.transport.base
1388
>>> b.transport.__del__()
1393
def __init__(self, files=[], dirs=[], transport=None):
1394
"""Make a test branch.
1396
This creates a temporary directory and runs init-tree in it.
1398
If any files are listed, they are created in the working copy.
1400
if transport is None:
1401
transport = bzrlib.transport.local.ScratchTransport()
1402
# local import for scope restriction
1403
BzrDirFormat6().initialize(transport.base)
1404
super(ScratchDir, self).__init__(transport, BzrDirFormat6())
1405
self.create_repository()
1406
self.create_branch()
1407
self.create_workingtree()
1409
super(ScratchDir, self).__init__(transport, BzrDirFormat6())
1411
# BzrBranch creates a clone to .bzr and then forgets about the
1412
# original transport. A ScratchTransport() deletes itself and
1413
# everything underneath it when it goes away, so we need to
1414
# grab a local copy to prevent that from happening
1415
self._transport = transport
1418
self._transport.mkdir(d)
1421
self._transport.put(f, 'content of %s' % f)
1425
>>> orig = ScratchDir(files=["file1", "file2"])
1426
>>> os.listdir(orig.base)
1427
[u'.bzr', u'file1', u'file2']
1428
>>> clone = orig.clone()
1429
>>> if os.name != 'nt':
1430
... os.path.samefile(orig.base, clone.base)
1432
... orig.base == clone.base
1435
>>> os.listdir(clone.base)
1436
[u'.bzr', u'file1', u'file2']
1438
from shutil import copytree
1439
from bzrlib.osutils import mkdtemp
1442
copytree(self.base, base, symlinks=True)
1444
transport=bzrlib.transport.local.ScratchTransport(base))
1447
1379
class Converter(object):
1448
1380
"""Converts a disk format object from one format to another."""