Message ID | 20221217000818.3729389-1-tom@tromey.com |
---|---|
Headers |
Return-Path: <gdb-patches-bounces+patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AC6B53832E6A for <patchwork@sourceware.org>; Sat, 17 Dec 2022 00:09:02 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from gproxy3-pub.mail.unifiedlayer.com (gproxy3-pub.mail.unifiedlayer.com [69.89.30.42]) by sourceware.org (Postfix) with ESMTPS id 314963836D34 for <gdb-patches@sourceware.org>; Sat, 17 Dec 2022 00:08:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 314963836D34 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from cmgw12.mail.unifiedlayer.com (unknown [10.0.90.127]) by progateway5.mail.pro1.eigbox.com (Postfix) with ESMTP id A544F10047819 for <gdb-patches@sourceware.org>; Sat, 17 Dec 2022 00:08:30 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id 6Kkgp7KFLfWVl6KkgpAVQG; Sat, 17 Dec 2022 00:08:30 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=XoA/hXJ9 c=1 sm=1 tr=0 ts=639d087e a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=sHyYjHe8cH0A:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=CCpqsmhAAAAA:8 a=ijlDCtS67dGY7CiORYsA:9 a=fjwwDU95zkUA:10:demote_hacked_domain_1 a=ul9cdbp4aOFLsgKbc677:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject: To:From:Sender:Reply-To:Cc:Content-Type:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=4bZGToZknXoROxqe/gDYUNB/hmldaMHN3sLfyfCSKwE=; b=swmEuYQlUT86+Y+ALgp4Tu/Mog AUb7ev56WHQW5wbSnilHF0qBkhW3mWyR395QJlKxCxiynnLd2NZdWp15uXiFVRfw87lyWAKWS/Ih9 1a7bSGceNI+fH9MrYG5oQi0Nw; Received: from 97-122-76-186.hlrn.qwest.net ([97.122.76.186]:60688 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from <tom@tromey.com>) id 1p6Kkg-002gaf-Gj for gdb-patches@sourceware.org; Fri, 16 Dec 2022 17:08:30 -0700 From: Tom Tromey <tom@tromey.com> To: gdb-patches@sourceware.org Subject: [PATCH 00/46] Rewrite "require" test procedure and use it more often Date: Fri, 16 Dec 2022 17:07:32 -0700 Message-Id: <20221217000818.3729389-1-tom@tromey.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 97.122.76.186 X-Source-L: No X-Exim-ID: 1p6Kkg-002gaf-Gj X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-76-186.hlrn.qwest.net (localhost.localdomain) [97.122.76.186]:60688 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3022.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no 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 <gdb-patches.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=subscribe> Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" <gdb-patches-bounces+patchwork=sourceware.org@sourceware.org> |
Series |
Rewrite "require" test procedure and use it more often
|
|
Message
Tom Tromey
Dec. 17, 2022, 12:07 a.m. UTC
A recent patch by Enze Li made me revisit the "require" procedure. For his patch, see: https://sourceware.org/pipermail/gdb-patches/2022-December/194586.html This series rewrites "require" to be a bit more 'static' and then changes a lot of the test suite to use it when possible. I looked at a large number of tests, but not every single one, so it's possible some more work here could be done. The new 'require' just invokes simple predicates and decides what to do based on them. It will issue an "unsupported" message if the requirements are not satisfied. See patch #3. Currently the requirements should only be invoked when gdb is not running. At least, that's what I've done, I don't think there's a real barrier to doing this, other than the fact that the resulting code might be overly subtle. More changes here could be done, for example allowing uses like: require {is_remote host} or the like. I haven't tried this. The main benefit of this entire approach is that it removes boilerplate and decisions about whether to use verbose, unsupport, untested, or even no output at all. Regression tested on x86-64 Fedora 36, though TBH that's hardly sufficient. Let me know what you think. Tom
Comments
On 12/17/22 00:07, Tom Tromey wrote: > A recent patch by Enze Li made me revisit the "require" procedure. > For his patch, see: > > https://sourceware.org/pipermail/gdb-patches/2022-December/194586.html > > This series rewrites "require" to be a bit more 'static' and then > changes a lot of the test suite to use it when possible. I looked at > a large number of tests, but not every single one, so it's possible > some more work here could be done. > > The new 'require' just invokes simple predicates and decides what to > do based on them. It will issue an "unsupported" message if the > requirements are not satisfied. See patch #3. > > Currently the requirements should only be invoked when gdb is not > running. At least, that's what I've done, I don't think there's a > real barrier to doing this, other than the fact that the resulting > code might be overly subtle. That has happened in the past. Of course once you realize that's how it should work, you don't do it anymore. I wonder if there is a way to assert if the requirement is being used with a running gdb. > > More changes here could be done, for example allowing uses like: > > require {is_remote host} > > or the like. I haven't tried this. > > The main benefit of this entire approach is that it removes > boilerplate and decisions about whether to use verbose, unsupport, > untested, or even no output at all. > > Regression tested on x86-64 Fedora 36, though TBH that's hardly > sufficient. > > Let me know what you think. > > Tom > >
On Fri, 16 Dec 2022 17:07:32 -0700
Tom Tromey <tom@tromey.com> wrote:
> Let me know what you think.
Overall, I like this series.
One thing that I find a little odd (due to a sort of double negation) is the
construct:
require !skip_something
...which replaces something like:
if {[skip_something]} {
unsupported "target does not support something"
return 0
}
I see that Markus Metzger also commented on this and also that you
noted that this could be improved over time. (Which is fine with me.)
I looked at each patch in the series, though I didn't read all of them
closely. After a while, I just did some spot checks to make sure that
they were doing what I expected.
So... LGTM.
Kevin
>> Currently the requirements should only be invoked when gdb is not >> running. At least, that's what I've done, I don't think there's a >> real barrier to doing this, other than the fact that the resulting >> code might be overly subtle. Luis> I wonder if there is a way to assert if the requirement is being Luis> used with a running gdb. We could make it work. Also I think now that gdb has --config, we can make skip_python_tests without needing a running gdb. I don't know if there are others that could be improved this way. Tom
Kevin> One thing that I find a little odd (due to a sort of double negation) is the Kevin> construct: Kevin> require !skip_something ... Kevin> I see that Markus Metzger also commented on this and also that you Kevin> noted that this could be improved over time. (Which is fine with me.) It would be pretty easy to just convert them all. What non-negative name would be good? "test_"? "allow_"? "enable_"? Kevin> So... LGTM. Thanks. I will put it in reasonably soon, though if we pick a good name I will do that first and send a v2. Tom
On Thu, 05 Jan 2023 19:47:14 -0700 Tom Tromey <tom@tromey.com> wrote: > Kevin> One thing that I find a little odd (due to a sort of double negation) is the > Kevin> construct: > Kevin> require !skip_something > ... > Kevin> I see that Markus Metzger also commented on this and also that you > Kevin> noted that this could be improved over time. (Which is fine with me.) > > It would be pretty easy to just convert them all. > > What non-negative name would be good? > "test_"? "allow_"? "enable_"? Of the choices you mention, I like "allow_" the best. Kevin