52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
|
# NOTE: This test is sensitive to line numbers as it checks breakpoints
|
||
|
from numba import njit, types
|
||
|
import numpy as np
|
||
|
from numba.tests.gdb_support import GdbMIDriver
|
||
|
from numba.tests.support import TestCase, needs_subprocess
|
||
|
import unittest
|
||
|
|
||
|
|
||
|
@needs_subprocess
|
||
|
class Test(TestCase):
|
||
|
|
||
|
def test(self):
|
||
|
@njit(debug=True)
|
||
|
def foo(x):
|
||
|
z = np.ones_like(x) # break here
|
||
|
return x, z
|
||
|
|
||
|
tmp = np.ones(5)
|
||
|
foo(tmp)
|
||
|
|
||
|
driver = GdbMIDriver(__file__)
|
||
|
driver.set_breakpoint(line=15)
|
||
|
driver.run()
|
||
|
driver.check_hit_breakpoint(1)
|
||
|
driver.stack_list_arguments(2)
|
||
|
llvm_intp = f"i{types.intp.bitwidth}"
|
||
|
expect = (
|
||
|
'[frame={level="0",args=[{name="x",type="array(float64, 1d, C) '
|
||
|
f'({{i8*, i8*, {llvm_intp}, {llvm_intp}, double*, '
|
||
|
f'[1 x {llvm_intp}], [1 x {llvm_intp}]}})"}}]}}]'
|
||
|
)
|
||
|
driver.assert_output(expect)
|
||
|
driver.stack_list_variables(1)
|
||
|
# 'z' should be zero-init
|
||
|
expect = ('{name="z",value="{meminfo = 0x0, parent = 0x0, nitems = 0, '
|
||
|
'itemsize = 0, data = 0x0, shape = {0}, strides = {0}}"}')
|
||
|
driver.assert_output(expect)
|
||
|
driver.set_breakpoint(line=16)
|
||
|
driver.cont()
|
||
|
driver.check_hit_breakpoint(2)
|
||
|
driver.stack_list_variables(1)
|
||
|
# 'z' should be populated
|
||
|
expect = (r'^.*\{name="z",value="\{meminfo = 0x[0-9a-f]+ .*, '
|
||
|
r'parent = 0x0, nitems = 5, itemsize = 8, '
|
||
|
r'data = 0x[0-9a-f]+, shape = \{5\}, strides = \{8\}\}.*$')
|
||
|
driver.assert_regex_output(expect)
|
||
|
driver.quit()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|