| """ | |
| Similar to test_cfunction but test "py-bt-full" command. | |
| """ | |
| import re | |
| from .util import setup_module | |
| from .test_cfunction import CFunctionTests | |
| def setUpModule(): | |
| setup_module() | |
| class CFunctionFullTests(CFunctionTests): | |
| def check(self, func_name, cmd): | |
| # Verify with "py-bt-full": | |
| gdb_output = self.get_stack_trace( | |
| cmd, | |
| breakpoint=func_name, | |
| cmds_after_breakpoint=['bt', 'py-bt-full'], | |
| # bpo-45207: Ignore 'Function "meth_varargs" not | |
| # defined.' message in stderr. | |
| ignore_stderr=True, | |
| ) | |
| # bpo-46600: If the compiler inlines _null_to_none() in | |
| # meth_varargs() (ex: clang -Og), _null_to_none() is the | |
| # frame #1. Otherwise, meth_varargs() is the frame #1. | |
| regex = r'#(1|2)' | |
| regex += re.escape(f' <built-in method {func_name}') | |
| self.assertRegex(gdb_output, regex) | |
| # Delete the test case, otherwise it's executed twice | |
| del CFunctionTests |