aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2025-04-23 10:07:09 +0100
committerAndrew Burgess <aburgess@redhat.com>2025-04-24 00:13:23 +0100
commit2eead96aeba1ec15d258b0952b37cb5d8bfc4c4a (patch)
tree15bba79331ea10abb662b539cf66b9853cfa3052 /gdb
parent94f3facb2185f780b9b971330277c6d89ad8c053 (diff)
downloadbinutils-2eead96aeba1ec15d258b0952b37cb5d8bfc4c4a.zip
binutils-2eead96aeba1ec15d258b0952b37cb5d8bfc4c4a.tar.gz
binutils-2eead96aeba1ec15d258b0952b37cb5d8bfc4c4a.tar.bz2
gdb/python: keyword args for Color.__init__
GDB's Python API documentation is clear: Functions and methods which have two or more optional arguments allow them to be specified using keyword syntax. The gdb.Color.__init__ method matches this description, but doesn't support keyword arguments. This commit fixes this by adding keyword argument support. There's a new test to cover this functionality. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/python/py-color.c5
-rw-r--r--gdb/testsuite/gdb.python/py-color.exp14
2 files changed, 17 insertions, 2 deletions
diff --git a/gdb/python/py-color.c b/gdb/python/py-color.c
index c48d14e..97801f8 100644
--- a/gdb/python/py-color.c
+++ b/gdb/python/py-color.c
@@ -176,7 +176,10 @@ colorpy_init (PyObject *self, PyObject *args, PyObject *kwds)
PyObject *colorspace_obj = nullptr;
color_space colorspace = color_space::MONOCHROME;
- if (!PyArg_ParseTuple (args, "|OO", &value_obj, &colorspace_obj))
+ static const char *keywords[] = { "value", "color_space", nullptr };
+
+ if (!gdb_PyArg_ParseTupleAndKeywords (args, kwds, "|OO", keywords,
+ &value_obj, &colorspace_obj))
return -1;
try
diff --git a/gdb/testsuite/gdb.python/py-color.exp b/gdb/testsuite/gdb.python/py-color.exp
index 99b4689..7f71158 100644
--- a/gdb/testsuite/gdb.python/py-color.exp
+++ b/gdb/testsuite/gdb.python/py-color.exp
@@ -22,7 +22,10 @@ require allow_python_tests
# Start with a fresh gdb.
clean_restart
-gdb_test_no_output "python print_color_attrs = lambda c: print (c, c.colorspace, c.is_none, c.is_indexed, c.is_direct)" \
+gdb_test_no_output "python get_color_attrs = lambda c: \"%s %s %s %s %s\" % (str(c), c.colorspace, c.is_none, c.is_indexed, c.is_direct)" \
+ "get_color_attrs helper"
+
+gdb_test_no_output "python print_color_attrs = lambda c: print (get_color_attrs (c))" \
"print_color_attrs helper"
gdb_test_no_output "python c = gdb.Color ()" \
@@ -58,6 +61,15 @@ gdb_test "python print_color_attrs (c)" "green 1 False True False" \
gdb_test "python print (c.index)" "2" \
"print index of a basic color with ansi colorspace"
+# Create a color using keyword arguments, and check it matches the
+# non-keyword color.
+gdb_test_no_output "python c2 = gdb.Color (color_space = gdb.COLORSPACE_ANSI_8COLOR, value = 2)" \
+ "create color from basic index and ansi colorspace using keywords"
+gdb_test "python print(get_color_attrs (c) == get_color_attrs (c2))" "True" \
+ "check attributes match"
+gdb_test "python print(c.index == c2.index)" "True" \
+ "check index matches"
+
gdb_test_no_output "python c = gdb.Color (2, gdb.COLORSPACE_XTERM_256COLOR)" \
"create color from basic index and xterm256 colorspace"
gdb_test "python print_color_attrs (c)" "2 3 False True False" \