Rev 3207: (vila) Fix 123363 by deleting useless log files and test work dirs in in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Jan 30 10:03:17 GMT 2008
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3207
revision-id:pqm at pqm.ubuntu.com-20080130100306-p0uqnxt3hodnyiej
parent: pqm at pqm.ubuntu.com-20080130074652-2t36df3w0l3jhwyf
parent: v.ladeuil+lp at free.fr-20080130082023-15b8pg5idmk7pnun
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2008-01-30 10:03:06 +0000
message:
(vila) Fix 123363 by deleting useless log files and test work dirs in
/tmp
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3206.1.1
revision-id:v.ladeuil+lp at free.fr-20080130082023-15b8pg5idmk7pnun
parent: pqm at pqm.ubuntu.com-20080130074652-2t36df3w0l3jhwyf
parent: v.ladeuil+lp at free.fr-20080130081525-i47iawe2ghcowoxt
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: trunk
timestamp: Wed 2008-01-30 09:20:23 +0100
message:
Fix 123363 by deleting useless log files and test work dirs in /tmp
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3199.1.9
revision-id:v.ladeuil+lp at free.fr-20080130081525-i47iawe2ghcowoxt
parent: v.ladeuil+lp at free.fr-20080129170643-rz3wt7z5ryw0s4se
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Wed 2008-01-30 09:15:25 +0100
message:
Aaron's review feedback.
* bzrlib/builtins.py:
(cmd_merge._do_preview): Ensure the TransformPreview.finalize is
always called.
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
------------------------------------------------------------
revno: 3199.1.8
revision-id:v.ladeuil+lp at free.fr-20080129170643-rz3wt7z5ryw0s4se
parent: v.ladeuil+lp at free.fr-20080129160337-txsu01vjnpipm5bd
parent: pqm at pqm.ubuntu.com-20080129045844-u41ywp910i6jv8bz
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 18:06:43 +0100
message:
merge bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/client.py client.py-20061116014825-2k6ada6xgulslami-1
bzrlib/status.py status.py-20050505062338-431bfa63ec9b19e6
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
------------------------------------------------------------
revno: 3199.1.7
revision-id:v.ladeuil+lp at free.fr-20080129160337-txsu01vjnpipm5bd
parent: v.ladeuil+lp at free.fr-20080129155823-1ext6bebc09p9rvx
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 17:03:37 +0100
message:
Update NEWS.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3199.1.6
revision-id:v.ladeuil+lp at free.fr-20080129155823-1ext6bebc09p9rvx
parent: v.ladeuil+lp at free.fr-20080129151631-vqjd13tb405mobx6
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 16:58:23 +0100
message:
Fiz last leaking tmp dir.
* bzrlib/tests/test_diff.py:
(TestDiffFromTool.test_from_string): Split the test and cleanup.
modified:
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3199.1.5
revision-id:v.ladeuil+lp at free.fr-20080129151631-vqjd13tb405mobx6
parent: v.ladeuil+lp at free.fr-20080129132736-nai2jpv02r2wltgc
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 16:16:31 +0100
message:
Fix two more leaking tmp dirs, by reworking TransformPreview lock handling.
* bzrlib/tests/test_transform.py:
(TestTransformMerge): Revert previous patch and cleanly call
preview.finalize now that we can.
* bzrlib/tests/test_merge.py:
(TestMerge.test_make_preview_transform): Catch TransformPreview
leak.
* bzrlib/builtins.py:
(cmd_merge._do_preview): Finalize the TransformPreview or the
limbodir will stay in /tmp.
* bzrlib/transform.py:
(TreeTransformBase.__init__): Create the _deletiondir since it's
reffered to by finalize.
(TreeTransformBase.finalize): Delete the dir only if _deletiondir
is set.
(TreeTransform.__init__): Use a temp var for deletiondir and set
the attribute after the base class __init__ has been called.
(TransformPreview.__init__): Read locks the tree since finalize
wants to unlock it (as suggested by Aaron).
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3199.1.4
revision-id:v.ladeuil+lp at free.fr-20080129132736-nai2jpv02r2wltgc
parent: v.ladeuil+lp at free.fr-20080129115331-n7nl3ljtkepljzwi
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 14:27:36 +0100
message:
Fix 16 leaked tmp dirs. Probably indicates a lock handling problem with TransformPreview
* bzrlib/tests/test_transform.py:
(addPreviewCleanup): New method cleaning the TransformPreview
limbdodir leaked by the tests.
* bzrlib/transform.py:
(TransformPreview.__init__): Use a specific prefix for the
limbodir to make leaks more obvious.
modified:
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3199.1.3
revision-id:v.ladeuil+lp at free.fr-20080129115331-n7nl3ljtkepljzwi
parent: v.ladeuil+lp at free.fr-20080129084053-sunwf549ox6zczqr
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 12:53:31 +0100
message:
Fix two more leaked tmp dirs.
* bzrlib/tests/blackbox/test_outside_wt.py:
(TestOutsideWT.test_cwd_log,
TestOutsideWT.test_diff_outside_tree): Clean up tmp dir.
modified:
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
------------------------------------------------------------
revno: 3199.1.2
revision-id:v.ladeuil+lp at free.fr-20080129084053-sunwf549ox6zczqr
parent: v.ladeuil+lp at free.fr-20080129082119-gerd998iwffytp6i
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 09:40:53 +0100
message:
Fix two more leaked log files.
* bzrlib/tests/test_http.py:
(TestHttpProxyWhiteBox.tearDown): Call the base class tearDown.
modified:
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
------------------------------------------------------------
revno: 3199.1.1
revision-id:v.ladeuil+lp at free.fr-20080129082119-gerd998iwffytp6i
parent: pqm at pqm.ubuntu.com-20080123180146-9pkott489spjwv8q
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 123363-tmp-pollution
timestamp: Tue 2008-01-29 09:21:19 +0100
message:
Get rid of ~1000 useless log files out of 10.000 tests in /tmp.
* bzrlib/tests/test_selftest.py:
(TestRunner.test_skipped_log_deleted,
TestRunner.test_not_aplicable_log_deleted,
TestRunner.test_known_failure_log_deleted): Add tests checking
that the log is deleted for skipped, not applicable and known
failures tests.
* bzrlib/tests/__init__.py:
(ExtendedTestResult.addError, ExtendedTestResult.addFailure,
ExtendedTestResult.addSuccess): Keep log only on true failures and
errors.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'NEWS'
--- a/NEWS 2008-01-29 06:56:51 +0000
+++ b/NEWS 2008-01-30 08:20:23 +0000
@@ -63,6 +63,9 @@
* Unknown hostnames when connecting to a ``bzr://`` URL no longer cause
tracebacks. (Andrew Bennetts, #182849)
+ * Stop polluting /tmp when running selftest.
+ (Vincent Ladeuil, #123623)
+
API BREAKS:
* Classes implementing Merge types like Merge3Merger must now accept (and
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2008-01-25 18:19:06 +0000
+++ b/bzrlib/builtins.py 2008-01-30 08:15:25 +0000
@@ -2874,9 +2874,12 @@
from bzrlib.diff import show_diff_trees
tree_merger = merger.make_merger()
tt = tree_merger.make_preview_transform()
- result_tree = tt.get_preview_tree()
- show_diff_trees(merger.this_tree, result_tree, self.outf, old_label='',
- new_label='')
+ try:
+ result_tree = tt.get_preview_tree()
+ show_diff_trees(merger.this_tree, result_tree, self.outf,
+ old_label='', new_label='')
+ finally:
+ tt.finalize()
def _do_merge(self, merger, change_reporter, allow_pending, verified):
merger.change_reporter = change_reporter
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2008-01-23 16:25:18 +0000
+++ b/bzrlib/tests/__init__.py 2008-01-29 08:21:19 +0000
@@ -275,6 +275,7 @@
elif isinstance(err[1], UnavailableFeature):
return self.addNotSupported(test, err[1].args[0])
else:
+ self._cleanupLogFile(test)
unittest.TestResult.addError(self, test, err)
self.error_count += 1
self.report_error(test, err)
@@ -291,6 +292,7 @@
if isinstance(err[1], KnownFailure):
return self._addKnownFailure(test, err)
else:
+ self._cleanupLogFile(test)
unittest.TestResult.addFailure(self, test, err)
self.failure_count += 1
self.report_failure(test, err)
@@ -310,6 +312,7 @@
self._formatTime(benchmark_time),
test.id()))
self.report_success(test)
+ self._cleanupLogFile(test)
unittest.TestResult.addSuccess(self, test)
def _testConcluded(self, test):
@@ -317,7 +320,7 @@
Called regardless of whether it succeded, failed, etc.
"""
- self._cleanupLogFile(test)
+ pass
def _addKnownFailure(self, test, err):
self.known_failure_count += 1
@@ -1310,6 +1313,8 @@
import bzrlib.trace
bzrlib.trace._trace_file.flush()
if self._log_contents:
+ # XXX: this can hardly contain the content flushed above --vila
+ # 20080128
return self._log_contents
if self._log_file_name is not None:
logfile = open(self._log_file_name)
=== modified file 'bzrlib/tests/blackbox/test_outside_wt.py'
--- a/bzrlib/tests/blackbox/test_outside_wt.py 2007-12-12 07:05:52 +0000
+++ b/bzrlib/tests/blackbox/test_outside_wt.py 2008-01-29 11:53:31 +0000
@@ -21,18 +21,23 @@
import os
import tempfile
-from bzrlib.tests import ChrootedTestCase
-from bzrlib.osutils import getcwd
-import bzrlib.urlutils as urlutils
-
-
-class TestOutsideWT(ChrootedTestCase):
+from bzrlib import (
+ osutils,
+ tests,
+ urlutils,
+ )
+
+
+class TestOutsideWT(tests.ChrootedTestCase):
"""Test that bzr gives proper errors outside of a working tree."""
def test_cwd_log(self):
- os.chdir(tempfile.mkdtemp())
+ tmp_dir = tempfile.mkdtemp()
+ self.addCleanup(lambda: osutils.rmtree(tmp_dir))
+ os.chdir(tmp_dir)
out, err = self.run_bzr('log', retcode=3)
- self.assertEqual(u'bzr: ERROR: Not a branch: "%s/".\n' % (getcwd(),),
+ self.assertEqual(u'bzr: ERROR: Not a branch: "%s/".\n'
+ % (osutils.getcwd(),),
err)
def test_url_log(self):
@@ -41,14 +46,16 @@
self.assertEqual(u'bzr: ERROR: Not a branch:'
u' "%s".\n' % url, err)
- def test_diff_ouside_tree(self):
- os.chdir(tempfile.mkdtemp())
+ def test_diff_outside_tree(self):
+ tmp_dir = tempfile.mkdtemp()
+ self.addCleanup(lambda: osutils.rmtree(tmp_dir))
+ os.chdir(tmp_dir)
self.run_bzr('init branch1')
self.run_bzr(['commit', '-m', 'nothing',
'--unchanged', 'branch1'])
self.run_bzr(['commit', '-m', 'nothing',
'--unchanged', 'branch1'])
- this_dir = getcwd()
+ this_dir = osutils.getcwd()
branch2 = "%s/branch2" % (this_dir,)
# -r X..Y
out, err = self.run_bzr('diff -r revno:2:branch2..revno:1', retcode=3)
=== modified file 'bzrlib/tests/test_diff.py'
--- a/bzrlib/tests/test_diff.py 2008-01-03 19:12:30 +0000
+++ b/bzrlib/tests/test_diff.py 2008-01-29 15:58:23 +0000
@@ -1246,7 +1246,10 @@
self.addCleanup(diff_obj.finish)
self.assertEqual(['diff', '%(old_path)s', '%(new_path)s'],
diff_obj.command_template)
+
+ def test_from_string_u5(self):
diff_obj = DiffFromTool.from_string('diff -u\\ 5', None, None, None)
+ self.addCleanup(diff_obj.finish)
self.assertEqual(['diff', '-u 5', '%(old_path)s', '%(new_path)s'],
diff_obj.command_template)
self.assertEqual(['diff', '-u 5', 'old-path', 'new-path'],
=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py 2008-01-03 15:12:58 +0000
+++ b/bzrlib/tests/test_http.py 2008-01-29 08:40:53 +0000
@@ -1048,7 +1048,7 @@
self.assertEqual(l[2], (4096, '0004'))
self.assertEqual(l[3], (8192, '0008'))
# The server will refuse to serve the first request (too much ranges),
- # a second request will succeeds.
+ # a second request will succeed.
self.assertEqual(2, self.get_readonly_server().GET_request_nb)
@@ -1064,6 +1064,7 @@
def tearDown(self):
self._restore_env()
+ tests.TestCase.tearDown(self)
def _install_env(self, env):
for name, value in env.iteritems():
=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py 2008-01-05 23:01:50 +0000
+++ b/bzrlib/tests/test_merge.py 2008-01-29 15:16:31 +0000
@@ -385,6 +385,7 @@
merger.merge_type = _mod_merge.Merge3Merger
tree_merger = merger.make_merger()
tt = tree_merger.make_preview_transform()
+ self.addCleanup(tt.finalize)
preview_tree = tt.get_preview_tree()
tree_file = this_tree.get_file('file-id')
try:
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2008-01-21 15:16:38 +0000
+++ b/bzrlib/tests/test_selftest.py 2008-01-29 08:21:19 +0000
@@ -1221,6 +1221,12 @@
revision_id = workingtree.get_parent_ids()[0]
self.assertEndsWith(output_string.rstrip(), revision_id)
+ def assertLogDeleted(self, test):
+ log = test._get_log()
+ self.assertEqual("DELETED log file to reduce memory footprint", log)
+ self.assertEqual('', test._log_contents)
+ self.assertIs(None, test._log_file_name)
+
def test_success_log_deleted(self):
"""Successful tests have their log deleted"""
@@ -1234,10 +1240,55 @@
test = LogTester('test_success')
result = self.run_test_runner(runner, test)
- log = test._get_log()
- self.assertEqual("DELETED log file to reduce memory footprint", log)
- self.assertEqual('', test._log_contents)
- self.assertIs(None, test._log_file_name)
+ self.assertLogDeleted(test)
+
+ def test_skipped_log_deleted(self):
+ """Skipped tests have their log deleted"""
+
+ class LogTester(TestCase):
+
+ def test_skipped(self):
+ self.log('this will be removed\n')
+ raise tests.TestSkipped()
+
+ sio = cStringIO.StringIO()
+ runner = TextTestRunner(stream=sio)
+ test = LogTester('test_skipped')
+ result = self.run_test_runner(runner, test)
+
+ self.assertLogDeleted(test)
+
+ def test_not_aplicable_log_deleted(self):
+ """Not applicable tests have their log deleted"""
+
+ class LogTester(TestCase):
+
+ def test_not_applicable(self):
+ self.log('this will be removed\n')
+ raise tests.TestNotApplicable()
+
+ sio = cStringIO.StringIO()
+ runner = TextTestRunner(stream=sio)
+ test = LogTester('test_not_applicable')
+ result = self.run_test_runner(runner, test)
+
+ self.assertLogDeleted(test)
+
+ def test_known_failure_log_deleted(self):
+ """Know failure tests have their log deleted"""
+
+ class LogTester(TestCase):
+
+ def test_known_failure(self):
+ self.log('this will be removed\n')
+ raise tests.KnownFailure()
+
+ sio = cStringIO.StringIO()
+ runner = TextTestRunner(stream=sio)
+ test = LogTester('test_known_failure')
+ result = self.run_test_runner(runner, test)
+
+ self.assertLogDeleted(test)
def test_fail_log_kept(self):
"""Failed tests have their log kept"""
=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py 2008-01-17 02:16:39 +0000
+++ b/bzrlib/tests/test_transform.py 2008-01-29 15:16:31 +0000
@@ -22,6 +22,7 @@
from bzrlib import (
errors,
generate_ids,
+ osutils,
progress,
revision as _mod_revision,
symbol_versioning,
@@ -1232,6 +1233,7 @@
class TestTransformMerge(TestCaseInTempDir):
+
def test_text_merge(self):
root_id = generate_ids.gen_root_id()
base = TransformGroup("base", root_id)
@@ -1832,20 +1834,25 @@
def get_empty_preview(self):
repository = self.make_repository('repo')
tree = repository.revision_tree(_mod_revision.NULL_REVISION)
- return TransformPreview(tree)
+ preview = TransformPreview(tree)
+ self.addCleanup(preview.finalize)
+ return preview
def test_transform_preview(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
def test_transform_preview_tree(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
preview.get_preview_tree()
def test_transform_new_file(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
preview.new_file('file2', preview.root, 'content B\n', 'file2-id')
preview_tree = preview.get_preview_tree()
self.assertEqual(preview_tree.kind('file2-id'), 'file')
@@ -1855,6 +1862,7 @@
def test_diff_preview_tree(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
preview.new_file('file2', preview.root, 'content B\n', 'file2-id')
preview_tree = preview.get_preview_tree()
out = StringIO()
@@ -1867,6 +1875,7 @@
def test_transform_conflicts(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
preview.new_file('a', preview.root, 'content 2')
resolve_conflicts(preview)
trans_id = preview.trans_id_file_id('a-id')
@@ -1875,6 +1884,7 @@
def get_tree_and_preview_tree(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
a_trans_id = preview.trans_id_file_id('a-id')
preview.delete_contents(a_trans_id)
preview.create_file('b content', a_trans_id)
@@ -1932,6 +1942,7 @@
def test_kind(self):
revision_tree = self.create_tree()
preview = TransformPreview(revision_tree)
+ self.addCleanup(preview.finalize)
preview.new_file('file', preview.root, 'contents', 'file-id')
preview.new_directory('directory', preview.root, 'dir-id')
preview_tree = preview.get_preview_tree()
=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py 2008-01-16 13:09:30 +0000
+++ b/bzrlib/transform.py 2008-01-29 15:16:31 +0000
@@ -81,6 +81,7 @@
object.__init__(self)
self._tree = tree
self._limbodir = limbodir
+ self._deletiondir = None
self._id_number = 0
# mapping of trans_id -> new basename
self._new_name = {}
@@ -158,7 +159,8 @@
# We don't especially care *why* the dir is immortal.
raise ImmortalLimbo(self._limbodir)
try:
- os.rmdir(self._deletiondir)
+ if self._deletiondir is not None:
+ os.rmdir(self._deletiondir)
except OSError:
raise errors.ImmortalPendingDeletion(self._deletiondir)
finally:
@@ -1136,19 +1138,20 @@
except OSError, e:
if e.errno == errno.EEXIST:
raise ExistingLimbo(limbodir)
- self._deletiondir = urlutils.local_path_from_url(
+ deletiondir = urlutils.local_path_from_url(
control_files.controlfilename('pending-deletion'))
try:
- os.mkdir(self._deletiondir)
+ os.mkdir(deletiondir)
except OSError, e:
if e.errno == errno.EEXIST:
- raise errors.ExistingPendingDeletion(self._deletiondir)
+ raise errors.ExistingPendingDeletion(deletiondir)
except:
tree.unlock()
raise
TreeTransformBase.__init__(self, tree, limbodir, pb,
tree.case_sensitive)
+ self._deletiondir = deletiondir
def apply(self, no_conflicts=False, _mover=None):
"""Apply all changes to the inventory and filesystem.
@@ -1321,7 +1324,8 @@
"""
def __init__(self, tree, pb=DummyProgress(), case_sensitive=True):
- limbodir = tempfile.mkdtemp()
+ tree.lock_read()
+ limbodir = tempfile.mkdtemp(prefix='bzr-limbo-')
TreeTransformBase.__init__(self, tree, limbodir, pb, case_sensitive)
def canonical_path(self, path):
More information about the bazaar-commits
mailing list