gdb/testsuite: more testing of pretty printer 'array' display_hint
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 2 Mar 2021 14:19:56 +0000 (14:19 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 26 Mar 2021 17:43:14 +0000 (17:43 +0000)
commitb1f3973b9c55a1406c13ade5cb14239d5b17a465
tree39fbe51feb95f05ae16b74796e617163d8616200
parentb4b1a226df8d51da9594200ad803ad303c15cd36
gdb/testsuite: more testing of pretty printer 'array' display_hint

This commit adds a couple of tests to the python pretty printer
testing.

I've added a test for the 'array' display hint.  This display hint is
tested by gdb.python/py-mi.exp, however, the MI testing is done via
the varobj interface, and this code makes its own direct calls to the
Python pretty printers from gdb/varobj.c.  What this means is that the
interface to the pretty printers in gdb/python/py-prettyprint.c is not
tested for the 'array' display hint path.

I also added a test for what happens when the display_hint method
raises an exception.  There wasn't a bug that inspired this test, just
while adding the previous test I thought, I wonder what happens if...

The current behaviour of GDB seems reasonable, GDB displays the Python
exception, and then continues printing the value as if display_hint
had returned None.  I added a test to lock in this behaviour.

gdb/testsuite/ChangeLog:

* gdb.python/py-prettyprint.c (struct container): Add 'is_array_p'
member.
(make_container): Initialise is_array_p.
* gdb.python/py-prettyprint.exp: Add new tests.
* gdb.python/py-prettyprint.py (ContainerPrinter.display_hint):
Check is_array_p and possibly return 'array'.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-prettyprint.c
gdb/testsuite/gdb.python/py-prettyprint.exp
gdb/testsuite/gdb.python/py-prettyprint.py