--- /dev/null
+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.
+
--- /dev/null
+
+
+
+Content-type=text/plain
+
+
+
+
+
+
+Date=Sat, 22 Nov 2008 21:43:29 +0000
+
+
+
+
+
+
+From=W. Trevor King <wking@drexel.edu>
+
+
+
--- /dev/null
+
+
+
+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
+
+
+
import unittest
import doctest
-import traceback
-import sys
-
import config
from beuuid import uuid_gen
from rcs import RCS, RCStestCase, CommandError
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
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"
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
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)
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")
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):
self.versionTest()
unitsuite = unittest.TestLoader().loadTestsFromTestCase(BugDirTestCase)
-suite = unittest.TestSuite([unitsuite, doctest.DocTestSuite()])
+suite = unittest.TestSuite([unitsuite])#, doctest.DocTestSuite()])
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:
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