From: "Maciej W. Rozycki" <macro@embecosm.com>
To: gdb-patches@sourceware.org
Cc: Simon Sobisch <simonsobisch@web.de>, Tom Tromey <tom@tromey.com>,
Andrew Burgess <aburgess@redhat.com>
Subject: [PATCH v6 3/8] GDB/testsuite: Expand Python integer parameter coverage across all types
Date: Wed, 17 Aug 2022 23:04:05 +0100 (BST) [thread overview]
Message-ID: <alpine.DEB.2.20.2208171553370.10833@tpp.orcam.me.uk> (raw)
In-Reply-To: <alpine.DEB.2.20.2208151502460.10833@tpp.orcam.me.uk>
Also verify PARAM_UINTEGER, PARAM_INTEGER, and PARAM_ZINTEGER parameter
types, in addition to PARAM_ZUINTEGER and PARAM_ZUINTEGER_UNLIMITED
already covered, and verify a choice of existing GDB parameters. Add
verification for reading parameters via `<parameter>.value' in addition
to `gdb.parameter('<parameter>')' as this covers different code paths.
---
New change in v6.
---
gdb/testsuite/gdb.python/py-parameter.exp | 197 +++++++++++++++++++++++++++---
1 file changed, 181 insertions(+), 16 deletions(-)
gdb-test-python-var-integer.diff
Index: src/gdb/testsuite/gdb.python/py-parameter.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.python/py-parameter.exp
+++ src/gdb/testsuite/gdb.python/py-parameter.exp
@@ -24,6 +24,14 @@ clean_restart
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
+proc py_param_test_maybe_no_output { command pattern args } {
+ if [string length $pattern] {
+ gdb_test $command $pattern $args
+ } else {
+ gdb_test_no_output $command $args
+ }
+}
+
proc_with_prefix test_directories { } {
# We use "." here instead of ":" so that this works on win32 too.
if { [is_remote host] } {
@@ -325,8 +333,80 @@ proc_with_prefix test_deprecated_api_par
"test general help"
}
+proc_with_prefix test_gdb_parameter { } {
+ foreach_with_prefix param {
+ "listsize"
+ "print elements"
+ "max-completions"
+ } {
+ clean_restart
+
+ set param_range_error ".*gdb.error: integer -1 out of range.*"
+ switch -- $param {
+ "listsize" {
+ set param_get_zero None
+ set param_get_minus_one -1
+ set param_get_unlimited None
+ set param_set_minus_one ""
+ }
+ "print elements" {
+ set param_get_zero None
+ set param_get_minus_one None
+ set param_get_unlimited None
+ set param_set_minus_one $param_range_error
+ }
+ "max-completions" {
+ set param_get_zero 0
+ set param_get_minus_one -1
+ set param_get_unlimited -1
+ set param_set_minus_one ""
+ }
+ default {
+ error "invalid param: $param"
+ }
+ }
+
+ gdb_test_no_output "python gdb.set_parameter('$param', 1)" \
+ "test set to 1"
+
+ gdb_test "python print(gdb.parameter('$param'))" \
+ 1 "test value of 1"
+
+ gdb_test_no_output "python gdb.set_parameter('$param', 0)" \
+ "test set to 0"
+
+ gdb_test "python print(gdb.parameter('$param'))" \
+ $param_get_zero "test value of 0"
+
+ py_param_test_maybe_no_output \
+ "python gdb.set_parameter('$param', -1)" \
+ $param_set_minus_one "test set to -1"
+
+ gdb_test "python print(gdb.parameter('$param'))" \
+ $param_get_minus_one "test value of -1"
+
+ gdb_test_no_output "python gdb.set_parameter('$param', 'unlimited')" \
+ "test set to 'unlimited'"
+
+ gdb_test "python print(gdb.parameter('$param'))" \
+ $param_get_unlimited "test value of 'unlimited'"
+ }
+
+ clean_restart
+
+ # This caused a gdb crash.
+ gdb_test "python print(gdb.parameter('endian'))" "auto" \
+ "print endian parameter"
+}
+
proc_with_prefix test_integer_parameter { } {
- foreach_with_prefix kind {PARAM_ZUINTEGER PARAM_ZUINTEGER_UNLIMITED} {
+ foreach_with_prefix kind {
+ PARAM_UINTEGER
+ PARAM_INTEGER
+ PARAM_ZINTEGER
+ PARAM_ZUINTEGER
+ PARAM_ZUINTEGER_UNLIMITED
+ } {
clean_restart
gdb_test_multiline "create parameter" \
@@ -338,20 +418,106 @@ proc_with_prefix test_integer_parameter
"test_param_$kind = TestNodocParam ('test-$kind')" "" \
"end"
- gdb_test "python print(gdb.parameter('test-$kind'))" "0"
+ set param_range_error "RuntimeError: Range exceeded.*"
+ set param_integer_error "RuntimeError: The value must be integer.*"
+ switch -- $kind {
+ PARAM_UINTEGER {
+ set param_get_zero None
+ set param_get_minus_one None
+ set param_get_minus_five 1
+ set param_get_none 5
+ set param_set_minus_one $param_range_error
+ set param_set_minus_five $param_range_error
+ set param_set_none $param_integer_error
+ }
+ PARAM_INTEGER {
+ set param_get_zero None
+ set param_get_minus_one -1
+ set param_get_minus_five -5
+ set param_get_none 5
+ set param_set_minus_one -1
+ set param_set_minus_five -5
+ set param_set_none $param_integer_error
+ }
+ PARAM_ZINTEGER {
+ set param_get_zero 0
+ set param_get_minus_one -1
+ set param_get_minus_five -5
+ set param_get_none 5
+ set param_set_minus_one ""
+ set param_set_minus_five ""
+ set param_set_none $param_integer_error
+ }
+ PARAM_ZUINTEGER {
+ set param_get_zero 0
+ set param_get_minus_one 0
+ set param_get_minus_five 1
+ set param_get_none 5
+ set param_set_minus_one $param_range_error
+ set param_set_minus_five $param_range_error
+ set param_set_none $param_integer_error
+ }
+ PARAM_ZUINTEGER_UNLIMITED {
+ set param_get_zero 0
+ set param_get_minus_one -1
+ set param_get_minus_five 1
+ set param_get_none 5
+ set param_set_minus_one ""
+ set param_set_minus_five $param_range_error
+ set param_set_none $param_integer_error
+ }
+ default {
+ error "invalid kind: $kind"
+ }
+ }
- gdb_test "python test_param_$kind.value = -5" "RuntimeError: Range exceeded.*"
+ gdb_test "python print(test_param_$kind.value)" \
+ $param_get_zero "test default value"
- if {$kind == "PARAM_ZUINTEGER"} {
- gdb_test "python test_param_$kind.value = -1" "RuntimeError: Range exceeded.*"
- } elseif {$kind == "PARAM_ZUINTEGER_UNLIMITED"} {
- gdb_test_no_output "python test_param_$kind.value = -1" \
- "check that PARAM_ZUINTEGER_UNLIMITED value can be set to -1"
- gdb_test "python print(gdb.parameter('test-$kind'))" "-1" \
- "check that PARAM_ZUINTEGER_UNLIMITED value is -1 after setting"
- } else {
- error "invalid kind: $kind"
- }
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ $param_get_zero "test default value via gdb.parameter"
+
+ py_param_test_maybe_no_output "python test_param_$kind.value = -1" \
+ $param_set_minus_one "test set to -1"
+
+ gdb_test "python print(test_param_$kind.value)" \
+ $param_get_minus_one "test value of -1"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ $param_get_minus_one "test value of -1 via gdb.parameter"
+
+ gdb_test_no_output "python test_param_$kind.value = 1" "test set to 1"
+
+ gdb_test "python print(test_param_$kind.value)" 1 "test value of 1"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ 1 "test value of 1 via gdb.parameter"
+
+ py_param_test_maybe_no_output "python test_param_$kind.value = -5" \
+ $param_set_minus_five "test set to -5"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ $param_get_minus_five "test value of -5 via gdb.parameter"
+
+ gdb_test_no_output "python test_param_$kind.value = 5" "test set to 5"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ 5 "test value of 5 via gdb.parameter"
+
+ py_param_test_maybe_no_output "python test_param_$kind.value = None" \
+ $param_set_none "test set to None"
+
+ gdb_test "python print(test_param_$kind.value)" \
+ $param_get_none "test value of None"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ $param_get_none "test value of None via gdb.parameter"
+
+ gdb_test_no_output "python test_param_$kind.value = 0" \
+ "test set to 0"
+
+ gdb_test "python print(gdb.parameter('test-$kind'))" \
+ $param_get_zero "test value of 0 via gdb.parameter"
}
}
@@ -395,10 +561,9 @@ test_file_parameter
test_undocumented_parameter
test_really_undocumented_parameter
test_deprecated_api_parameter
+test_gdb_parameter
test_integer_parameter
test_throwing_parameter
test_language
-# This caused a gdb crash.
-gdb_test "python print(gdb.parameter('endian'))" "auto" \
- "print endian parameter"
+rename py_param_test_maybe_no_output ""
next prev parent reply other threads:[~2022-08-17 22:04 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-17 22:03 [PATCH v6 0/8] gdb: split array and string limiting options Maciej W. Rozycki
2022-08-17 22:03 ` [PATCH v6 1/8] GDB/Guile: Don't assert that an integer value is boolean Maciej W. Rozycki
2022-10-17 13:43 ` Simon Marchi via Gdb-patches
2022-10-21 7:58 ` Maciej W. Rozycki
2022-10-21 18:44 ` Simon Marchi via Gdb-patches
2022-10-21 20:54 ` Maciej W. Rozycki
2022-10-22 0:48 ` Simon Marchi via Gdb-patches
2022-08-17 22:03 ` [PATCH v6 2/8] GDB/doc: Document the Guile `#:unlimited' keyword Maciej W. Rozycki
2022-08-18 6:06 ` Eli Zaretskii via Gdb-patches
2022-09-01 10:31 ` Maciej W. Rozycki
2022-08-17 22:04 ` Maciej W. Rozycki [this message]
2022-10-17 13:56 ` [PATCH v6 3/8] GDB/testsuite: Expand Python integer parameter coverage across all types Simon Marchi via Gdb-patches
2022-10-21 7:59 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 4/8] GDB/Python: Make `None' stand for `unlimited' in setting integer parameters Maciej W. Rozycki
2022-10-17 14:26 ` Simon Marchi via Gdb-patches
2022-10-21 8:03 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 5/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited' Maciej W. Rozycki
2022-08-18 6:08 ` Eli Zaretskii via Gdb-patches
2022-10-17 15:02 ` Simon Marchi via Gdb-patches
2022-10-29 15:58 ` Maciej W. Rozycki
2022-10-31 13:00 ` Simon Marchi via Gdb-patches
2022-10-31 13:31 ` Maciej W. Rozycki
2022-11-01 12:28 ` Maciej W. Rozycki
2022-10-26 11:58 ` Luis Machado via Gdb-patches
2022-10-29 13:52 ` Maciej W. Rozycki
2022-10-31 8:14 ` Luis Machado via Gdb-patches
2022-10-31 12:37 ` Luis Machado via Gdb-patches
2022-10-31 13:08 ` Maciej W. Rozycki
2022-10-31 13:14 ` Luis Machado via Gdb-patches
2022-10-31 14:05 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 6/8] GDB: Allow arbitrary keywords in integer set commands Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 7/8] GDB: Add a character string limiting option Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 8/8] GDB/testsuite: Expand for character string limiting options Maciej W. Rozycki
2022-08-18 0:07 ` [PATCH v6.1 " Maciej W. Rozycki
2022-09-01 10:32 ` [PING][PATCH v6 0/8] gdb: split array and " Maciej W. Rozycki
2022-09-08 9:37 ` [PING^2][PATCH " Maciej W. Rozycki
2022-09-14 17:43 ` [PING^3][PATCH " Maciej W. Rozycki
2022-09-22 22:07 ` [PING^4][PATCH " Maciej W. Rozycki
2022-09-29 7:09 ` [PING^5][PATCH " Maciej W. Rozycki
2022-09-29 7:12 ` Simon Sobisch via Gdb-patches
2022-10-06 15:46 ` [PING^6][PATCH " Maciej W. Rozycki
2022-10-12 21:19 ` [PING^7][PATCH " Maciej W. Rozycki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.20.2208171553370.10833@tpp.orcam.me.uk \
--to=macro@embecosm.com \
--cc=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=simonsobisch@web.de \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox