Mercurial > hgsubversion
comparison tests/test_util.py @ 719:ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
| author | Augie Fackler <durin42@gmail.com> |
|---|---|
| date | Mon, 04 Oct 2010 23:02:15 -0500 |
| parents | ae5968ffe6fe |
| children | a19a208c085b |
comparison
equal
deleted
inserted
replaced
| 718:db0eb6237420 | 719:ae52a3b30cfb |
|---|---|
| 96 } | 96 } |
| 97 | 97 |
| 98 FIXTURES = os.path.join(os.path.abspath(os.path.dirname(__file__)), | 98 FIXTURES = os.path.join(os.path.abspath(os.path.dirname(__file__)), |
| 99 'fixtures') | 99 'fixtures') |
| 100 | 100 |
| 101 | |
| 102 def _makeskip(name, message): | |
| 103 def skip(*args, **kwargs): | |
| 104 raise SkipTest(message) | |
| 105 skip.__name__ = name | |
| 106 return skip | |
| 107 | |
| 108 | |
| 101 def requiresoption(option): | 109 def requiresoption(option): |
| 102 '''Skip a test if commands.clone does not take the specified option.''' | 110 '''Skip a test if commands.clone does not take the specified option.''' |
| 103 def decorator(fn): | 111 def decorator(fn): |
| 104 for entry in cmdutil.findcmd('clone', commands.table)[1][1]: | 112 for entry in cmdutil.findcmd('clone', commands.table)[1][1]: |
| 105 if entry[1] == option: | 113 if entry[1] == option: |
| 106 return fn | 114 return fn |
| 107 # no match found, so skip | 115 # no match found, so skip |
| 108 if SkipTest: | 116 if SkipTest: |
| 109 def skip(*args, **kwargs): | 117 return _makeskip(fn.__name__, |
| 110 raise SkipTest('test requires clone to accept %s' % option) | 118 'test requires clone to accept %s' % option) |
| 111 skip.__name__ = fn.__name__ | |
| 112 return skip | |
| 113 # no skipping support, so erase decorated method | 119 # no skipping support, so erase decorated method |
| 114 return | 120 return |
| 115 if not isinstance(option, str): | 121 if not isinstance(option, str): |
| 116 raise TypeError('requiresoption takes a string argument') | 122 raise TypeError('requiresoption takes a string argument') |
| 117 return decorator | 123 return decorator |
