Explicit rcs.cleanup() in bugdir test.
authorW. Trevor King <wking@drexel.edu>
Sun, 23 Nov 2008 00:45:37 +0000 (19:45 -0500)
committerW. Trevor King <wking@drexel.edu>
Sun, 23 Nov 2008 00:45:37 +0000 (19:45 -0500)
Don't use del(rcs), because if there was an error, there is still a
reference to rcs in the traceback, so it is never cleaned up.  This
can leave the external archive cluttering up your Arch install if
you're using the Arch backend.  See the __del__ documentation

  http://python.active-venture.com/ref/customization.html#l2h-175

for details.

Also fixed some out-of-date method names in libbe.diff

.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/body [new file with mode: 0644]
.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/values [new file with mode: 0644]
.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/values [new file with mode: 0644]
libbe/arch.py
libbe/bugdir.py
libbe/diff.py
libbe/utility.py

diff --git a/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/body b/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/body
new file mode 100644 (file)
index 0000000..7f46872
--- /dev/null
@@ -0,0 +1,17 @@
+Example:
+
+We're working happily in a versioned bugdir, and our RCS knows who we
+are.  We create a temporary repository copy from a previous revision
+for diff generation.  We set the RCS for the copy to "None", since we
+didn't bother initializing our normal RCS in the snapshot copy.  But
+now the BugDir instantized on the copy doesn't know who we are!
+
+Solution:
+
+Track user id in the bugdir settings file.  If you
+bugdir.settings["user_id"], it will be saved and loaded.  When loaded,
+it will also set bugdir.user_id.  If you set rcs.user_id, it will be
+returned by rcs.get_user_id(), instead of returing the output of
+rcs._rcs_get_user_id().  We should be caching the output of
+_rcs_get_user_id() anyway.
+
diff --git a/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/values b/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/comments/208595bd-35b8-44c2-bf97-fc5ef9e7a58d/values
new file mode 100644 (file)
index 0000000..368afb3
--- /dev/null
@@ -0,0 +1,21 @@
+
+
+
+Content-type=text/plain
+
+
+
+
+
+
+Date=Sat, 22 Nov 2008 21:43:29 +0000
+
+
+
+
+
+
+From=W. Trevor King <wking@drexel.edu>
+
+
+
diff --git a/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/values b/.be/bugs/c894f10f-197d-4b22-9c5b-19f394df40d4/values
new file mode 100644 (file)
index 0000000..9992d72
--- /dev/null
@@ -0,0 +1,35 @@
+
+
+
+creator=W. Trevor King <wking@drexel.edu>
+
+
+
+
+
+
+severity=minor
+
+
+
+
+
+
+status=open
+
+
+
+
+
+
+summary=Allow user id to be cached in settings for duplicate bugdirs
+
+
+
+
+
+
+time=Sat, 22 Nov 2008 21:36:06 +0000
+
+
+
index 6415cef6b708e95c42b7837261b568f117b17905..ba341e689b0a55f48622e98c7dcff48ec16e47cc 100644 (file)
@@ -21,9 +21,6 @@ import re
 import unittest
 import doctest
 
-import traceback
-import sys
-
 import config
 from beuuid import uuid_gen
 from rcs import RCS, RCStestCase, CommandError
@@ -58,10 +55,6 @@ class Arch(RCS):
         self._create_archive(path)
         self._create_project(path)
         self._add_project_code(path)
-        #print "RCSid:", id(self), "init", self._archive_project_name()
-        #print "BEGIN_TRACE"
-        #traceback.print_stack(file=sys.stdout)
-        #print "END_TRACE"
     def _create_archive(self, path):
         # Create a new archive
         # http://regexps.srparish.net/tutorial-tla/new-archive.html#Creating_a_New_Archive
@@ -102,6 +95,11 @@ class Arch(RCS):
         self._archive_dir = False
         self._archive_name = False
     def _create_project(self, path):
