Make VCS error messages and Storage test failures more descriptive
authorW. Trevor King <wking@drexel.edu>
Wed, 27 Jan 2010 15:27:27 +0000 (10:27 -0500)
committerW. Trevor King <wking@drexel.edu>
Wed, 27 Jan 2010 15:27:27 +0000 (10:27 -0500)
libbe/storage/base.py
libbe/storage/vcs/arch.py
libbe/storage/vcs/base.py
libbe/storage/vcs/darcs.py
libbe/storage/vcs/git.py

index 64ae3e75cffbf8f37d9d607da1720e35e00bc40c..423f141363d71a75347e8e1b518412fcfc698c96 100644 (file)
@@ -552,20 +552,29 @@ if TESTING == True:
 
         # this class will be the basis of tests for several classes,
         # so make sure we print the name of the class we're dealing with.
+        def _classname(self):
+            version = '?'
+            try:
+                if hasattr(self, 's'):
+                    version = self.s.version()
+            except:
+                pass
+            return '%s:%s' % (self.Class.__name__, version)
+
         def fail(self, msg=None):
             """Fail immediately, with the given message."""
             raise self.failureException, \
-                '(%s) %s' % (self.Class.__name__, msg)
+                '(%s) %s' % (self._classname(), msg)
 
         def failIf(self, expr, msg=None):
             "Fail the test if the expression is true."
             if expr: raise self.failureException, \
-                '(%s) %s' % (self.Class.__name__, msg)
+                '(%s) %s' % (self.classname(), msg)
 
         def failUnless(self, expr, msg=None):
             """Fail the test unless the expression is true."""
             if not expr: raise self.failureException, \
-                '(%s) %s' % (self.Class.__name__, msg)
+                '(%s) %s' % (self.classname(), msg)
 
         def setUp(self):
             """Set up test fixtures for Storage test case."""
index 74ba371cb740c711754a261cc2ac34ffd99625fd..bfccf5999136a5ccd42e1b60b5440d7cd0f105d5 100644 (file)
@@ -72,7 +72,8 @@ class Arch(base.VCS):
 
     def _vcs_version(self):
         status,output,error = self._u_invoke_client('--version')
-        return output
+        version = '\n'.join(output.splitlines()[:2])
+        return version
 
     def _vcs_detect(self, path):
         """Detect whether a directory is revision-controlled using Arch"""
@@ -307,7 +308,8 @@ class Arch(base.VCS):
             return base.VCS._vcs_get_file_contents(self, relpath)
 
     def _vcs_path(self, id, revision):
-        raise NotImplementedError
+        raise NotImplementedError(
+            'Too little Arch understanding at the moment...')
 
     def _vcs_commit(self, commitfile, allow_empty=False):
         if allow_empty == False:
@@ -356,7 +358,8 @@ class Arch(base.VCS):
         return '%s--%s' % (self._archive_project_name(), log)
 
     def _vcs_changed(self, revision):
-        raise NotImplementedError
+        raise NotImplementedError(
+            'Too little Arch understanding at the moment...')
 
 \f
 if libbe.TESTING == True:
index 8335cfa637edbd91130c4dedbe277bf93c73b824..337576e242a92eb3b7f777ce1f1727c072f8e075 100644 (file)
@@ -515,7 +515,7 @@ os.listdir(self.get_path("bugs")):
         """
         Does the path exist in a given revision? (True/False)
         """
-        raise NotImplementedError
+        raise NotImplementedError('Lazy BE developers')
 
     def _vcs_remove(self, path):
         """
index c6892b4dfa076d214ceb5ef1d17b8c51d7745b64..7c6f0696db850d9e5d41ae510ebd5648859b5408 100644 (file)
@@ -53,7 +53,7 @@ class Darcs(base.VCS):
 
     def _vcs_version(self):
         status,output,error = self._u_invoke_client('--version')
-        return output.rstrip('\n')
+        return output.strip()
 
     def version_cmp(self, *args):
         """
@@ -191,8 +191,8 @@ class Darcs(base.VCS):
             if path in children:
                 return True
             return False
-        # Darcs versions <= 2.3.1 lack the --patch option for 'show files'
-        raise NotImplementedError
+        raise NotImplementedError(
+            'Darcs versions <= 2.3.1 lack the --patch option for "show files"')
 
     def _vcs_listdir(self, path, revision):
         if self.version_cmp(2, 3, 1) == 1:
index 6d3aa87ee5c924920bd4ee0794983a79e7cc63ed..e2c1b839873dca31f26a45a8eac625b96b66769e 100644 (file)
@@ -49,7 +49,7 @@ class Git(base.VCS):
 
     def _vcs_version(self):
         status,output,error = self._u_invoke_client('--version')
-        return output
+        return output.strip()
 
     def _vcs_get_user_id(self):
         status,output,error = \