41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
|
from numba.cuda.testing import unittest, CUDATestCase
|
||
|
from numba import cuda
|
||
|
from numba.core import config
|
||
|
|
||
|
|
||
|
class MyError(Exception):
|
||
|
pass
|
||
|
|
||
|
|
||
|
regex_pattern = (
|
||
|
r'In function [\'"]test_exc[\'"], file [\:\.\/\\\-a-zA-Z_0-9]+, line \d+'
|
||
|
)
|
||
|
|
||
|
|
||
|
class TestUserExc(CUDATestCase):
|
||
|
|
||
|
def test_user_exception(self):
|
||
|
@cuda.jit("void(int32)", debug=True)
|
||
|
def test_exc(x):
|
||
|
if x == 1:
|
||
|
raise MyError
|
||
|
elif x == 2:
|
||
|
raise MyError("foo")
|
||
|
|
||
|
test_exc[1, 1](0) # no raise
|
||
|
with self.assertRaises(MyError) as cm:
|
||
|
test_exc[1, 1](1)
|
||
|
if not config.ENABLE_CUDASIM:
|
||
|
self.assertRegex(str(cm.exception), regex_pattern)
|
||
|
self.assertIn("tid=[0, 0, 0] ctaid=[0, 0, 0]", str(cm.exception))
|
||
|
with self.assertRaises(MyError) as cm:
|
||
|
test_exc[1, 1](2)
|
||
|
if not config.ENABLE_CUDASIM:
|
||
|
self.assertRegex(str(cm.exception), regex_pattern)
|
||
|
self.assertRegex(str(cm.exception), regex_pattern)
|
||
|
self.assertIn("tid=[0, 0, 0] ctaid=[0, 0, 0]: foo", str(cm.exception))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|