mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-25 03:06:11 +08:00
[gdb/testsuite] Reimplement gdb.gdb/python-selftest.exp as unittest
The test-case gdb.gdb/python-selftest.exp: - patches the gdb_python_initialized variable in gdb to 0 - checks that the output of a python command is "Python not initialized" Reimplement gdb.gdb/python-selftest.exp as unittest, using: - execute_command_to_string to capture the output - try/catch to catch the "Python not initialized" exception. Tested on x86_64-linux.
This commit is contained in:
@ -35,6 +35,7 @@
|
||||
#include <ctype.h>
|
||||
#include "location.h"
|
||||
#include "run-on-main-thread.h"
|
||||
#include "gdbsupport/selftest.h"
|
||||
|
||||
/* Declared constants and enum for python stack printing. */
|
||||
static const char python_excp_none[] = "none";
|
||||
@ -1879,6 +1880,47 @@ do_start_initialization ()
|
||||
|
||||
#endif /* HAVE_PYTHON */
|
||||
|
||||
#if GDB_SELF_TEST
|
||||
namespace selftests {
|
||||
|
||||
/* Entry point for python unit tests. */
|
||||
|
||||
static void
|
||||
test_python ()
|
||||
{
|
||||
#define CMD execute_command_to_string ("python print(5)", 0, true);
|
||||
|
||||
std::string output;
|
||||
|
||||
output = CMD;
|
||||
SELF_CHECK (output == "5\n");
|
||||
output.clear ();
|
||||
|
||||
bool saw_exception = false;
|
||||
scoped_restore reset_gdb_python_initialized
|
||||
= make_scoped_restore (&gdb_python_initialized, 0);
|
||||
try
|
||||
{
|
||||
output = CMD;
|
||||
}
|
||||
catch (const gdb_exception &e)
|
||||
{
|
||||
saw_exception = true;
|
||||
SELF_CHECK (e.reason == RETURN_ERROR);
|
||||
SELF_CHECK (e.error == GENERIC_ERROR);
|
||||
SELF_CHECK (*e.message == "Python not initialized");
|
||||
}
|
||||
SELF_CHECK (saw_exception);
|
||||
SELF_CHECK (output.empty ());
|
||||
|
||||
#undef CMD
|
||||
}
|
||||
|
||||
#undef CHECK_OUTPUT
|
||||
|
||||
} // namespace selftests
|
||||
#endif /* GDB_SELF_TEST */
|
||||
|
||||
/* See python.h. */
|
||||
cmd_list_element *python_cmd_element = nullptr;
|
||||
|
||||
@ -1977,6 +2019,10 @@ python executable."),
|
||||
show_python_dont_write_bytecode,
|
||||
&user_set_python_list,
|
||||
&user_show_python_list);
|
||||
|
||||
#if GDB_SELF_TEST
|
||||
selftests::register_test ("python", selftests::test_python);
|
||||
#endif /* GDB_SELF_TEST */
|
||||
}
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
|
Reference in New Issue
Block a user