changeset 716:38ebf7714cdf

requiresoption: raise SkipTest if available This has the unfortunate (I guess?) side effect that you can no longer use pure unittest to run skipped tests if nose or unittest2 is installed.
author Augie Fackler <durin42@gmail.com>
date Sat, 02 Oct 2010 16:44:37 -0500
parents c33293a34752
children ae5968ffe6fe
files tests/test_util.py
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -25,6 +25,14 @@ from mercurial import node
 from mercurial import ui
 from mercurial import extensions
 
+try:
+    from unittest2 import SkipTest
+except ImportError:
+    try:
+        from nose import SkipTest
+    except ImportError:
+        SkipTest = None
+
 from hgsubversion import util
 
 # Documentation for Subprocess.Popen() says:
@@ -94,6 +102,14 @@ def requiresoption(option):
         for entry in cmdutil.findcmd('clone', commands.table)[1][1]:
             if entry[1] == option:
                 return fn
+        # no match found, so skip
+        if SkipTest:
+            def skip(*args, **kwargs):
+                raise SkipTest('test requires clone to accept %s' % option)
+            skip.__name__ = fn.__name__
+            return skip
+        # no skipping support, so erase decorated method
+        return
     if not isinstance(option, str):
         raise TypeError('requiresoption takes a string argument')
     return decorator