public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@embecosm.com>
To: gdb-patches@sourceware.org
Cc: Andrew Burgess <aburgess@redhat.com>,
	 Simon Marchi <simon.marchi@polymtl.ca>,
	Tom Tromey <tom@tromey.com>,  Simon Sobisch <simonsobisch@web.de>
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 ""

  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
2022-10-21  7:58     ` Maciej W. Rozycki
2022-10-21 18:44   ` Simon Marchi
2022-10-21 20:54     ` Maciej W. Rozycki
2022-10-22  0:48       ` Simon Marchi
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
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
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
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
2022-10-17 15:02   ` Simon Marchi
2022-10-29 15:58     ` Maciej W. Rozycki
2022-10-31 13:00       ` Simon Marchi
2022-10-31 13:31         ` Maciej W. Rozycki
2022-11-01 12:28           ` Maciej W. Rozycki
2022-10-26 11:58   ` Luis Machado
2022-10-29 13:52     ` Maciej W. Rozycki
2022-10-31  8:14       ` Luis Machado
2022-10-31 12:37         ` Luis Machado
2022-10-31 13:08           ` Maciej W. Rozycki
2022-10-31 13:14             ` Luis Machado
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
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=simon.marchi@polymtl.ca \
    --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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).