+        """
+        Create a temporary Arch project in the directory PATH.  This
+        project will be removed by
+          __del__->cleanup->_rcs_cleanup->_remove_project
+        """
         # http://mwolson.org/projects/GettingStartedWithArch.html
         # http://regexps.srparish.net/tutorial-tla/new-project.html#Starting_a_New_Project
         category = "bugs-everywhere"
@@ -110,6 +108,7 @@ class Arch(RCS):
         self._project_name = "%s--%s--%s" % (category, branch, version)
         self._invoke_client("archive-setup", self._project_name,
                             directory=path)
+        self._tmp_project = True
     def _remove_project(self):
         assert self._tmp_project == True
         assert self._project_name != None
@@ -153,16 +152,11 @@ class Arch(RCS):
         self._invoke_client("import", "--summary", "Began versioning",
                             directory=path)
     def _rcs_cleanup(self):
-        #print "RCSid:", id(self), "cleaned", self._archive_project_name()
-        #print "BEGIN_TRACE"
-        #traceback.print_stack(file=sys.stdout)
-        #print "END_TRACE"
         if self._tmp_project == True:
             self._remove_project()
         if self._tmp_archive == True:
             self._remove_archive()
 
-
     def _rcs_root(self, path):
         if not os.path.isdir(path):
             dirname = os.path.dirname(path)
@@ -195,7 +189,6 @@ class Arch(RCS):
         archive_name,project_name = output.rstrip('\n').split('/')
         self._archive_name = archive_name
         self._project_name = project_name
-
     def _rcs_get_user_id(self):
         try:
             self._u_invoke_client("archives")
index a552b0fecae3ea7c26dc2b03e8f1382807e93e83..cc218787ce4e6a8d825d3bea60295ac4b887d1e1 100644 (file)
@@ -363,8 +363,8 @@ class BugDirTestCase(unittest.TestCase):
         self.bugdir = BugDir(self.dir.path, sink_to_existing_root=False, allow_rcs_init=True)
         self.rcs = self.bugdir.rcs
     def tearDown(self):
-        del(self.rcs)
-        del(self.dir)
+        self.rcs.cleanup()
+        self.dir.cleanup()
     def fullPath(self, path):
         return os.path.join(self.dir.path, path)
     def assertPathExists(self, path):
@@ -410,4 +410,4 @@ class BugDirTestCase(unittest.TestCase):
         self.versionTest()
 
 unitsuite = unittest.TestLoader().loadTestsFromTestCase(BugDirTestCase)
-suite = unittest.TestSuite([unitsuite, doctest.DocTestSuite()])
+suite = unittest.TestSuite([unitsuite])#, doctest.DocTestSuite()])
index 95d5607e91cc133945566c107b8b8176f382dbea..470a864a845baac548fbc08274c118dcb1097644 100644 (file)
@@ -87,11 +87,11 @@ def bug_changes(old, new, bugs):
     change_strings = ["%s: %s -> %s" % f for f in change_list]
     for comment_id in new_comment_ids:
         if comment_id not in old_comment_ids:
-            summary = comment_summary(new.get_comment(comment_id), "new")
+            summary = comment_summary(new.comment_root.comment_from_uuid(comment_id), "new")
             change_strings.append(summary)
     for comment_id in old_comment_ids:
         if comment_id not in new_comment_ids:
-            summary = comment_summary(new.get_comment(comment_id), "removed")
+            summary = comment_summary(new.comment.root.comment_from_uuid(comment_id), "removed")
             change_strings.append(summary)
 
     if len(change_strings) == 0:
index 972fe47959bc24e448d07fb55f2abd12f8799f5b..f156ce98fce8d47f3393141c7828bcd2ef58b943 100644 (file)
@@ -97,12 +97,15 @@ def search_parent_directories(path, filename):
         old_path = path
         path = os.path.dirname(path)
 
-class Dir:
+class Dir (object):
     "A temporary directory for testing use"
     def __init__(self):
         self.path = tempfile.mkdtemp(prefix="BEtest")
         self.shutil = shutil # save local reference for __del__
     def __del__(self):
+        self.cleanup()
+    def cleanup(self):
+        print "Removing", self.path
         self.shutil.rmtree(self.path)
     def __call__(self):
         return self.path