diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-05-17 18:39:26 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-05-19 09:58:46 +0100 |
commit | 637969a709c4542702d283a0471c5364d26ba81b (patch) | |
tree | 30d4ec235bc4395702cead185b720b969f5633f1 /gdb | |
parent | f1cd8b94e7c941c2a9107c1112ab2339916b8efd (diff) | |
download | gdb-637969a709c4542702d283a0471c5364d26ba81b.zip gdb-637969a709c4542702d283a0471c5364d26ba81b.tar.gz gdb-637969a709c4542702d283a0471c5364d26ba81b.tar.bz2 |
gdb/testsuite: handle older Python versions in gdb.python/py-disasm.exp
It was pointed out on the mailing list that the new tests added in
this commit:
commit 4de4e48514fc47aeb4ca95cd4091e2a333fbe9e1
Date: Tue Jan 24 15:35:45 2023 +0000
gdb/python: extend the Python Disassembler API to allow for styling
will fail when GDB is built with Python 3.6 or earlier. This is
because the error that is emitted when a function argument is missing
changed in Python 3.7, instead of an error like this:
Python Exception <class 'TypeError'>: function missing required argument 'style' (pos 1)
earlier versions of Python emit:
Python Exception <class 'TypeError'>: Required argument 'style' (pos 1) not found
and the new tests didn't allow for this.
This commit fixes this by allowing either pattern. I've tested this
building GDB against Python 3.7.9 and 3.6.15, with this commit all
tests in gdb.python/py-disasm.exp now pass.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/gdb.python/py-disasm.exp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gdb/testsuite/gdb.python/py-disasm.exp b/gdb/testsuite/gdb.python/py-disasm.exp index 304393f..f2f9225 100644 --- a/gdb/testsuite/gdb.python/py-disasm.exp +++ b/gdb/testsuite/gdb.python/py-disasm.exp @@ -75,6 +75,16 @@ proc make_exception_pattern { type msg } { return "${::addr_pattern}Python Exception <class '$type'>: $msg\r\n\r\n${::unknown_error_pattern}" } +# Helper proc to build a pattern for the text Python emits when a +# function argument is missing. This string changed in Python 3.7 and +# later. NAME is the parameter name, and POS is its integer position +# in the argument list. +proc missing_arg_pattern { name pos } { + set pattern_1 "function missing required argument '$name' \\(pos $pos\\)" + set pattern_2 "Required argument '$name' \\(pos $pos\\) not found" + return "(?:${pattern_1}|${pattern_2})" +} + set test_plans \ [list \ [list "" "${base_pattern}\r\n.*"] \ @@ -113,16 +123,16 @@ set test_plans \ "Result is not a DisassemblerResult."]] \ [list "ErrorCreatingTextPart_NoArgs" \ [make_exception_pattern "TypeError" \ - "function missing required argument 'style' \\(pos 1\\)"]] \ + [missing_arg_pattern "style" 1]]] \ [list "ErrorCreatingAddressPart_NoArgs" \ [make_exception_pattern "TypeError" \ - "function missing required argument 'address' \\(pos 1\\)"]] \ + [missing_arg_pattern "address" 1]]] \ [list "ErrorCreatingTextPart_NoString" \ [make_exception_pattern "TypeError" \ - "function missing required argument 'string' \\(pos 2\\)"]] \ + [missing_arg_pattern "string" 2]]] \ [list "ErrorCreatingTextPart_NoStyle" \ [make_exception_pattern "TypeError" \ - "function missing required argument 'style' \\(pos 1\\)"]] \ + [missing_arg_pattern "style" 1]]] \ [list "All_Text_Part_Styles" "${addr_pattern}p1p2p3p4p5p6p7p8p9p10\r\n.*"] \ [list "ErrorCreatingTextPart_StringAndParts" \ [make_exception_pattern "ValueError" \ @@ -273,7 +283,7 @@ with_test_prefix "check inheritance" { # Test some error conditions when creating a DisassemblerResult object. gdb_test "python result = gdb.disassembler.DisassemblerResult()" \ [multi_line \ - "TypeError: function missing required argument 'length' \\(pos 1\\)" \ + "TypeError: [missing_arg_pattern length 1]" \ "Error while executing Python code\\."] \ "try to create a DisassemblerResult without a length argument" |