You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
Python
58 lines
1.3 KiB
Python
6 years ago
|
|
||
|
import unittest2
|
||
|
|
||
|
import mitogen.core
|
||
|
import mitogen.error
|
||
|
|
||
|
import testlib
|
||
|
|
||
|
|
||
|
class MagicValueError(ValueError):
|
||
|
pass
|
||
|
|
||
|
|
||
|
def func_throws_value_error(*args):
|
||
|
raise ValueError(*args)
|
||
|
|
||
|
|
||
|
def func_throws_value_error_subclass(*args):
|
||
|
raise MagicValueError(*args)
|
||
|
|
||
|
|
||
|
class MatchTest(testlib.RouterMixin, testlib.TestCase):
|
||
|
def _test_no_match(self):
|
||
|
context = self.router.fork()
|
||
|
try:
|
||
|
context.call(func_throws_value_error_subclass)
|
||
|
except mitogen.error.match(ValueError):
|
||
|
pass
|
||
|
|
||
|
def test_no_match(self):
|
||
|
self.assertRaises(mitogen.core.CallError,
|
||
|
lambda: self._test_no_match())
|
||
|
|
||
|
def test_builtin_match(self):
|
||
|
context = self.router.fork()
|
||
|
try:
|
||
|
context.call(func_throws_value_error)
|
||
|
except mitogen.error.match(ValueError):
|
||
|
pass
|
||
|
|
||
|
def test_direct_custom_match(self):
|
||
|
context = self.router.fork()
|
||
|
try:
|
||
|
context.call(func_throws_value_error_subclass)
|
||
|
except mitogen.error.match(MagicValueError):
|
||
|
pass
|
||
|
|
||
|
def test_indirect_match(self):
|
||
|
context = self.router.fork()
|
||
|
try:
|
||
|
context.call(func_throws_value_error_subclass)
|
||
|
except mitogen.error.match(ValueError):
|
||
|
pass
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest2.main()
|