35
35
from bzrlib.selftest import TestUtil
36
36
from bzrlib.selftest.TestUtil import TestLoader, TestSuite
37
37
from bzrlib.selftest.treeshape import build_tree_contents
38
from bzrlib.errors import BzrError
39
40
MODULES_TO_TEST = []
40
41
MODULES_TO_DOCTEST = []
263
264
self._cleanups.append(callable)
265
266
def _cleanEnvironment(self):
266
self.oldenv = os.environ.get('HOME', None)
267
os.environ['HOME'] = os.getcwd()
268
self.bzr_email = os.environ.get('BZREMAIL')
269
if self.bzr_email is not None:
270
del os.environ['BZREMAIL']
271
self.email = os.environ.get('EMAIL')
272
if self.email is not None:
273
del os.environ['EMAIL']
269
'APPDATA': os.getcwd(),
274
274
self.addCleanup(self._restoreEnvironment)
275
for name, value in new_env.iteritems():
276
self._captureVar(name, value)
279
def _captureVar(self, name, newvalue):
280
"""Set an environment variable, preparing it to be reset when finished."""
281
self.__old_env[name] = os.environ.get(name, None)
283
if name in os.environ:
286
os.environ[name] = newvalue
289
def _restoreVar(name, value):
291
if name in os.environ:
294
os.environ[name] = value
276
296
def _restoreEnvironment(self):
277
os.environ['HOME'] = self.oldenv
278
if os.environ.get('BZREMAIL') is not None:
279
del os.environ['BZREMAIL']
280
if self.bzr_email is not None:
281
os.environ['BZREMAIL'] = self.bzr_email
282
if os.environ.get('EMAIL') is not None:
283
del os.environ['EMAIL']
284
if self.email is not None:
285
os.environ['EMAIL'] = self.email
297
for name, value in self.__old_env.iteritems():
298
self._restoreVar(name, value)
287
300
def tearDown(self):
288
301
self._runCleanups()
483
496
os.chdir(_currentdir)
484
497
self.addCleanup(_leaveDirectory)
486
def build_tree(self, shape):
499
def build_tree(self, shape, line_endings='native'):
487
500
"""Build a test tree according to a pattern.
489
502
shape is a sequence of file specifications. If the final
490
503
character is '/', a directory is created.
492
505
This doesn't add anything to a branch.
506
:param line_endings: Either 'binary' or 'native'
507
in binary mode, exact contents are written
508
in native mode, the line endings match the
509
default platform endings.
494
511
# XXX: It's OK to just create them using forward slashes on windows?
495
512
for name in shape:
497
514
if name[-1] == '/':
498
515
os.mkdir(name[:-1])
517
if line_endings == 'binary':
519
elif line_endings == 'native':
522
raise BzrError('Invalid line ending request %r' % (line_endings,))
501
523
print >>f, "contents of", name