From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 2DoSK9a5O2E4OAAAWB0awg (envelope-from ) for ; Fri, 10 Sep 2021 16:02:30 -0400 Received: by simark.ca (Postfix, from userid 112) id AE8891EE23; Fri, 10 Sep 2021 16:02:30 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id DFC611EE24 for ; Fri, 10 Sep 2021 16:02:28 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2D00D385840D for ; Fri, 10 Sep 2021 20:02:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2D00D385840D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1631304148; bh=IkUEGfJTLuQYhuvaKxo73LpjuCh8w1Z9lYfCDSnpzI4=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=ReBx/hTNGRYPwwNXWv66/BJpJjVmcm3KgSEl/ElfBV1eNRml4HlMNpZJu7vWU/CVd 7bTiqNOKf85/6a5UPEL9o1N5wF88EjbnRRKIjLhnfZkeWNonD0kHQ92m/j6H8Vk8TU LgGZ5xG2hk60pxQB+z/ibyMG9wEFcg7ExPIQ/uVo= Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id CC06C3858D29 for ; Fri, 10 Sep 2021 20:02:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CC06C3858D29 Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0C67D223E3 for ; Fri, 10 Sep 2021 20:02:09 +0000 (UTC) Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id E9FF9132CD for ; Fri, 10 Sep 2021 20:02:08 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id nztvN8C5O2GBQAAAGKfGzw (envelope-from ) for ; Fri, 10 Sep 2021 20:02:08 +0000 Subject: [committed][gdb/testsuite] Reimplement gdb.gdb/python-selftest.exp as unittest To: gdb-patches@sourceware.org References: <20210903112141.GA10212@delia> Message-ID: Date: Fri, 10 Sep 2021 22:02:06 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <20210903112141.GA10212@delia> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On 9/3/21 1:21 PM, Tom de Vries wrote: > Hi, > > 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. > > [ Passes build & gdb.gdb/unittest.exp, currently doing full regression > test run. ] > > Any comments? > After the approval for the rewrite of the other test-case, this one looks obvious. Committed. Thanks, - Tom > [gdb/testsuite] Reimplement gdb.gdb/python-selftest.exp as unittest > > --- > gdb/python/python.c | 46 +++++++++++++++++++++++++++++++ > gdb/testsuite/gdb.gdb/python-selftest.exp | 30 -------------------- > 2 files changed, 46 insertions(+), 30 deletions(-) > > diff --git a/gdb/python/python.c b/gdb/python/python.c > index e42cbc4fd5e..d1c4e272762 100644 > --- a/gdb/python/python.c > +++ b/gdb/python/python.c > @@ -35,6 +35,7 @@ > #include > #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 > diff --git a/gdb/testsuite/gdb.gdb/python-selftest.exp b/gdb/testsuite/gdb.gdb/python-selftest.exp > deleted file mode 100644 > index 74b2c520900..00000000000 > --- a/gdb/testsuite/gdb.gdb/python-selftest.exp > +++ /dev/null > @@ -1,30 +0,0 @@ > -# Copyright 2013-2021 Free Software Foundation, Inc. > - > -# This program is free software; you can redistribute it and/or modify > -# it under the terms of the GNU General Public License as published by > -# the Free Software Foundation; either version 3 of the License, or > -# (at your option) any later version. > -# > -# This program is distributed in the hope that it will be useful, > -# but WITHOUT ANY WARRANTY; without even the implied warranty of > -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -# GNU General Public License for more details. > -# > -# You should have received a copy of the GNU General Public License > -# along with this program. If not, see . > - > -load_lib selftest-support.exp > -load_lib gdb-python.exp > - > -proc selftest_python {} { > - if {[skip_python_tests]} { > - return -1 > - } > - > - gdb_test_no_output "set variable gdb_python_initialized = 0" > - gdb_test "call catch_command_errors(execute_command, \"python print(5)\", 0, true)" \ > - "Python not initialized.* = 0" > - return 0 > -} > - > -do_self_tests captured_command_loop selftest_python >