From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id DFE233858D28 for ; Fri, 24 Mar 2023 11:46:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DFE233858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (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-out2.suse.de (Postfix) with ESMTPS id 21C9D1F898 for ; Fri, 24 Mar 2023 11:46:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1679658413; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=cf7rfAGUQeK545byz7gmw4G7Woi3F0oocXpnu8FhLmE=; b=h1ZHUhqTFuBmpWMz2KfHhER/zZzBfWE4a6M+aGV0ghnWX/8Cjxa0DTolGz39WlgRgUeoQh Ow8mc6AmGz4nYdZBKjW4+fNIOASMjZm+Uw9EHFBPaN2JnXx/nbtQKAFvXwkpACs5y5YGOW ix4hPB5jR41p9FwrSVmOapAYuATQz3c= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1679658413; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=cf7rfAGUQeK545byz7gmw4G7Woi3F0oocXpnu8FhLmE=; b=6zD64l1jr/yWTMnCyft3HwJEBEfdtgef5V3DIDPa65UHcUCiZ/MIIrF8DjOkELTRzRad9M bOWBSxZVZ9CnbYBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (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 imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0B9E6133E5 for ; Fri, 24 Mar 2023 11:46:53 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id mjCuAa2NHWTBbgAAMHmgww (envelope-from ) for ; Fri, 24 Mar 2023 11:46:53 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [RFC] [gdb/testsuite] Add gdb/contrib/testsuite-normalize.sh Date: Fri, 24 Mar 2023 12:46:51 +0100 Message-Id: <20230324114651.2987-1-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: There are a number of different ways to express the same thing in TCL. For instance, $foo and ${foo}: ... % set foo "foo bar" foo bar % puts ${foo} foo bar % puts $foo foo bar ... The braces make things (IMO) harder to read, but are necessary in some cases though, for instance ${foo-bar} and $foo-bar are not the same thing: ... % set foo "foo var" foo var % set foo-bar "foo-bar var" foo-bar var % puts ${foo-bar} foo-bar var % puts $foo-bar foo var-bar ... Furthermore, there's the tendency to use "$foo" (as is often necessary in shell scripting), while in TCL using $foo is sufficient: ... % set foo "bar bar" bar bar % puts "$foo" bar bar % puts $foo bar bar ... Add a script gdb/contrib/testsuite-normalize.sh, which rewrites test-cases in a normal form, using $foo instead of ${foo}, and $foo instead of "$foo", where possible. This patch doesn't contain the effects of running it, because that would make the patch too large: ... $ git diff | wc 63705 273146 2457187 ... If this approach is acceptable, I'll commit the effects as a seperate patch. Tested on x86_64-linux. --- gdb/contrib/testsuite-normalize.sh | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 gdb/contrib/testsuite-normalize.sh diff --git a/gdb/contrib/testsuite-normalize.sh b/gdb/contrib/testsuite-normalize.sh new file mode 100755 index 00000000000..0cbde3526ce --- /dev/null +++ b/gdb/contrib/testsuite-normalize.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +handle_file () +{ + f="$1" + + # Rewrite '${foo}' -> '$foo''. + # Don't rewrite '\${foo}' -> '\$foo'. + # Don't rewrite '${foo}(bar)' -> '$foo(bar). + # Don't rewrite '${foo}bar' -> '$foobar'. + # Don't rewrite '${foo}::bar' -> '$foo::bar'. + # Two variants, first one matching '${foo}'. + sed -i 's/\([^\\]\)${\([a-zA-Z0-9_]*\)}$/\1$\2/g' "$f" + sed -i 's/\([^\\]\)${\([a-zA-Z0-9_]*\)}\([^a-zA-Z0-9_(:]\)/\1$\2\3/g' "$f" + + # Rewrite ' "$foo" ' -> ' $foo '. + # Rewrite ' "$foo"' -> ' $foo'. + sed -i 's/\([ \t][ \t]*\)"\$\([a-zA-Z0-9_]*\)"$/\1$\2/g' "$f" + sed -i 's/\([ \t][ \t]*\)"\$\([a-zA-Z0-9_]*\)"\([ \t][ \t]*\)/\1$\2\3/g' "$f" +} + +main () +{ + if [ $# -eq 0 ]; then + mapfile files < <(find gdb/testsuite -type f -name "*.exp*") + else + files=("$@") + fi + + for f in "${files[@]}"; do + f=$(echo $f) + sum=$(md5sum "$f") + while true; do + handle_file "$f" + prev=$sum + sum=$(md5sum "$f") + if [ "$sum" == "$prev" ]; then + break + fi + done + done +} + +main "$@" base-commit: ca357a9359f5d09058d27fc1f84f1d53c2717ba1 -- 2.35.3