From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by sourceware.org (Postfix) with ESMTPS id 7D0E338582B2 for ; Wed, 17 Aug 2022 22:04:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7D0E338582B2 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-lf1-x12e.google.com with SMTP id d14so20666835lfl.13 for ; Wed, 17 Aug 2022 15:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=mime-version:user-agent:references:message-id:in-reply-to:subject :cc:to:from:date:from:to:cc; bh=r866dVOcv1+7CJyoET++pQGK9u9b2wR6wEbgHBtPJMc=; b=hpHLEsdZAbkMe4XnmSol/arBT3ERF27wxinr+06bq70V9n7zJzMB+ScthtbycYbZ0E 36VU7OyKIyzfcDQGyqeiKDI8TXVEy538XOANQyzSg9hKVmDzchO7MDESy0kxTeLmVVLz AQNCVI6DvBl89cZ4M1w/WjShHXEC6+jh/hs0fjy53Z8aysNyVs6DwVSUdxPrKpBp7cca qlGGNeWYyIFZXeSFAZy2tzi2ncQNWfNp0qWbbQk3NzGZFC2T/8faKaG2Yng0A29www6m MZFbSqnYpehNtV7PgxNW1gyqVpctxAQHedULkkI5vpfrYpTOE9V85fo7PqXcl/bp/DNx dHqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:references:message-id:in-reply-to:subject :cc:to:from:date:x-gm-message-state:from:to:cc; bh=r866dVOcv1+7CJyoET++pQGK9u9b2wR6wEbgHBtPJMc=; b=my9H7x4TZGLKzJifW6KsuzBxy9diNSK94OH0yHyVFRt1mOGFFulNL/Y+Wgga9F5qe6 cg/ngLfrolVkiDEuNjxLtOjodA2hhXykSGgWWM+oWFOzGp9y+EQwKZGX/zlZqP/xm1Xa F1E4uVfGrFyIOaUMxWDiw6bhkMilmaZvoV0n0JK49U1ysd7+7TV/ky1Y4fsgJYtw22rM pJ0EZRY0d15rs7lULRiy2GMLDRcMUyB0bRn58nkdDYpqn81uoG9n8d7i8SAAx0N96oAf FdtkPcxNtMmaI1oqwuVpLsV39MZRTylJximzcMAp3tErT9BwRLh18zyhmlWD4438N8W9 bleg== X-Gm-Message-State: ACgBeo16sds34BKXS1DtDiefHj5GesqyhkXGK6VtwOWnbjxmCJBfEy1n oxAi4xfBoXxdeCfnCjRNPE1KuamGAkOneUzp X-Google-Smtp-Source: AA6agR5WmTXbi5Q3+lMEQv/YlBCZ0q3zoQzVAw/jOVcg76s+d2ougxHxOAW7Bge/dFH+SFfOJh3/UA== X-Received: by 2002:a05:6512:3b9d:b0:48b:6d3:d257 with SMTP id g29-20020a0565123b9d00b0048b06d3d257mr59703lfv.496.1660773848186; Wed, 17 Aug 2022 15:04:08 -0700 (PDT) Received: from [192.168.219.3] ([78.8.192.131]) by smtp.gmail.com with ESMTPSA id 14-20020a2e154e000000b0025e53413b6dsm2372235ljv.2.2022.08.17.15.04.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Aug 2022 15:04:07 -0700 (PDT) Date: Wed, 17 Aug 2022 23:04:05 +0100 (BST) From: "Maciej W. Rozycki" To: gdb-patches@sourceware.org cc: Andrew Burgess , Simon Marchi , Tom Tromey , Simon Sobisch Subject: [PATCH v6 3/8] GDB/testsuite: Expand Python integer parameter coverage across all types In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Aug 2022 22:04:11 -0000 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 `.value' in addition to `gdb.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 ""