From patchwork Tue Mar 25 13:14:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029005 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 736AD25EF92 for ; Tue, 25 Mar 2025 13:14:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908468; cv=none; b=XPsobKAJQOZF4dNa150AjfYZCRft9rtXjm9fl7U5e3Adu5/cZ3+Xr3P2HmSkmrWOGOEPM7FcDCxsepiOO7PnPzQJxFIyeqATep4q+0I6Bbms4SPai+DhoNe5G9Ng+g5EQnpgnHMl/hHBNu5j7MTupmgn0tqgVZzBlQ/S/K0HjNs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908468; c=relaxed/simple; bh=r+44rd782YT6x6dz2cANM6QpWXIcYEb9ttd/QWrrMRU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jrolIW7jOb3KlnFFldZTTy0U4NQk5rhfju5kXJ2Lw3xJkducmFOke8buD40L2CnPLGDeT6pjsy98rlZUX228bSFoNYu0QLFTyXqahmVIpJkz7EUlKcyG0PdEj6MfL6NONcDTWH97DKzvKG1eEEJF5nS1qZs5itAyWoKNKr4wjwA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=PxCn42XP; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=SQIj08kq; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="PxCn42XP"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="SQIj08kq" Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfhigh.phl.internal (Postfix) with ESMTP id 7DFA11140272; Tue, 25 Mar 2025 09:14:25 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Tue, 25 Mar 2025 09:14:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908465; x=1742994865; bh=bBnzsBxGrvlhpKUDGvjbdM63lE9bkJM7rbSwjIEVqBc=; b= PxCn42XP0n/MyI6tacWLpZIPVEDGg/aJHyIGZLd00yfOi25OwbdWaACM60HS6xEF AqJEfCgOIA2s7uWNTNVLG0eSFzPPnqJdKUyW4ST27qQbd7ccHFYdqzCcDeioLHfP caTMDtYbG9gqszoSu1KISOp6IHxsxFPZVbREJjkvQKcDHW2uQ1JKtYOkfA7auxEO 9DOQuDurxWpCkrrNcmCc9sELJbjFuvBJt1bKw5HnzJTzkviWbGyUmkiOaMvRsLWZ Lmss24x2FJ5AgE8utj023nx2aSCdZhmjiOOQdK95ZVj9UIOO0bXSrRbEfySt9c0+ AJ5hEn1EC/jk8wV7ZPwb3g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908465; x= 1742994865; bh=bBnzsBxGrvlhpKUDGvjbdM63lE9bkJM7rbSwjIEVqBc=; b=S QIj08kqm64u0hr2NCuEm7f/pR0Scd5OG+oJgf75Mi/N7EPuL2J/t39CZCyR6uSN5 PW73AcHJSOkcWuW9rIsM0SBpa2reLApe9vyJTptI6S4Czn00S0QeMZKSVx/iyEtc RedrAwPj7Cp7dTYL4kmp/cdSGeNW+EDU0cR1IF0xZ1b8hSkRgaHwP/TPAr1R1GvX 3KalvR79dTTWV58sFgaVTKgspfMxGACYudNEgqrwSpuZedYkah5z14E7dEzz8oXO PrV2n4BO/AJZQSWYVMpc7CFthJTWEYa343vM2Ns7Qn2fHYA4PhN8M9X4ZHmrB2rC Ruw5ZrwnJCQg/d+LJjiPg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorh hgpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdprhgtphht thhopehjohhhrghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvgdprhgtphhtth hopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpthhtohep shhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:24 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id b8dadba2 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:22 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:19 +0100 Subject: [PATCH v2 01/20] t: skip chain lint when PERL_PATH is unset Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-1-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 Our chainlint script verifies that test files have proper '&&' chains. This script is written in Perl and executed for every test file before executing the test logic itself. In subsequent commits we're about to refactor our test suite so that Perl becomes an optional dependency, only. And while it is already possible to disable this linter, developers that don't have Perl available at all would always have to disable the linter manually, which is rather cumbersome. Disable the chain linter automatically in case PERL_PATH isn't set to make this a bit less annoying. Bail out with an error in case the developer has asked explicitly for the chain linter. Signed-off-by: Patrick Steinhardt --- t/test-lib.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/t/test-lib.sh b/t/test-lib.sh index 9001ed3a647..1ce3b32fcac 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1523,6 +1523,22 @@ then export LSAN_OPTIONS fi +if test -z "$PERL_PATH" +then + case "${GIT_TEST_CHAIN_LINT:-unset}" in + unset) + GIT_TEST_CHAIN_LINT=0 + ;; + 0) + # The user has explicitly disabled the chain linter, so we + # don't have anything to worry about. + ;; + *) + BAIL_OUT 'You need Perl for the chain linter' + ;; + esac +fi + if test "${GIT_TEST_CHAIN_LINT:-1}" != 0 && test "${GIT_TEST_EXT_CHAIN_LINT:-1}" != 0 then From patchwork Tue Mar 25 13:14:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029006 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5F1125EF90 for ; Tue, 25 Mar 2025 13:14:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908469; cv=none; b=dnuc+v0vGloBjVfXslWuNTd/0U3dcckC2QBTLYSbcswYcOnoBVXV9xR9ghvJfRlghjGDtFVIZ8XQhV8ixPLdgLp+lpW7V4Pn9/3hEgq41DyLT2gzXQu4mj7ihlUMtNeao74I//pxy9RG5uztN//ajKEWqfbVDRvG6HFaGL9exbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908469; c=relaxed/simple; bh=mnP/eIeyddsprQjbJ5j4kWT5R94K7zpMiz8gFfvNNhQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SVSdUqUpwqJ1uAw1sANugm+eDS1ZAjnB/k4tASr+fU7h3a710QcJF6+6s5CsyGYBzm2CufRtogZ4vrDAkqod5YFqFR9q1s/7vsLhMR4XJg/twcT4+SdW1YbyJRSqDReK85SVGyjhEOEiQupAatbeg4jjV1vzBP0MPH6O+IiPUes= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=YmL+182b; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=pGaNh9K3; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="YmL+182b"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="pGaNh9K3" Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfout.phl.internal (Postfix) with ESMTP id 7CB551383842; Tue, 25 Mar 2025 09:14:26 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Tue, 25 Mar 2025 09:14:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908466; x=1742994866; bh=06AlNuR4CTpgnkt91LHbVtA+Vq9aPaC5SAotSYkUmBY=; b= YmL+182beBCTEn5Fn/Eypn+XESjzobZNz/xJWiPZQgRyn0XuX8d1LtpJ6rfRXTmx rM15sHTYjuzltIUEVDEXnm/UPCG0+cnVPgKAPFaeHpO9+urI7cr94WlkHd7GjkN5 pRIU3uQ90Vnj2Hme00es9uFc+untGAehAIJbYVV9+GI79PVAKXXxUlVw2Laqx8HD EA4SjnqG3gdS37vcvwdLlrvmyLhSWFCH9CXRgw9c5Bd/AoVirT3FwusKwYEFtu1r /GkZRGBTerq3HnpXVtKVXEIyql4gc5j41UyLfQX8hbFMsjXr36cle1Apl+Xq8FSj ndnfEaqELPYufiIlEAPngg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908466; x= 1742994866; bh=06AlNuR4CTpgnkt91LHbVtA+Vq9aPaC5SAotSYkUmBY=; b=p GaNh9K3n46ZHq6X+aUAqTx5OY09HTaladVR40ATarHI5YuQbVkLFO2UsuuSAh+Q3 dr72TyzX8A/7AfkqJ7j76qfqsFmGzYbTakblDBHEDLgTbLYXOogslBwbaASDfpjl ALF5Awb+xCfKwUE7WHOv4brS8vzFTwOKL07ALFAFl3X6qusGXW2746RFd4RE+uMW Q6m82ttKtsMRp1ajH/r8KCW/gL9/nO7BDi+32HhQpls2c24EHOhorDkwEHr7YcyH Ij9qAKi4R9ueyHbwp3LzsDNOIoOzs1ai1qiessvUg6UEBA9K017rkuHw5aJAbbfT 9JJkiZG4tjK05IEWt8CiA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmh grihhlrdgtohhmpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdr tghomhdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrdgtohhmpdhrtg hpthhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehjohhh rghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvg X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:25 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 4a49ea95 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:23 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:20 +0100 Subject: [PATCH v2 02/20] t: refactor environment sanitization to not use Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-2-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 Before executing tests we first sanitize the environment. Part of the sanitization is to unset a couple of environment variables that we know will change the behaviour of Git. This is done with a small Perl script, which has the consequence that having a Perl interpreter available is a strict requirement for running our unit tests. The logic itself isn't particularly involved: we simply unset every environment variable whose key starts with 'GIT_', but then explicitly allow a subset of these. Refactor the logic to instead use sed(1) so that it becomes possible to execute our tests without Perl. Based-on-patch-by: Johannes Schindelin Signed-off-by: Patrick Steinhardt --- t/test-lib.sh | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/t/test-lib.sh b/t/test-lib.sh index 1ce3b32fcac..a62699d6c79 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -499,24 +499,20 @@ EDITOR=: # /usr/xpg4/bin/sh and /bin/ksh to bail out. So keep the unsets # deriving from the command substitution clustered with the other # ones. -unset VISUAL EMAIL LANGUAGE $("$PERL_PATH" -e ' - my @env = keys %ENV; - my $ok = join("|", qw( - TRACE - DEBUG - TEST - .*_TEST - PROVE - VALGRIND - UNZIP - PERF_ - CURL_VERBOSE - TRACE_CURL - BUILD_DIR - )); - my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env); - print join("\n", @vars); -') +unset VISUAL EMAIL LANGUAGE $(env | sed -n \ + -e '/^GIT_TRACE/d' \ + -e '/^GIT_DEBUG/d' \ + -e '/^GIT_TEST/d' \ + -e '/^GIT_.*_TEST/d' \ + -e '/^GIT_PROVE/d' \ + -e '/^GIT_VALGRIND/d' \ + -e '/^GIT_UNZIP/d' \ + -e '/^GIT_PERF_/d' \ + -e '/^GIT_CURL_VERBOSE/d' \ + -e '/^GIT_TRACE_CURL/d' \ + -e '/^GIT_BUILD_DIR/d' \ + -e 's/^\(GIT_[^=]*\)=.*/\1/p' +) unset XDG_CACHE_HOME unset XDG_CONFIG_HOME unset GITPERLLIB From patchwork Tue Mar 25 13:14:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029007 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F5A92586CE for ; Tue, 25 Mar 2025 13:14:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908470; cv=none; b=ScIxg8WJx3B+OmW2rpG0cPwI+8OCVG0k7vdmZu+B16sPHZs+wAWzlqov1xasFXX38HSsUbbBDiHBhIdU3C2A03oeR9W09UBPQZfr8Kyfb3j3JSp6UGaeefRgCjiQBprWfZekTwaR3lGXttW75aGbud5gBQw5xXvdEvLNjhDjBps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908470; c=relaxed/simple; bh=kKgvJiD5iH1IYiP1JXsWCfXPuHkS/ptohqpHvpbx2tI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ag4pdKd6602wTI6tFlnrG9RCG+wJ321BNIDuDpRJVI5b17RcxJLC3xIxet01U/GlFjnmY5dFjgGTo0Aj90sykDxptwNPHQJBqMuTj6CEHdGXbhC4m/pc7gZgi3AdiSwi0xuApvpGvSK4TZ61hNqYB3iWZZTpRCc+kOaq762mKXM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=GKqjELyQ; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Doik7E+v; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="GKqjELyQ"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Doik7E+v" Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfout.phl.internal (Postfix) with ESMTP id C40F113838C3; Tue, 25 Mar 2025 09:14:26 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Tue, 25 Mar 2025 09:14:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908466; x=1742994866; bh=REpbEfss2O2yYYKccRFcgbK1nvTKhdXojvppgXjTFuc=; b= GKqjELyQmpVlJgMEe4ClS8vChOibLyyG/EakMrIetb44Cvb/dZfb7ssbluz86obb LsgdbLYaTT9YDsgn9qhjJxn7MzrGJmGpq+AdTecyBxpESV1a63pTqwecK4uOHzBs ViRW6MArOFudGJjJOKKj4oIz0GN5my2uvkf/hEVs5ihUrn4M9h89bfZ6Qab61PlF aF6kMTdXys/UM1M//9Qp9wDtYUxZYiYJbKSu1OzYrWKqRXFRU0DyY6HIdmLgxtTE Vna2NFEqN6KQCtvciW8rjKuzmuirS8G5lSLvwC48d7zcZf0JVp5E5uyuyCJ82ngC jMNu7fbRFQ0F0gGXN+srdw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908466; x= 1742994866; bh=REpbEfss2O2yYYKccRFcgbK1nvTKhdXojvppgXjTFuc=; b=D oik7E+vDidLUFJbiBCdrN0Uhy97S4kLhBBdZyq9TWRK+BXiVJ9RWSQYGjWlMtdhh /4j5dUmy51fLGQly/2P6hsWDPP4EbkCwvrl0zrRHYvTMn6/S8y8TvfFpeuuAM+xs Em1W2dIta/RMS20XrsqXVJrVDNUnmaOpJf1xY3fqs+UlEpUPycQdDQgUqHM97sjO CJQEkOBNKoWQvwbRYLE5EmIPAz59agsNn24xgZUEJdbh9t6lrLzLPiYx+kkZqocQ Xl4XiNiw6DZbOSNHupm3L/7olBKctuoQ3S79z8pJP02UxmcS3rIpCMf//vP3ZKdU Kz5hKym7q0INeR0DG6xvQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtg hordgtohhmpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdp rhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepph hhihhllhhiphdrfihoohguuddvfeesghhmrghilhdrtghomhdprhgtphhtthhopehjohhh rghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvg X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:25 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 7d6ff17d (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:24 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:21 +0100 Subject: [PATCH v2 03/20] t: adapt character translation helpers to not use Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-3-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 We have a couple of helper functions that translate characters, e.g. from LF to NUL or NUL to 'Q' and vice versa. These helpers use Perl scripts, but they can be trivially adapted to instead use tr(1). Note that one specialty here is the handling of NUL characters in tr(1), which historically wasn't implemented correctly on all platforms. But quoting tr(1p): It was considered that automatically stripping NUL characters from the input was not correct functionality. However, the removal of -n in a later proposal does not remove the requirement that tr correctly process NUL characters in its input stream. So when tr(1) is implemented following the POSIX standard then it is expected to handle the transliteration of NUL just fine. Refactor the helpers accordingly, which allows a bunch of tests to pass when Perl is not available. Signed-off-by: Patrick Steinhardt --- t/test-lib-functions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 79377bc0fc2..377f08a1428 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -88,15 +88,15 @@ test_decode_color () { } lf_to_nul () { - perl -pe 'y/\012/\000/' + tr '\012' '\000' } nul_to_q () { - perl -pe 'y/\000/Q/' + tr '\000' 'Q' } q_to_nul () { - perl -pe 'y/Q/\000/' + tr 'Q' '\000' } q_to_cr () { From patchwork Tue Mar 25 13:14:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029009 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4729267F48 for ; Tue, 25 Mar 2025 13:14:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908471; cv=none; b=GJf9F83zh8u+QiAuHz2IAAjLIbvW4CJZ3G3YjRyLMdBrT3d1U3bC1JVx8wNKH+hnK+o770gIn1sRK/U8LBK7lMhG33ZsQMyYVJnq9KUmDmgDHXlfP4RWSL3jCikr7CQcRfQEIMaGrVjdjmTNa3zN6OF4yYaSsRrjfCNZJ3Vv2Ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908471; c=relaxed/simple; bh=QjgKs2zBlmqc+C10EXoziYvrwPFdIEO6RN7X/4TjnLY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mUla0bUsYwjddZgfErV+1XR02pltXyS9EauYScfX1vMzElCLih/UIAhhBmhu6tPNyoOD1F5Erqk2FUr3hXujX5KBlJVCq5FagbWJGc6Iw8NLgzLNuK7IMWXHe6+sRfmwcBcztQneLx9IbqnwohE3ATGx+Zlp9E9KU2szB8Ik3+w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=q76C3Wa2; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=J2lTrB+J; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="q76C3Wa2"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="J2lTrB+J" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id AA86B13838F0; Tue, 25 Mar 2025 09:14:27 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908467; x=1742994867; bh=FVRzN5probz2tBNOBHZiwqoUS1ZTExFewoPw5q+Mbg4=; b= q76C3Wa2/OWbiEocbNnIxQpVXEf48pTFLUzNf0mceBk7Od/z4Lx+UvXIKiPf1DBx F2V+DhL4ye/eae6zXed2/o9d2ONFh8igq9ltWiE++zB8A+5JpQgcvzi7EVJYFL03 jYzsbgxAvT4Pyqa+POVSFikCLpXxAJJ1LlyvbUvsvcOq7CJ4iCaaiB7uXbG2EOE/ D9v50IaWjb5z4OvimAvZFlfQwdr6hti+8Oo9ZfZY9KNKLU9mDDAKLNHcIrxb/nBE f46wvosrk5c8Arj6Gx0XZPYT5/WRUfISlcIpAItNQNJgXEFm+CDzqCBJLw8ulgae NQMrmLa23ypv7KAj4veiQA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908467; x= 1742994867; bh=FVRzN5probz2tBNOBHZiwqoUS1ZTExFewoPw5q+Mbg4=; b=J 2lTrB+JtXXa52Nq+SO8/ZCdt/6U1u0VRF3pi8mvvkJr1tIOb9JSXlJ6jX8fcfiXq ClxBSSeFsp3yr0BAwDitQA/o8BxB9hy+IMd8uDb2Dlh9ovZrA8GObTtosNk7OM/2 56rFt+F3sxUzATZNtKxdVYsH+WWexOV3/y9SQhAlrD1casqp/84Z3m71vTul0//J vW8yQNnk2x9kmK5EN8I8/uwGGBd+37H92WmwvQ25l4GuJ5SrUjVgWuBFXu5zcrBE 3iiw4KZLgjDbVVoSC4DdpHguZdgxx6o5r3lhdeUnL03CrfYr8EDqbmo9a/KCfhit IDUXRSeg4Iefo8nn+MZ9g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrd gtohhmpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdp rhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvgdprh gtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghp thhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:26 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 9a6cd06d (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:25 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:22 +0100 Subject: [PATCH v2 04/20] t: adapt `test_copy_bytes()` to not use Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-4-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `test_copy_bytes()` helper function copies up to N bytes from stdin to stdout. This is implemented using Perl, but it can be trivially adapted to instead use dd(1). Refactor the helper accordingly, which allows a bunch of tests to pass when Perl is not available. Signed-off-by: Patrick Steinhardt --- t/test-lib-functions.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 377f08a1428..c4b4d3a4c7f 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1640,17 +1640,7 @@ test_match_signal () { # Read up to "$1" bytes (or to EOF) from stdin and write them to stdout. test_copy_bytes () { - perl -e ' - my $len = $ARGV[1]; - while ($len > 0) { - my $s; - my $nread = sysread(STDIN, $s, $len); - die "cannot read: $!" unless defined($nread); - last unless $nread; - print $s; - $len -= $nread; - } - ' - "$1" + dd ibs=1 count="$1" 2>/dev/null } # run "$@" inside a non-git directory From patchwork Tue Mar 25 13:14:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029008 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BDE9625F78D for ; Tue, 25 Mar 2025 13:14:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908470; cv=none; b=unxWjYTVUcye1xGymFqZejmhVe0vodDOyVNBk9/Mxm5dVGr6WnnaQOWzpdxc25CwOC27CzpOEX4hfgSzjt48pRv0gkkXuKp0EBFHgA9rKI/ebtr7l6o5aDjf96+xwvzQlGUofKZmbqtYid8Urzd4w/R5HvadIw9RkiSeM+6YGOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908470; c=relaxed/simple; bh=0QvGEqC1CcXw7qB+3oNkUJawQaEJu+9o4Wx89q7QTk4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJCaZMF/iOYIJI8W1SFXtyTzdTsLxW0v9+KI6ZIn7T2Np+6Y+0T1wtjR+B9P+BulQZ+QwUc/tvQRaMDAlVfnGFBP4EAEdaSrlbLq4smRP3SkJ1qLFFBgtrQytqQvfDaj8hdYo63zYSouAY60bIWGbXO9ehvNh1zUuA/CWCNWU2s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=MgaOvUyn; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=K3xhjNh9; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="MgaOvUyn"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="K3xhjNh9" Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52]) by mailfhigh.phl.internal (Postfix) with ESMTP id 2E7EB1140297; Tue, 25 Mar 2025 09:14:28 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Tue, 25 Mar 2025 09:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908468; x=1742994868; bh=TxAb3XKVEc3uafQcc1aYp4YdbmPnHpNoCoLGnfZwU+s=; b= MgaOvUynqyj6M/MnDrls72IEdAFRNZLKBY7lOyZ/rkQnTFl/EsUxpTKcVvAm3hbN OZkYlvnCofYVIs3HnP2PdBrH0hfEWqR3Gs5YvwXuJq2tzijiUotyF1ZZaKQOU7ni IWvV6g2qfQNOwL2QU9ACAdx/HFMDmg+wMqpvw19bZqAFhDdk7+IycvT8mXmgc2SS si+OKej4h5FBq+Z90iVxYk9kxZumqz65G2dp69Otri1/wsYI0c0LbJWTMoozLFJ/ RgsQ1pIyW8jQoxbCUP8hlmrktsKz8iORBOBCTP41VljPtsgtOPPbpPq7AGyIsvjV I6ZyYFGo1L529ETehF/L9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908468; x= 1742994868; bh=TxAb3XKVEc3uafQcc1aYp4YdbmPnHpNoCoLGnfZwU+s=; b=K 3xhjNh97yzt4WcHiR5HUW02m0m51ahijw2x6j/JZKH+gcjEziA5hwulJxRs5QzU3 Z/rDiPnV57NPQJ8C1r7fB8MrVflmOpyuWwn7JamY/mY/kV/fqEbOioUhsYxO44kq tlp+NLgB2otWGgVm13Ra8cdWEmDhfaoIhmwkKHCY/VpqysEB4okUbFOD54TbtxOU wIi2STJ9Ab+GhTc1LWsBPQhNwF2cw6hbjadJA/JQiEZKxPDn9Eh0cLjTLN3M/6E8 S3vn3ztOGcnD6UP+K7R2p+1gvFs4f4h1S6tkqekWYbHxtflRXQCXMZFFiCM1Zd0R zXvZBibDfPTGUAvGT4ZtQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorh hgpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprhgt phhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpth htohepjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhmgidruggvpdhrtghpthht ohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:26 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 198b8111 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:26 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:23 +0100 Subject: [PATCH v2 05/20] t: adapt `test_readlink()` to not use Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-5-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `test_readlink()` helper function reads a symbolic link and returns the path it is pointing to. It is thus equivalent to the readlink(1) utility, which isn't available on all supported platforms. As such, it is implemented using Perl so that we can use it even on platforms where the shell utility isn't available. While using readlink(1) is not an option, what we can do is to implement the logic ourselves in our test-tool. Do so, which allows a bunch of tests to pass when Perl is not available. Signed-off-by: Patrick Steinhardt --- t/helper/test-path-utils.c | 13 +++++++++++++ t/test-lib-functions.sh | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c index 72ac8d1b1b0..54d9ba98c0e 100644 --- a/t/helper/test-path-utils.c +++ b/t/helper/test-path-utils.c @@ -323,6 +323,19 @@ int cmd__path_utils(int argc, const char **argv) return 0; } + if (argc >= 2 && !strcmp(argv[1], "readlink")) { + struct strbuf target = STRBUF_INIT; + while (argc > 2) { + if (strbuf_readlink(&target, argv[2], 0) < 0) + die_errno("cannot read link at '%s'", argv[2]); + puts(target.buf); + argc--; + argv++; + } + strbuf_release(&target); + return 0; + } + if (argc >= 2 && !strcmp(argv[1], "absolute_path")) { while (argc > 2) { puts(absolute_path(argv[2])); diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index c4b4d3a4c7f..bff8c4d1b41 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1979,7 +1979,7 @@ test_remote_https_urls() { # Print the destination of symlink(s) provided as arguments. Basically # the same as the readlink command, but it's not available everywhere. test_readlink () { - perl -le 'print readlink($_) for @ARGV' "$@" + test-tool path-utils readlink "$@" } # Set mtime to a fixed "magic" timestamp in mid February 2009, before we From patchwork Tue Mar 25 13:14:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029012 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 45143267F66 for ; Tue, 25 Mar 2025 13:14:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908475; cv=none; b=i19uOV33h75+LsvXSOsDWifmLtfPrQEsMJB8T2R5a/5CSeo4Ye+i9vc64DyjiWwK+W7iGss9hTrwvRGGPqjWQpaE3Ia2ExS1pCpS/28IAEroupoc6vobU50WcUAtTlVsCrfobw6bfp5jbY8vvvp8JtbMorTDB9RViZ6F478R8Z4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908475; c=relaxed/simple; bh=A2RJ7sWG25s8mb3/wGr5DJD3ITh8swC0nNs6KTrdaro=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QuCB/zZbPzfDicXcjTKxZ/h6n6s9jZ9yXEpR8U9NiddAqUqXZUfY/D9q/YX3bwtEJqeNNEfd9QoNSHOlZO7CjoKLW0e7Wrqhi332UktSNiX1iK0OnaIK/N0NchsfADCCee8MT4WVNUZZIh5WJEppz9WlF6mckyIyZ2g0CohCwMs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=GXHG2and; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=ue7Xrs2y; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="GXHG2and"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="ue7Xrs2y" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id 21ED5138383D; Tue, 25 Mar 2025 09:14:29 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908469; x=1742994869; bh=dK6LofYUeVoLAnBSTe0CD9QNgI9xxsQW6fvzlpALdIA=; b= GXHG2andGkZBVZ10gF6uQFwd1+E7cDNACnJwYgwEEb9UOcGkwXA0pGPrVuzTuG/+ 6DdeH4OLTEgvaqguZvlLsiILPybQ+MXg7mmxx2C5ULizsWPOnCyZMQdRc3R8UGqh NUxYl/PNam+AaU718F2N00FFUt61IAG/PoBGO1E5+KFpkwwVNPhLDrHmMy07kWXG 4TmbsU/5PLhTaeOlnnPgzNf7/ofvX5IvbIYgQRcPN45Fjj5APmPkcvmhKel4R/OU m5au3qTm/F28K9v4Kido8h8sDvSUk+BaVWwP/g8zPIn2W/tvsB8fAl2jn1vJAJ48 h7NiRPXN+CDn9QNSe7jqGg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908469; x= 1742994869; bh=dK6LofYUeVoLAnBSTe0CD9QNgI9xxsQW6fvzlpALdIA=; b=u e7Xrs2yVMZDvuktOQ1Z2GKFXVPHKv1PVqcJezFi4yC2vKKLl/q8zzTeVflaWufzy I0nbwkEoj+3rXFafRrvG56fFflheLtzopt1ItP07v4jO34wpwllGV4jvTtynAXw5 pcP02Sus0FEgs3m0XSpx9u69brLS1HQY8NkZ37nEZas/MArZqgyyrFo5DRAbBoJT USgPw5uBFcSMi6DFnOXPRQB75C1a/cY+/1Y1xrMkCg0tI0c0bWe+RvGQ+jlnzeYJ wIUmvzGqlsww01jtf67Zn/GJT8QmhMVe+/FA1jZ/1PXho/Mo20VttqLk/d93tnOR 2Ysq+xS1kdAqFK+aSKDJA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtkeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeduheffgfeugffgvdfglefgudekfeffvdevjedv vedugfehieeiudfgjeeiffehueenucffohhmrghinhephhhtthhpqdhfvghttghhqdhsmh grrhhtrdhshhdphhhtthhpqdgsrggtkhgvnhguqdgtohhnthgvnhhtqdhlvghnghhthhdr shhhpdhhthhtphgurdhshhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohguvgep shhmthhpohhuthdprhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlihhnse hgmhigrdguvgdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtghordgt ohhmpdhrtghpthhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtth hopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpthhtohep khgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:27 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 89fb9cea (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:27 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:24 +0100 Subject: [PATCH v2 06/20] t: introduce PERL_TEST_HELPERS prerequisite Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-6-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 In the early days of Git, Perl was used quite prominently throughout the project. This has changed significantly as almost all of the executables we ship nowadays have eventually been rewritten in C. Only a handful of subsystems remain that require Perl: - gitweb, a read-only web interface. - A couple of scripts that allow importing repositories from GNU Arch, CVS and Subversion. - git-send-email(1), which can be used to send mails. - Our Perl bindings for Git. - The netrc Git credential helper. None of these subsystems can really be considered to be part of the "core" of Git, and an installation without them is fully functional. It is more likely than not that an end user wouldn't even notice that any features are missing if those tools weren't installed. But while Perl nowadays very much is an optional dependency of Git, there is a significant limitation when Perl isn't available: developers cannot run our test suite. Preceding commits have started to lift this restriction by removing the strict dependency on Perl in many central parts of the test library. But there are still many tests that rely on small Perl helpers to do various different things. Introduce a new PERL_TEST_HELPERS prerequisite that guards all tests that require Perl. This prerequisite is explicitly different than the preexisting PERL prerequisite: - PERL records whether or not features depending on the Perl interpreter are built. - PERL_TEST_HELPERS records whether or not a Perl interpreter is available for our tests. By having these two separate prerequisites we can thus distinguish between tests that inherently depend on Perl because the underlying feature does, and those tests that depend on Perl because the test itself is using Perl. Adapt all tests to set the PERL_TEST_HELPERS prerequisite as needed. Signed-off-by: Patrick Steinhardt --- t/t0008-ignores.sh | 6 ++++++ t/t0021-conversion.sh | 4 ++-- t/t0210-trace2-normal.sh | 6 ++++++ t/t0211-trace2-perf.sh | 6 ++++++ t/t0610-reftable-basics.sh | 2 +- t/t0613-reftable-write-options.sh | 2 +- t/t1006-cat-file.sh | 2 +- t/t1007-hash-object.sh | 6 +++--- t/t1010-mktree.sh | 4 ++-- t/t1450-fsck.sh | 6 +++--- t/t3300-funny-names.sh | 6 +++--- t/t4013-diff-various.sh | 6 ++++++ t/t4014-format-patch.sh | 30 +++++++++++++++--------------- t/t4020-diff-external.sh | 4 ++-- t/t4029-diff-trailing-space.sh | 2 +- t/t4030-diff-textconv.sh | 6 ++++++ t/t4031-diff-rewrite-binary.sh | 2 +- t/t4058-diff-duplicates.sh | 6 ++++++ t/t4103-apply-binary.sh | 6 ++++++ t/t4116-apply-reverse.sh | 6 ++++++ t/t4150-am.sh | 2 +- t/t4200-rerere.sh | 6 ++++++ t/t4205-log-pretty-formats.sh | 6 +++--- t/t4216-log-bloom.sh | 8 ++++---- t/t5004-archive-corner-cases.sh | 6 ++++++ t/t5300-pack-object.sh | 6 ++++++ t/t5303-pack-corruption-resilience.sh | 4 ++-- t/t5310-pack-bitmaps.sh | 2 +- t/t5316-pack-delta-depth.sh | 8 ++++---- t/t5318-commit-graph.sh | 12 ++++++------ t/t5319-multi-pack-index.sh | 16 ++++++++-------- t/t5324-split-commit-graph.sh | 2 +- t/t5326-multi-pack-bitmaps.sh | 2 +- t/t5328-commit-graph-64bit-time.sh | 2 +- t/t5333-pseudo-merge-bitmaps.sh | 6 ++++++ t/t5400-send-pack.sh | 2 +- t/t5410-receive-pack-alternates.sh | 4 ++-- t/t5503-tagfollow.sh | 6 ++++++ t/t5504-fetch-receive-strict.sh | 2 +- t/t5510-fetch.sh | 6 ++++++ t/t5532-fetch-proxy.sh | 6 ++++++ t/t5534-push-signed.sh | 2 +- t/t5537-fetch-shallow.sh | 2 +- t/t5551-http-fetch-smart.sh | 7 +++++++ t/t5562-http-backend-content-length.sh | 6 ++++++ t/t5601-clone.sh | 4 ++-- t/t5616-partial-clone.sh | 6 +++--- t/t5701-git-serve.sh | 2 +- t/t5702-protocol-v2.sh | 6 +++--- t/t5703-upload-pack-ref-in-want.sh | 6 ++++++ t/t5710-promisor-remote-capability.sh | 6 ++++++ t/t6002-rev-list-bisect.sh | 6 ++++++ t/t6003-rev-list-topo-order.sh | 6 ++++++ t/t6011-rev-list-with-bad-commit.sh | 6 ++++++ t/t6013-rev-list-reverse-parents.sh | 4 ++-- t/t6102-rev-list-unexpected-objects.sh | 6 ++++++ t/t6115-rev-list-du.sh | 6 ++++++ t/t6300-for-each-ref.sh | 6 ++++++ t/t7006-pager.sh | 2 +- t/t7416-submodule-dash-url.sh | 6 ++++++ t/t7508-status.sh | 2 +- t/t7815-grep-binary.sh | 6 ++++++ t/t8001-annotate.sh | 6 ++++++ t/t8002-blame.sh | 6 ++++++ t/t8006-blame-textconv.sh | 6 ++++++ t/t8011-blame-split-file.sh | 6 +++--- t/t8012-blame-colors.sh | 6 ++++++ t/t9137-git-svn-dcommit-clobber-series.sh | 4 ++-- t/t9350-fast-export.sh | 2 +- t/t9850-shell.sh | 2 +- t/test-lib.sh | 1 + 71 files changed, 281 insertions(+), 93 deletions(-) diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh index c9376dffb58..1aaa6bf5ae8 100755 --- a/t/t0008-ignores.sh +++ b/t/t0008-ignores.sh @@ -5,6 +5,12 @@ test_description=check-ignore TEST_CREATE_REPO_NO_TEMPLATE=1 . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping ignores tests; Perl not available' + test_done +fi + init_vars () { global_excludes="global-excludes" } diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh index 3f6433d3045..9c3738ebb3f 100755 --- a/t/t0021-conversion.sh +++ b/t/t0021-conversion.sh @@ -619,7 +619,7 @@ test_expect_success 'required process filter should be used only for "clean" ope ) ' -test_expect_success 'required process filter should process multiple packets' ' +test_expect_success PERL_TEST_HELPERS 'required process filter should process multiple packets' ' test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" && test_config_global filter.protocol.required true && @@ -684,7 +684,7 @@ test_expect_success 'required process filter should process multiple packets' ' ) ' -test_expect_success 'required process filter with clean error should fail' ' +test_expect_success PERL_TEST_HELPERS 'required process filter with clean error should fail' ' test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" && test_config_global filter.protocol.required true && rm -rf repo && diff --git a/t/t0210-trace2-normal.sh b/t/t0210-trace2-normal.sh index 4287ed3fbb3..ba4c0442b85 100755 --- a/t/t0210-trace2-normal.sh +++ b/t/t0210-trace2-normal.sh @@ -4,6 +4,12 @@ test_description='test trace2 facility (normal target)' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping trace2 tests; Perl not available' + test_done +fi + # Turn off any inherited trace2 settings for this test. sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT sane_unset GIT_TRACE2_BRIEF diff --git a/t/t0211-trace2-perf.sh b/t/t0211-trace2-perf.sh index bac90465406..760cf69087f 100755 --- a/t/t0211-trace2-perf.sh +++ b/t/t0211-trace2-perf.sh @@ -4,6 +4,12 @@ test_description='test trace2 facility (perf target)' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping trace2 tests; Perl not available' + test_done +fi + # Turn off any inherited trace2 settings for this test. sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT sane_unset GIT_TRACE2_PERF_BRIEF diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh index 4618ffc108e..5e0a1fa176d 100755 --- a/t/t0610-reftable-basics.sh +++ b/t/t0610-reftable-basics.sh @@ -643,7 +643,7 @@ test_expect_success 'basic: commit and list refs' ' test_cmp actual expect ' -test_expect_success 'basic: can write large commit message' ' +test_expect_success PERL_TEST_HELPERS 'basic: can write large commit message' ' test_when_finished "rm -rf repo" && git init repo && perl -e " diff --git a/t/t0613-reftable-write-options.sh b/t/t0613-reftable-write-options.sh index e2708e11d5b..fa1e2f9eef8 100755 --- a/t/t0613-reftable-write-options.sh +++ b/t/t0613-reftable-write-options.sh @@ -139,7 +139,7 @@ test_expect_success 'small block size leads to multiple ref blocks' ' ) ' -test_expect_success 'small block size fails with large reflog message' ' +test_expect_success PERL_TEST_HELPERS 'small block size fails with large reflog message' ' test_when_finished "rm -rf repo" && git init repo && ( diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh index 398865d6ebe..a574da3df53 100755 --- a/t/t1006-cat-file.sh +++ b/t/t1006-cat-file.sh @@ -1270,7 +1270,7 @@ extract_batch_output () { ' "$@" } -test_expect_success 'cat-file --batch-all-objects --batch ignores replace' ' +test_expect_success PERL_TEST_HELPERS 'cat-file --batch-all-objects --batch ignores replace' ' git cat-file --batch-all-objects --batch >actual.raw && extract_batch_output $orig actual && { diff --git a/t/t1007-hash-object.sh b/t/t1007-hash-object.sh index a0481139de5..b3cf53ff8c9 100755 --- a/t/t1007-hash-object.sh +++ b/t/t1007-hash-object.sh @@ -205,7 +205,7 @@ test_expect_success 'too-short tree' ' grep "too-short tree object" err ' -test_expect_success 'malformed mode in tree' ' +test_expect_success PERL_TEST_HELPERS 'malformed mode in tree' ' hex_oid=$(echo foo | git hash-object --stdin -w) && bin_oid=$(echo $hex_oid | hex2oct) && printf "9100644 \0$bin_oid" >tree-with-malformed-mode && @@ -213,7 +213,7 @@ test_expect_success 'malformed mode in tree' ' grep "malformed mode in tree entry" err ' -test_expect_success 'empty filename in tree' ' +test_expect_success PERL_TEST_HELPERS 'empty filename in tree' ' hex_oid=$(echo foo | git hash-object --stdin -w) && bin_oid=$(echo $hex_oid | hex2oct) && printf "100644 \0$bin_oid" >tree-with-empty-filename && @@ -221,7 +221,7 @@ test_expect_success 'empty filename in tree' ' grep "empty filename in tree entry" err ' -test_expect_success 'duplicate filename in tree' ' +test_expect_success PERL_TEST_HELPERS 'duplicate filename in tree' ' hex_oid=$(echo foo | git hash-object --stdin -w) && bin_oid=$(echo $hex_oid | hex2oct) && { diff --git a/t/t1010-mktree.sh b/t/t1010-mktree.sh index c291a2b33d7..4977998e205 100755 --- a/t/t1010-mktree.sh +++ b/t/t1010-mktree.sh @@ -41,13 +41,13 @@ test_expect_success 'ls-tree piped to mktree (2)' ' test_cmp tree.withsub actual ' -test_expect_success 'ls-tree output in wrong order given to mktree (1)' ' +test_expect_success PERL_TEST_HELPERS 'ls-tree output in wrong order given to mktree (1)' ' perl -e "print reverse <>" actual && test_cmp tree actual ' -test_expect_success 'ls-tree output in wrong order given to mktree (2)' ' +test_expect_success PERL_TEST_HELPERS 'ls-tree output in wrong order given to mktree (2)' ' perl -e "print reverse <>" actual && test_cmp tree.withsub actual diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index 8a456b1142d..01050453762 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -346,7 +346,7 @@ test_expect_success 'unparseable tree object' ' test_grep ! "fatal: empty filename in tree entry" out ' -test_expect_success 'tree entry with type mismatch' ' +test_expect_success PERL_TEST_HELPERS 'tree entry with type mismatch' ' test_when_finished "remove_object \$blob" && test_when_finished "remove_object \$tree" && test_when_finished "remove_object \$commit" && @@ -364,7 +364,7 @@ test_expect_success 'tree entry with type mismatch' ' test_grep ! "dangling blob" out ' -test_expect_success 'tree entry with bogus mode' ' +test_expect_success PERL_TEST_HELPERS 'tree entry with bogus mode' ' test_when_finished "remove_object \$blob" && test_when_finished "remove_object \$tree" && blob=$(echo blob | git hash-object -w --stdin) && @@ -984,7 +984,7 @@ corrupt_index_checksum () { # Corrupt the checksum on the index and then # verify that only fsck notices. -test_expect_success 'detect corrupt index file in fsck' ' +test_expect_success PERL_TEST_HELPERS 'detect corrupt index file in fsck' ' cp .git/index .git/index.backup && test_when_finished "mv .git/index.backup .git/index" && corrupt_index_checksum && diff --git a/t/t3300-funny-names.sh b/t/t3300-funny-names.sh index f5bf16abcd8..502b1572059 100755 --- a/t/t3300-funny-names.sh +++ b/t/t3300-funny-names.sh @@ -63,7 +63,7 @@ test_expect_success 'ls-files quotes funny filename' ' test_cmp expected current ' -test_expect_success 'ls-files -z does not quote funny filename' ' +test_expect_success PERL_TEST_HELPERS 'ls-files -z does not quote funny filename' ' cat >expected <<-\EOF && just space no-funny @@ -101,7 +101,7 @@ test_expect_success 'diff-tree --name-status quotes funny filename' ' test_cmp expected current ' -test_expect_success 'diff-index -z does not quote funny filename' ' +test_expect_success PERL_TEST_HELPERS 'diff-index -z does not quote funny filename' ' cat >expected <<-\EOF && A tabs ," (dq) and spaces @@ -111,7 +111,7 @@ test_expect_success 'diff-index -z does not quote funny filename' ' test_cmp expected current ' -test_expect_success 'diff-tree -z does not quote funny filename' ' +test_expect_success PERL_TEST_HELPERS 'diff-tree -z does not quote funny filename' ' cat >expected <<-\EOF && A tabs ," (dq) and spaces diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 3855d68dbc0..782d97fb7df 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -11,6 +11,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh . "$TEST_DIRECTORY"/lib-diff.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping diff various tests; Perl not available' + test_done +fi + test_expect_success setup ' GIT_AUTHOR_DATE="2006-06-26 00:00:00 +0000" && diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 884f83fb8a4..2782b1fc183 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -448,7 +448,7 @@ cat >>expect.no-threading < References: <0> EOF -test_expect_success 'thread' ' +test_expect_success PERL_TEST_HELPERS 'thread' ' check_threading expect.thread --thread main ' -test_expect_success '--thread overrides format.thread=deep' ' +test_expect_success PERL_TEST_HELPERS '--thread overrides format.thread=deep' ' test_config format.thread deep && check_threading expect.thread --thread main ' @@ -490,7 +490,7 @@ In-Reply-To: <1> References: <1> EOF -test_expect_success 'thread in-reply-to' ' +test_expect_success PERL_TEST_HELPERS 'thread in-reply-to' ' check_threading expect.in-reply-to --in-reply-to="" \ --thread main ' @@ -512,7 +512,7 @@ In-Reply-To: <0> References: <0> EOF -test_expect_success 'thread cover-letter' ' +test_expect_success PERL_TEST_HELPERS 'thread cover-letter' ' check_threading expect.cover-letter --cover-letter --thread main ' @@ -538,12 +538,12 @@ References: <1> <0> EOF -test_expect_success 'thread cover-letter in-reply-to' ' +test_expect_success PERL_TEST_HELPERS 'thread cover-letter in-reply-to' ' check_threading expect.cl-irt --cover-letter \ --in-reply-to="" --thread main ' -test_expect_success 'thread explicit shallow' ' +test_expect_success PERL_TEST_HELPERS 'thread explicit shallow' ' check_threading expect.cl-irt --cover-letter \ --in-reply-to="" --thread=shallow main ' @@ -562,7 +562,7 @@ References: <0> <1> EOF -test_expect_success 'thread deep' ' +test_expect_success PERL_TEST_HELPERS 'thread deep' ' check_threading expect.deep --thread=deep main ' @@ -584,7 +584,7 @@ References: <1> <2> EOF -test_expect_success 'thread deep in-reply-to' ' +test_expect_success PERL_TEST_HELPERS 'thread deep in-reply-to' ' check_threading expect.deep-irt --thread=deep \ --in-reply-to="" main ' @@ -609,7 +609,7 @@ References: <0> <2> EOF -test_expect_success 'thread deep cover-letter' ' +test_expect_success PERL_TEST_HELPERS 'thread deep cover-letter' ' check_threading expect.deep-cl --cover-letter --thread=deep main ' @@ -638,27 +638,27 @@ References: <1> <3> EOF -test_expect_success 'thread deep cover-letter in-reply-to' ' +test_expect_success PERL_TEST_HELPERS 'thread deep cover-letter in-reply-to' ' check_threading expect.deep-cl-irt --cover-letter \ --in-reply-to="" --thread=deep main ' -test_expect_success 'thread via config' ' +test_expect_success PERL_TEST_HELPERS 'thread via config' ' test_config format.thread true && check_threading expect.thread main ' -test_expect_success 'thread deep via config' ' +test_expect_success PERL_TEST_HELPERS 'thread deep via config' ' test_config format.thread deep && check_threading expect.deep main ' -test_expect_success 'thread config + override' ' +test_expect_success PERL_TEST_HELPERS 'thread config + override' ' test_config format.thread deep && check_threading expect.thread --thread main ' -test_expect_success 'thread config + --no-thread' ' +test_expect_success PERL_TEST_HELPERS 'thread config + --no-thread' ' test_config format.thread deep && check_threading expect.no-threading --no-thread main ' diff --git a/t/t4020-diff-external.sh b/t/t4020-diff-external.sh index f1efe482a59..189294de7ef 100755 --- a/t/t4020-diff-external.sh +++ b/t/t4020-diff-external.sh @@ -239,7 +239,7 @@ check_external_diff 128 empty error 2 on --quiet echo NULZbetweenZwords | perl -pe 'y/Z/\000/' > file -test_expect_success 'force diff with "diff"' ' +test_expect_success PERL_TEST_HELPERS 'force diff with "diff"' ' after=$(git hash-object file) && after=$(git rev-parse --short $after) && echo >.gitattributes "file diff" && @@ -300,7 +300,7 @@ test_expect_success 'external diff with autocrlf = true' ' test $(wc -l f && before=$(git hash-object f) && before=$(git rev-parse --short $before) && diff --git a/t/t4030-diff-textconv.sh b/t/t4030-diff-textconv.sh index daebf9796f5..c7d8eb12453 100755 --- a/t/t4030-diff-textconv.sh +++ b/t/t4030-diff-textconv.sh @@ -4,6 +4,12 @@ test_description='diff.*.textconv tests' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping diff textconv tests; Perl not available' + test_done +fi + find_diff() { sed '1,/^index /d' | sed '/^-- $/,$d' } diff --git a/t/t4031-diff-rewrite-binary.sh b/t/t4031-diff-rewrite-binary.sh index c4394a27b56..cbe50b15772 100755 --- a/t/t4031-diff-rewrite-binary.sh +++ b/t/t4031-diff-rewrite-binary.sh @@ -70,7 +70,7 @@ test_expect_success 'setup textconv' ' git config diff.foo.textconv "\"$(pwd)\""/dump ' -test_expect_success 'rewrite diff respects textconv' ' +test_expect_success PERL_TEST_HELPERS 'rewrite diff respects textconv' ' git diff -B >diff && grep "dissimilarity index" diff && grep "^-61" diff && diff --git a/t/t4058-diff-duplicates.sh b/t/t4058-diff-duplicates.sh index 2fce4a98977..16266dff2af 100755 --- a/t/t4058-diff-duplicates.sh +++ b/t/t4058-diff-duplicates.sh @@ -13,6 +13,12 @@ test_description='test tree diff when trees have duplicate entries' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping diff duplicates tests; Perl not available' + test_done +fi + # make_tree_entry # # We have to rely on perl here because not all printfs understand diff --git a/t/t4103-apply-binary.sh b/t/t4103-apply-binary.sh index d370ecfe0d9..59d38793ae6 100755 --- a/t/t4103-apply-binary.sh +++ b/t/t4103-apply-binary.sh @@ -11,6 +11,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping apply-binary tests; Perl not available' + test_done +fi + test_expect_success 'setup' ' cat >file1 <<-\EOF && A quick brown fox jumps over the lazy dog. diff --git a/t/t4116-apply-reverse.sh b/t/t4116-apply-reverse.sh index 0784ba033a4..6f414ad27f5 100755 --- a/t/t4116-apply-reverse.sh +++ b/t/t4116-apply-reverse.sh @@ -10,6 +10,12 @@ test_description='git apply in reverse . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping apply reverse tests; Perl not available' + test_done +fi + test_expect_success setup ' test_write_lines a b c d e f g h i j k l m n >file1 && diff --git a/t/t4150-am.sh b/t/t4150-am.sh index 5e2b6c80eae..4794510d70d 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -1073,7 +1073,7 @@ test_expect_success 'am --patch-format=mboxrd handles mboxrd' ' test_cmp msg out ' -test_expect_success 'am works with multi-line in-body headers' ' +test_expect_success PERL_TEST_HELPERS 'am works with multi-line in-body headers' ' FORTY="String that has a length of more than forty characters" && LONG="$FORTY $FORTY" && rm -fr .git/rebase-apply && diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index b0a3e849841..50fe8b0fd05 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -27,6 +27,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rerere tests; Perl not available' + test_done +fi + test_expect_success 'setup' ' cat >a1 <<-\EOF && Some title diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh index f81e42a84d5..8f2ba98963f 100755 --- a/t/t4205-log-pretty-formats.sh +++ b/t/t4205-log-pretty-formats.sh @@ -698,7 +698,7 @@ test_expect_success '%(trailers:only=no,only=true) shows only "key: value" trail test_cmp expect actual ' -test_expect_success '%(trailers:unfold) unfolds trailers' ' +test_expect_success PERL_TEST_HELPERS '%(trailers:unfold) unfolds trailers' ' git log --no-walk --pretty="%(trailers:unfold)" >actual && { unfold actual && git log --no-walk --pretty="%(trailers:unfold,only)" >reverse && test_cmp actual reverse && @@ -754,7 +754,7 @@ test_expect_success '%(trailers:key=foo) handles multiple lines even if folded' test_cmp expect actual ' -test_expect_success '%(trailers:key=foo,unfold) properly unfolds' ' +test_expect_success PERL_TEST_HELPERS '%(trailers:key=foo,unfold) properly unfolds' ' git log --no-walk --pretty="format:%(trailers:key=Signed-Off-by,unfold)" >actual && unfold expect && test_cmp expect actual diff --git a/t/t4216-log-bloom.sh b/t/t4216-log-bloom.sh index 3f163dc3969..8910d53cac1 100755 --- a/t/t4216-log-bloom.sh +++ b/t/t4216-log-bloom.sh @@ -738,20 +738,20 @@ check_corrupt_graph () { test_cmp expect.out out } -test_expect_success 'Bloom reader notices too-small data chunk' ' +test_expect_success PERL_TEST_HELPERS 'Bloom reader notices too-small data chunk' ' check_corrupt_graph BDAT clear 00000000 && echo "warning: ignoring too-small changed-path chunk" \ "(4 < 12) in commit-graph file" >expect.err && test_cmp expect.err err ' -test_expect_success 'Bloom reader notices out-of-bounds filter offsets' ' +test_expect_success PERL_TEST_HELPERS 'Bloom reader notices out-of-bounds filter offsets' ' check_corrupt_graph BIDX 12 FFFFFFFF && # use grep to avoid depending on exact chunk size grep "warning: ignoring out-of-range offset (4294967295) for changed-path filter at pos 3 of .git/objects/info/commit-graph" err ' -test_expect_success 'Bloom reader notices too-small index chunk' ' +test_expect_success PERL_TEST_HELPERS 'Bloom reader notices too-small index chunk' ' # replace the index with a single entry, making most # lookups out-of-bounds check_corrupt_graph BIDX clear 00000000 && @@ -760,7 +760,7 @@ test_expect_success 'Bloom reader notices too-small index chunk' ' test_cmp expect.err err ' -test_expect_success 'Bloom reader notices out-of-order index offsets' ' +test_expect_success PERL_TEST_HELPERS 'Bloom reader notices out-of-order index offsets' ' # we do not know any real offsets, but we can pick # something plausible; we should not get to the point of # actually reading from the bogus offsets anyway. diff --git a/t/t5004-archive-corner-cases.sh b/t/t5004-archive-corner-cases.sh index 50344e17ca1..51749951916 100755 --- a/t/t5004-archive-corner-cases.sh +++ b/t/t5004-archive-corner-cases.sh @@ -4,6 +4,12 @@ test_description='test corner cases of git-archive' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping archive corner cases tests; Perl not available' + test_done +fi + # the 10knuls.tar file is used to test for an empty git generated tar # without having to invoke tar because an otherwise valid empty GNU tar # will be considered broken by {Open,Net}BSD tar diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 5ac8d39094b..143856c29f1 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -7,6 +7,12 @@ test_description='git pack-object' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping pack-object tests; Perl not available' + test_done +fi + test_expect_success 'setup' ' rm -f .git/index* && perl -e "print \"a\" x 4096;" >a && diff --git a/t/t5303-pack-corruption-resilience.sh b/t/t5303-pack-corruption-resilience.sh index de58ca654a1..ac5e370e1e4 100755 --- a/t/t5303-pack-corruption-resilience.sh +++ b/t/t5303-pack-corruption-resilience.sh @@ -99,7 +99,7 @@ test_expect_success '... and loose copy of first delta allows for partial recove git cat-file blob $blob_3 > /dev/null ' -test_expect_success 'create corruption in data of first object' ' +test_expect_success PERL_TEST_HELPERS 'create corruption in data of first object' ' create_new_pack && git prune-packed && chmod +w ${pack}.pack && @@ -156,7 +156,7 @@ test_expect_success '... and then a repack "clears" the corruption' ' git cat-file blob $blob_3 > /dev/null ' -test_expect_success 'create corruption in data of first delta' ' +test_expect_success PERL_TEST_HELPERS 'create corruption in data of first delta' ' create_new_pack && git prune-packed && chmod +w ${pack}.pack && diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh index 621bbbdd26e..81987296235 100755 --- a/t/t5310-pack-bitmaps.sh +++ b/t/t5310-pack-bitmaps.sh @@ -395,7 +395,7 @@ test_bitmap_cases () { ) ' - test_expect_success 'pack.preferBitmapTips' ' + test_expect_success PERL_TEST_HELPERS 'pack.preferBitmapTips' ' git init repo && test_when_finished "rm -fr repo" && ( diff --git a/t/t5316-pack-delta-depth.sh b/t/t5316-pack-delta-depth.sh index 32cf4227451..cd947b5a5ef 100755 --- a/t/t5316-pack-delta-depth.sh +++ b/t/t5316-pack-delta-depth.sh @@ -87,7 +87,7 @@ max_chain() { # packing heuristics. We double-check that our test case # actually produces a long chain. If it doesn't, it should be # adjusted (or scrapped if the heuristics have become too unreliable) -test_expect_success 'packing produces a long delta' ' +test_expect_success PERL_TEST_HELPERS 'packing produces a long delta' ' # Use --window=0 to make sure we are seeing reused deltas, # not computing a new long chain. pack=$(git pack-objects --all --window=0 expect && max_chain pack-$pack.pack >actual && test_cmp expect actual ' -test_expect_success '--depth=0 disables deltas' ' +test_expect_success PERL_TEST_HELPERS '--depth=0 disables deltas' ' pack=$(git pack-objects --all --depth=0 expect && max_chain pack-$pack.pack >actual && test_cmp expect actual ' -test_expect_success 'negative depth disables deltas' ' +test_expect_success PERL_TEST_HELPERS 'negative depth disables deltas' ' pack=$(git pack-objects --all --depth=-1 expect && max_chain pack-$pack.pack >actual && diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh index f68f64cd85e..0b3404f58fe 100755 --- a/t/t5318-commit-graph.sh +++ b/t/t5318-commit-graph.sh @@ -837,7 +837,7 @@ check_corrupt_chunk () { test_cmp expect.out out } -test_expect_success 'reader notices too-small oid fanout chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small oid fanout chunk' ' # make it big enough that the graph file is plausible, # otherwise we hit an earlier check check_corrupt_chunk OIDF clear $(printf "000000%02x" $(test_seq 250)) && @@ -848,7 +848,7 @@ test_expect_success 'reader notices too-small oid fanout chunk' ' test_cmp expect.err err ' -test_expect_success 'reader notices fanout/lookup table mismatch' ' +test_expect_success PERL_TEST_HELPERS 'reader notices fanout/lookup table mismatch' ' check_corrupt_chunk OIDF 1020 "FFFFFFFF" && cat >expect.err <<-\EOF && error: commit-graph OID lookup chunk is the wrong size @@ -857,7 +857,7 @@ test_expect_success 'reader notices fanout/lookup table mismatch' ' test_cmp expect.err err ' -test_expect_success 'reader notices out-of-bounds fanout' ' +test_expect_success PERL_TEST_HELPERS 'reader notices out-of-bounds fanout' ' # Rather than try to corrupt a specific hash, we will just # wreck them all. But we cannot just set them all to 0xFFFFFFFF or # similar, as they are used for hi/lo starts in a binary search (so if @@ -873,7 +873,7 @@ test_expect_success 'reader notices out-of-bounds fanout' ' test_cmp expect.err err ' -test_expect_success 'reader notices too-small commit data chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small commit data chunk' ' check_corrupt_chunk CDAT clear 00000000 && cat >expect.err <<-\EOF && error: commit-graph commit data chunk is wrong size @@ -882,7 +882,7 @@ test_expect_success 'reader notices too-small commit data chunk' ' test_cmp expect.err err ' -test_expect_success 'reader notices out-of-bounds extra edge' ' +test_expect_success PERL_TEST_HELPERS 'reader notices out-of-bounds extra edge' ' check_corrupt_chunk EDGE clear && cat >expect.err <<-\EOF && error: commit-graph extra-edges pointer out of bounds @@ -890,7 +890,7 @@ test_expect_success 'reader notices out-of-bounds extra edge' ' test_cmp expect.err err ' -test_expect_success 'reader notices too-small generations chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small generations chunk' ' check_corrupt_chunk GDA2 clear 00000000 && cat >expect.err <<-\EOF && error: commit-graph generations chunk is wrong size diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index 0f215ad2e88..bd75dea9501 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -1120,7 +1120,7 @@ corrupt_chunk () { corrupt_chunk_file $midx "$@" } -test_expect_success 'reader notices too-small oid fanout chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small oid fanout chunk' ' corrupt_chunk OIDF clear 00000000 && test_must_fail git log 2>err && cat >expect <<-\EOF && @@ -1130,7 +1130,7 @@ test_expect_success 'reader notices too-small oid fanout chunk' ' test_cmp expect err ' -test_expect_success 'reader notices too-small oid lookup chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small oid lookup chunk' ' corrupt_chunk OIDL clear 00000000 && test_must_fail git log 2>err && cat >expect <<-\EOF && @@ -1140,7 +1140,7 @@ test_expect_success 'reader notices too-small oid lookup chunk' ' test_cmp expect err ' -test_expect_success 'reader notices too-small pack names chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small pack names chunk' ' # There is no NUL to terminate the name here, so the # chunk is too short. corrupt_chunk PNAM clear 70656666 && @@ -1151,7 +1151,7 @@ test_expect_success 'reader notices too-small pack names chunk' ' test_cmp expect err ' -test_expect_success 'reader handles unaligned chunks' ' +test_expect_success PERL_TEST_HELPERS 'reader handles unaligned chunks' ' # A 9-byte PNAM means all of the subsequent chunks # will no longer be 4-byte aligned, but it is still # a valid one-pack chunk on its own (it is "foo.pack\0"). @@ -1165,7 +1165,7 @@ test_expect_success 'reader handles unaligned chunks' ' test_cmp expect.err err ' -test_expect_success 'reader notices too-small object offset chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small object offset chunk' ' corrupt_chunk OOFF clear 00000000 && test_must_fail git log 2>err && cat >expect <<-\EOF && @@ -1175,7 +1175,7 @@ test_expect_success 'reader notices too-small object offset chunk' ' test_cmp expect err ' -test_expect_success 'reader bounds-checks large offset table' ' +test_expect_success PERL_TEST_HELPERS 'reader bounds-checks large offset table' ' # re-use the objects64 dir here to cheaply get access to a midx # with large offsets. git init repo && @@ -1197,7 +1197,7 @@ test_expect_success 'reader bounds-checks large offset table' ' ) ' -test_expect_success 'reader notices too-small revindex chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader notices too-small revindex chunk' ' # We only get a revindex with bitmaps (and likewise only # load it when they are asked for). test_config repack.writeBitmaps true && @@ -1214,7 +1214,7 @@ test_expect_success 'reader notices too-small revindex chunk' ' test_cmp expect.err err ' -test_expect_success 'reader notices out-of-bounds fanout' ' +test_expect_success PERL_TEST_HELPERS 'reader notices out-of-bounds fanout' ' # This is similar to the out-of-bounds fanout test in t5318. The values # in adjacent entries should be large but not identical (they # are used as hi/lo starts for a binary search, which would then abort diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh index a32be3867df..49a057cc2eb 100755 --- a/t/t5324-split-commit-graph.sh +++ b/t/t5324-split-commit-graph.sh @@ -401,7 +401,7 @@ test_expect_success 'verify across alternates' ' ) ' -test_expect_success 'reader bounds-checks base-graph chunk' ' +test_expect_success PERL_TEST_HELPERS 'reader bounds-checks base-graph chunk' ' git clone --no-hardlinks . corrupt-base-chunk && ( cd corrupt-base-chunk && diff --git a/t/t5326-multi-pack-bitmaps.sh b/t/t5326-multi-pack-bitmaps.sh index d27557b9b04..627f8b4efdc 100755 --- a/t/t5326-multi-pack-bitmaps.sh +++ b/t/t5326-multi-pack-bitmaps.sh @@ -153,7 +153,7 @@ test_midx_bitmap_cases () { ) ' - test_expect_success 'pack.preferBitmapTips' ' + test_expect_success PERL_TEST_HELPERS 'pack.preferBitmapTips' ' git init repo && test_when_finished "rm -fr repo" && ( diff --git a/t/t5328-commit-graph-64bit-time.sh b/t/t5328-commit-graph-64bit-time.sh index a766a3e3f84..d8891e6a922 100755 --- a/t/t5328-commit-graph-64bit-time.sh +++ b/t/t5328-commit-graph-64bit-time.sh @@ -74,7 +74,7 @@ test_expect_success 'single commit with generation data exceeding UINT32_MAX' ' git -C repo-uint32-max commit-graph verify ' -test_expect_success 'reader notices out-of-bounds generation overflow' ' +test_expect_success PERL_TEST_HELPERS 'reader notices out-of-bounds generation overflow' ' graph=.git/objects/info/commit-graph && test_when_finished "rm -rf $graph" && git commit-graph write --reachable && diff --git a/t/t5333-pseudo-merge-bitmaps.sh b/t/t5333-pseudo-merge-bitmaps.sh index 3905cb6e4f1..1059ff45fe4 100755 --- a/t/t5333-pseudo-merge-bitmaps.sh +++ b/t/t5333-pseudo-merge-bitmaps.sh @@ -6,6 +6,12 @@ GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP=0 . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping pseudo-merge bitmap tests; Perl not available' + test_done +fi + test_pseudo_merges () { test-tool bitmap dump-pseudo-merges } diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh index 3f81f16e133..571e8f1bc59 100755 --- a/t/t5400-send-pack.sh +++ b/t/t5400-send-pack.sh @@ -268,7 +268,7 @@ extract_ref_advertisement () { ' } -test_expect_success 'receive-pack de-dupes .have lines' ' +test_expect_success PERL_TEST_HELPERS 'receive-pack de-dupes .have lines' ' git init shared && git -C shared commit --allow-empty -m both && git clone -s shared fork && diff --git a/t/t5410-receive-pack-alternates.sh b/t/t5410-receive-pack-alternates.sh index 0b28e4e452f..6a009fdcd71 100755 --- a/t/t5410-receive-pack-alternates.sh +++ b/t/t5410-receive-pack-alternates.sh @@ -20,7 +20,7 @@ extract_haves () { depacketize | perl -lne '/^(\S+) \.have/ and print $1' } -test_expect_success 'with core.alternateRefsCommand' ' +test_expect_success PERL_TEST_HELPERS 'with core.alternateRefsCommand' ' write_script fork/alternate-refs <<-\EOF && git --git-dir="$1" for-each-ref \ --format="%(objectname)" \ @@ -33,7 +33,7 @@ test_expect_success 'with core.alternateRefsCommand' ' test_cmp expect actual.haves ' -test_expect_success 'with core.alternateRefsPrefixes' ' +test_expect_success PERL_TEST_HELPERS 'with core.alternateRefsPrefixes' ' test_config -C fork core.alternateRefsPrefixes "refs/heads/private" && git rev-parse private/branch >expect && printf "0000" | git receive-pack fork >actual && diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh index 845ca43ea0a..febe4410417 100755 --- a/t/t5503-tagfollow.sh +++ b/t/t5503-tagfollow.sh @@ -7,6 +7,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping tagfollow tests; Perl not available' + test_done +fi + # End state of the repository: # # T - tag1 S - tag2 diff --git a/t/t5504-fetch-receive-strict.sh b/t/t5504-fetch-receive-strict.sh index 58074506c59..438250c75ed 100755 --- a/t/t5504-fetch-receive-strict.sh +++ b/t/t5504-fetch-receive-strict.sh @@ -359,7 +359,7 @@ test_expect_success \ grep "Cannot demote unterminatedheader" act ' -test_expect_success 'badFilemode is not a strict error' ' +test_expect_success PERL_TEST_HELPERS 'badFilemode is not a strict error' ' git init --bare badmode.git && tree=$( cd badmode.git && diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh index 5f350facf5e..432a2264e6f 100755 --- a/t/t5510-fetch.sh +++ b/t/t5510-fetch.sh @@ -8,6 +8,12 @@ test_description='Per branch config variables affects "git fetch". . ./test-lib.sh . "$TEST_DIRECTORY"/lib-bundle.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping fetch tests; Perl not available' + test_done +fi + D=$(pwd) test_expect_success setup ' diff --git a/t/t5532-fetch-proxy.sh b/t/t5532-fetch-proxy.sh index 37558226290..95d0f33b295 100755 --- a/t/t5532-fetch-proxy.sh +++ b/t/t5532-fetch-proxy.sh @@ -4,6 +4,12 @@ test_description='fetching via git:// using core.gitproxy' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping fetch proxy tests; Perl not available' + test_done +fi + test_expect_success 'setup remote repo' ' git init remote && (cd remote && diff --git a/t/t5534-push-signed.sh b/t/t5534-push-signed.sh index c91a62b77af..342d0423c92 100755 --- a/t/t5534-push-signed.sh +++ b/t/t5534-push-signed.sh @@ -177,7 +177,7 @@ test_expect_success GPGSSH 'ssh signed push sends push certificate' ' test_cmp expect dst/push-cert-status ' -test_expect_success GPG 'inconsistent push options in signed push not allowed' ' +test_expect_success GPG,PERL_TEST_HELPERS 'inconsistent push options in signed push not allowed' ' # First, invoke receive-pack with dummy input to obtain its preamble. prepare_dst && git -C dst config receive.certnonceseed sekrit && diff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh index 37f7547a4ca..77d20d19110 100755 --- a/t/t5537-fetch-shallow.sh +++ b/t/t5537-fetch-shallow.sh @@ -256,7 +256,7 @@ start_httpd REPO="$HTTPD_DOCUMENT_ROOT_PATH/repo" -test_expect_success 'shallow fetches check connectivity before writing shallow file' ' +test_expect_success PERL_TEST_HELPERS 'shallow fetches check connectivity before writing shallow file' ' rm -rf "$REPO" client && git init "$REPO" && diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh index 761fdfcfe6c..b0d4ea78015 100755 --- a/t/t5551-http-fetch-smart.sh +++ b/t/t5551-http-fetch-smart.sh @@ -7,6 +7,13 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh . "$TEST_DIRECTORY"/lib-httpd.sh + +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping http fetch smart tests; Perl not available' + test_done +fi + test "$HTTP_PROTO" = "HTTP/2" && enable_http2 start_httpd diff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh index f3b158274c4..b6ee06f5c8f 100755 --- a/t/t5562-http-backend-content-length.sh +++ b/t/t5562-http-backend-content-length.sh @@ -4,6 +4,12 @@ test_description='test git-http-backend respects CONTENT_LENGTH' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping http backend content tests; Perl not available' + test_done +fi + test_lazy_prereq GZIP 'gzip --version' verify_http_result() { diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index d0c18660e33..d743d986c40 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -649,7 +649,7 @@ test_expect_success 'GIT_TRACE_PACKFILE produces a usable pack' ' git -C replay.git index-pack -v --stdin "$HTTPD_ROOT_PATH/one-time-perl" } -test_expect_success 'upon cloning, check that all refs point to objects' ' +test_expect_success PERL_TEST_HELPERS 'upon cloning, check that all refs point to objects' ' SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server" && rm -rf "$SERVER" repo && test_create_repo "$SERVER" && @@ -784,7 +784,7 @@ test_expect_success 'upon cloning, check that all refs point to objects' ' ! test -e "$HTTPD_ROOT_PATH/one-time-perl" ' -test_expect_success 'when partial cloning, tolerate server not sending target of tag' ' +test_expect_success PERL_TEST_HELPERS 'when partial cloning, tolerate server not sending target of tag' ' SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server" && rm -rf "$SERVER" repo && test_create_repo "$SERVER" && @@ -825,7 +825,7 @@ test_expect_success 'when partial cloning, tolerate server not sending target of ! test -e "$HTTPD_ROOT_PATH/one-time-perl" ' -test_expect_success 'tolerate server sending REF_DELTA against missing promisor objects' ' +test_expect_success PERL_TEST_HELPERS 'tolerate server sending REF_DELTA against missing promisor objects' ' SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server" && rm -rf "$SERVER" repo && test_create_repo "$SERVER" && diff --git a/t/t5701-git-serve.sh b/t/t5701-git-serve.sh index 678a346ed06..200bf06ecb3 100755 --- a/t/t5701-git-serve.sh +++ b/t/t5701-git-serve.sh @@ -220,7 +220,7 @@ test_expect_success 'refs/heads prefix' ' test_cmp expect actual ' -test_expect_success 'ignore very large set of prefixes' ' +test_expect_success PERL_TEST_HELPERS 'ignore very large set of prefixes' ' # generate a large number of ref-prefixes that we expect # to match nothing; the value here exceeds TOO_MANY_PREFIXES # from ls-refs.c. diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh index d3df81e7852..ad5e772cd72 100755 --- a/t/t5702-protocol-v2.sh +++ b/t/t5702-protocol-v2.sh @@ -1120,7 +1120,7 @@ test_expect_success 'push with http:// and a config of v2 does not request v2' ' ! grep "git< version 2" log ' -test_expect_success 'when server sends "ready", expect DELIM' ' +test_expect_success PERL_TEST_HELPERS 'when server sends "ready", expect DELIM' ' rm -rf "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" http_child && git init "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" && @@ -1140,7 +1140,7 @@ test_expect_success 'when server sends "ready", expect DELIM' ' test_grep "expected packfile to be sent after .ready." err ' -test_expect_success 'when server does not send "ready", expect FLUSH' ' +test_expect_success PERL_TEST_HELPERS 'when server does not send "ready", expect FLUSH' ' rm -rf "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" http_child log && git init "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" && @@ -1446,7 +1446,7 @@ test_expect_success 'http:// --negotiate-only' ' grep "$COMMON" out ' -test_expect_success 'http:// --negotiate-only without wait-for-done support' ' +test_expect_success PERL_TEST_HELPERS 'http:// --negotiate-only without wait-for-done support' ' SERVER="server" && URI="$HTTPD_URL/one_time_perl/server" && diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh index 191097171bc..f59d47aa6c6 100755 --- a/t/t5703-upload-pack-ref-in-want.sh +++ b/t/t5703-upload-pack-ref-in-want.sh @@ -4,6 +4,12 @@ test_description='upload-pack ref-in-want' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping upload-pack ref-in-want tests; Perl not available' + test_done +fi + get_actual_refs () { sed -n -e '/wanted-refs/,/0001/{ /wanted-refs/d diff --git a/t/t5710-promisor-remote-capability.sh b/t/t5710-promisor-remote-capability.sh index d2cc69a17e4..9a420cf5605 100755 --- a/t/t5710-promisor-remote-capability.sh +++ b/t/t5710-promisor-remote-capability.sh @@ -4,6 +4,12 @@ test_description='handling of promisor remote advertisement' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping promisor remote capabilities tests; Perl not available' + test_done +fi + GIT_TEST_MULTI_PACK_INDEX=0 GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL=0 diff --git a/t/t6002-rev-list-bisect.sh b/t/t6002-rev-list-bisect.sh index daa009c9a1b..5e1482aff78 100755 --- a/t/t6002-rev-list-bisect.sh +++ b/t/t6002-rev-list-bisect.sh @@ -7,6 +7,12 @@ test_description='Tests git rev-list --bisect functionality' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rev-list bisect tests; Perl not available' + test_done +fi + # usage: test_bisection max-diff bisect-option head ^prune... # # e.g. test_bisection 1 --bisect l1 ^l0 diff --git a/t/t6003-rev-list-topo-order.sh b/t/t6003-rev-list-topo-order.sh index 0d7055d46d4..02dd4127aff 100755 --- a/t/t6003-rev-list-topo-order.sh +++ b/t/t6003-rev-list-topo-order.sh @@ -8,6 +8,12 @@ test_description='Tests git rev-list --topo-order functionality' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rev-list topo-order tests; Perl not available' + test_done +fi + list_duplicates() { "$@" | sort | uniq -d diff --git a/t/t6011-rev-list-with-bad-commit.sh b/t/t6011-rev-list-with-bad-commit.sh index bad02cf5b83..6131c361094 100755 --- a/t/t6011-rev-list-with-bad-commit.sh +++ b/t/t6011-rev-list-with-bad-commit.sh @@ -4,6 +4,12 @@ test_description='git rev-list should notice bad commits' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rev-list with bad commit tests; Perl not available' + test_done +fi + # Note: # - compression level is set to zero to make "corruptions" easier to perform # - reflog is disabled to avoid extra references which would twart the test diff --git a/t/t6013-rev-list-reverse-parents.sh b/t/t6013-rev-list-reverse-parents.sh index 39793cbbd66..8074185742c 100755 --- a/t/t6013-rev-list-reverse-parents.sh +++ b/t/t6013-rev-list-reverse-parents.sh @@ -26,7 +26,7 @@ test_expect_success 'set up --reverse example' ' commit five ' -test_expect_success '--reverse --parents --full-history combines correctly' ' +test_expect_success PERL_TEST_HELPERS '--reverse --parents --full-history combines correctly' ' git rev-list --parents --full-history main -- foo | perl -e "print reverse <>" > expected && git rev-list --reverse --parents --full-history main -- foo \ @@ -34,7 +34,7 @@ test_expect_success '--reverse --parents --full-history combines correctly' ' test_cmp expected actual ' -test_expect_success '--boundary does too' ' +test_expect_success PERL_TEST_HELPERS '--boundary does too' ' git rev-list --boundary --parents --full-history main ^root -- foo | perl -e "print reverse <>" > expected && git rev-list --boundary --reverse --parents --full-history \ diff --git a/t/t6102-rev-list-unexpected-objects.sh b/t/t6102-rev-list-unexpected-objects.sh index 22dfd6d978e..eb98b3919c8 100755 --- a/t/t6102-rev-list-unexpected-objects.sh +++ b/t/t6102-rev-list-unexpected-objects.sh @@ -4,6 +4,12 @@ test_description='git rev-list should handle unexpected object types' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rev-list unexpected objects tests; Perl not available' + test_done +fi + test_expect_success 'setup well-formed objects' ' blob="$(printf "foo" | git hash-object -w --stdin)" && tree="$(printf "100644 blob $blob\tfoo" | git mktree)" && diff --git a/t/t6115-rev-list-du.sh b/t/t6115-rev-list-du.sh index 3385fe9f130..6a74be576a2 100755 --- a/t/t6115-rev-list-du.sh +++ b/t/t6115-rev-list-du.sh @@ -4,6 +4,12 @@ test_description='basic tests of rev-list --disk-usage' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping rev-list disk usage tests; Perl not available' + test_done +fi + # we want a mix of reachable and unreachable, as well as # objects in the bitmapped pack and some outside of it test_expect_success 'set up repository' ' diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index a5c77943854..732a4d3171e 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -10,6 +10,12 @@ GNUPGHOME_NOT_USED=$GNUPGHOME . "$TEST_DIRECTORY"/lib-gpg.sh . "$TEST_DIRECTORY"/lib-terminal.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping for-each-ref tests; Perl not available' + test_done +fi + # Mon Jul 3 23:18:43 2006 +0000 datestamp=1151968723 setdate_and_increment () { diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh index 932c26cb45b..49aae183829 100755 --- a/t/t7006-pager.sh +++ b/t/t7006-pager.sh @@ -661,7 +661,7 @@ test_expect_success 'setup trace2' ' export GIT_TRACE2_BRIEF ' -test_expect_success 'setup large log output' ' +test_expect_success PERL_TEST_HELPERS 'setup large log output' ' perl -e " print \"this is a long commit message\" x 50000 " >commit-msg && diff --git a/t/t7416-submodule-dash-url.sh b/t/t7416-submodule-dash-url.sh index 0c605fd271a..14069600a2f 100755 --- a/t/t7416-submodule-dash-url.sh +++ b/t/t7416-submodule-dash-url.sh @@ -4,6 +4,12 @@ test_description='check handling of disallowed .gitmodule urls' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping submodule dash URL tests; Perl not available' + test_done +fi + test_expect_success 'setup' ' git config --global protocol.file.allow always ' diff --git a/t/t7508-status.sh b/t/t7508-status.sh index b2070d4e39f..14c41b2cb7c 100755 --- a/t/t7508-status.sh +++ b/t/t7508-status.sh @@ -1064,7 +1064,7 @@ test_expect_success 'status -s submodule summary (clean submodule)' ' test_cmp expect output ' -test_expect_success 'status -z implies porcelain' ' +test_expect_success PERL_TEST_HELPERS 'status -z implies porcelain' ' git status --porcelain | perl -pe "s/\012/\000/g" >expect && git status -z >output && diff --git a/t/t7815-grep-binary.sh b/t/t7815-grep-binary.sh index 90ebb64f46e..b2730d200c8 100755 --- a/t/t7815-grep-binary.sh +++ b/t/t7815-grep-binary.sh @@ -4,6 +4,12 @@ test_description='git grep in binary files' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping grep binary tests; Perl not available' + test_done +fi + test_expect_success 'setup' " echo 'binaryQfileQm[*]cQ*æQð' | q_to_nul >a && git add a && diff --git a/t/t8001-annotate.sh b/t/t8001-annotate.sh index d7167f55397..609845aeb1e 100755 --- a/t/t8001-annotate.sh +++ b/t/t8001-annotate.sh @@ -7,6 +7,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME TEST_CREATE_REPO_NO_TEMPLATE=1 . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping annotate tests; Perl not available' + test_done +fi + PROG='git annotate' . "$TEST_DIRECTORY"/annotate-tests.sh diff --git a/t/t8002-blame.sh b/t/t8002-blame.sh index e98993276a6..b40199df231 100755 --- a/t/t8002-blame.sh +++ b/t/t8002-blame.sh @@ -7,6 +7,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME TEST_CREATE_REPO_NO_TEMPLATE=1 . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping blame colors tests; Perl not available' + test_done +fi + PROG='git blame -c' . "$TEST_DIRECTORY"/annotate-tests.sh diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh index 07a287ffd3e..5cb16872081 100755 --- a/t/t8006-blame-textconv.sh +++ b/t/t8006-blame-textconv.sh @@ -4,6 +4,12 @@ test_description='git blame textconv support' . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping blame textconv tests; Perl not available' + test_done +fi + find_blame() { sed -e 's/^[^(]*//' } diff --git a/t/t8011-blame-split-file.sh b/t/t8011-blame-split-file.sh index c66494f5ba7..388057245c8 100755 --- a/t/t8011-blame-split-file.sh +++ b/t/t8011-blame-split-file.sh @@ -81,7 +81,7 @@ do git blame --root -C --$output combined >output ' - test_expect_success "$output output finds correct commits" ' + test_expect_success PERL_TEST_HELPERS "$output output finds correct commits" ' generate_expect >expect <<-\EOF && 5 base 1 modified @@ -93,7 +93,7 @@ do test_cmp expect actual ' - test_expect_success "$output output shows correct filenames" ' + test_expect_success PERL_TEST_HELPERS "$output output shows correct filenames" ' generate_expect >expect <<-\EOF && 11 one 11 two @@ -102,7 +102,7 @@ do test_cmp expect actual ' - test_expect_success "$output output shows correct previous pointer" ' + test_expect_success PERL_TEST_HELPERS "$output output shows correct previous pointer" ' generate_expect >expect <<-EOF && 5 NONE 1 $(git rev-parse modified^) one diff --git a/t/t8012-blame-colors.sh b/t/t8012-blame-colors.sh index c3a5f6d01ff..3d77352650f 100755 --- a/t/t8012-blame-colors.sh +++ b/t/t8012-blame-colors.sh @@ -7,6 +7,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME TEST_CREATE_REPO_NO_TEMPLATE=1 . ./test-lib.sh +if ! test_have_prereq PERL_TEST_HELPERS +then + skip_all='skipping blame colors tests; Perl not available' + test_done +fi + PROG='git blame -c' . "$TEST_DIRECTORY"/annotate-tests.sh diff --git a/t/t9137-git-svn-dcommit-clobber-series.sh b/t/t9137-git-svn-dcommit-clobber-series.sh index 067b15bad25..a9d38be997c 100755 --- a/t/t9137-git-svn-dcommit-clobber-series.sh +++ b/t/t9137-git-svn-dcommit-clobber-series.sh @@ -15,7 +15,7 @@ test_expect_success 'initialize repo' ' test -e file ' -test_expect_success '(supposedly) non-conflicting change from SVN' ' +test_expect_success PERL_TEST_HELPERS '(supposedly) non-conflicting change from SVN' ' test x"$(sed -n -e 58p < file)" = x58 && test x"$(sed -n -e 61p < file)" = x61 && svn_cmd co "$svnrepo" tmp && @@ -37,7 +37,7 @@ test_expect_success 'some unrelated changes to git' " git commit -m bye-life life " -test_expect_success 'change file but in unrelated area' " +test_expect_success PERL_TEST_HELPERS 'change file but in unrelated area' " test x\"\$(sed -n -e 4p < file)\" = x4 && test x\"\$(sed -n -e 7p < file)\" = x7 && perl -i.bak -p -e 's/^4\$/4444/' file && diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index 40427883ec6..0781a8d6ace 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -610,7 +610,7 @@ test_expect_success 'directory becomes symlink' ' (cd result && git show main:foo) ' -test_expect_success 'fast-export quotes pathnames' ' +test_expect_success PERL_TEST_HELPERS 'fast-export quotes pathnames' ' git init crazy-paths && test_config -C crazy-paths core.protectNTFS false && (cd crazy-paths && diff --git a/t/t9850-shell.sh b/t/t9850-shell.sh index 36566ace21b..f619b60f226 100755 --- a/t/t9850-shell.sh +++ b/t/t9850-shell.sh @@ -29,7 +29,7 @@ test_expect_success 'shell allows interactive command' ' test_cmp expect actual ' -test_expect_success 'shell complains of overlong commands' ' +test_expect_success PERL_TEST_HELPERS 'shell complains of overlong commands' ' perl -e "print \"a\" x 2**12 for (0..2**19)" | test_must_fail git shell 2>err && grep "too long" err diff --git a/t/test-lib.sh b/t/test-lib.sh index a62699d6c79..59162a3c834 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1706,6 +1706,7 @@ test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2 test -z "$NO_GETTEXT" && test_set_prereq GETTEXT test -n "$SANITIZE_LEAK" && test_set_prereq SANITIZE_LEAK test -n "$GIT_VALGRIND_ENABLED" && test_set_prereq VALGRIND +test -n "$PERL_PATH" && test_set_prereq PERL_TEST_HELPERS if test -z "$GIT_TEST_CHECK_CACHE_TREE" then From patchwork Tue Mar 25 13:14:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029011 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7ABDB267F71 for ; Tue, 25 Mar 2025 13:14:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908474; cv=none; b=nwgMc2tD6T9MhY47Ict8U5uYqzqrlHHCYl5vlxUOrGSW4Xue/osH7vCnWVut69EmvGju9UR8XIKdCU1s/H2cKIwVxTJsY/N6OD9ps8nykVIfSpFu+2P8srOuCpWodmH9eQ3JEKqO0BTw+oxf9od7DLhJ+TnhqduHpUMOW7rx0dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908474; c=relaxed/simple; bh=W5vQfqGcP+FcynwRxGfXxDOW1LmfnQPXMZ7KkfpvjYg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IJpsftYMgUGc+5/jEHv4HigiU7SD7c5mhuV7Tb00Z40LHqB4BG0gI/zb4/MkDdAz/FKA5nCUOVBKSMNEXIETTHfKORMqXm6tzdP/vdsU/QnG6ZRDMWJVRN61XBTEOS3np6QPrtp5GCqVp33scNerXJOpRC1+II66PWFvYJH5xPk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=mm7lqMhC; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=JwJ6pe9K; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="mm7lqMhC"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="JwJ6pe9K" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id 5DF401383156; Tue, 25 Mar 2025 09:14:30 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908470; x=1742994870; bh=+gu+FJNpyDG04XVbftmayiPJ01w5q1S8ohw5XjWfwLc=; b= mm7lqMhClxh06vVXS34GgwgrOTlhShjeLO6FZpl/ksxJzJfpAB4G62Zx5w2dAGHW Xz4pE5vJkBXXKmgSXMCel3Zlog0eDiH/HQ3cV5ELDfWJBZrmDSP4lCYqbNdh4+7V TTskPF4xClWimUK8dpvXtwMidP740c4BlssZcJkbgsV+GU/ztX+D87nWmCyW+VVb 5NQi5mU70EqbcSh17ZcBk9UZOhh0flcR4q5yZwSlMHQD17YGQd7/SQTBXVT+b9CW jVE9nJYKVuBrQBrjPW8amk+a94NWeeY2TiHFzo+AtafJUWe1a4qhSm5qx+Jwgq8Z MrUNzWN6I6BotmfRFxhwvg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908470; x= 1742994870; bh=+gu+FJNpyDG04XVbftmayiPJ01w5q1S8ohw5XjWfwLc=; b=J wJ6pe9KDz4rBciWdK22WIA7tZLt13WPdPcu5J81evCwGhSrorV3VM+JeSBKzGWZm Tx43XkKFw/Of8aAIpEnk4i+mAH/1zV/M1oZaETCu5tJe/sKC7gDavrvlkBXU4ixM cGqSzc98m9MSAXBg1WCsr62FSYnIwwhtE6Au6Y2PE9GNPQhHaZqm4CKgM4D1PokS U9+hTW6g3LXIj4FrMK9k2q+NUNSFkydwo+0cY1QMWNx9vWW1ELfvRPI7uSR0DbHr nNAhloltgOsMJM1bfrFUcR9QL8VH4c4HytX8vOoAeUGSDnLYO58NLI3Zk+cZaPhE GLxuIh1nFDbqurrSIRtcg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmh grihhlrdgtohhmpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdr tghomhdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpth htohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdprhgtphhtthhopehjohhh rghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvg X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:29 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id af55590a (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:28 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:25 +0100 Subject: [PATCH v2 07/20] t: adapt existing PERL prerequisites Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-7-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 A couple of our tests depend on the PERL prerequisite even though it isn't needed. These tests fall into one of the following classes: - The underlying logic used to be implemented in Perl but isn't anymore. Here we can simply drop the dependency altogether. - The test logic used to depend on Perl but doesn't anymore. Again, we can simply drop the dependency. - The test logic still relies on a Perl interpreter. These tests should use the newly introduced PERL_TEST_HELPERS prerequisite. Adapt test cases accordingly. Note that in t1006 we have to introduce another new prerequisite depending on whether or not the IPC::Open2 module is available. Funny enough, when starting to use `test_lazy_prereq` to do so we also get a conflict of variables with the "script" variable that contains the Perl logic because `test_run_lazy_prereq_` also sets that variable. We thus rename the variable in t1006 to "perl_script". Signed-off-by: Patrick Steinhardt --- t/t0021-conversion.sh | 10 +++++----- t/t0090-cache-tree.sh | 4 ++-- t/t1006-cat-file.sh | 14 +++++++++----- t/t7501-commit-basic-functionality.sh | 6 +++--- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh index 9c3738ebb3f..4a892a91780 100755 --- a/t/t0021-conversion.sh +++ b/t/t0021-conversion.sh @@ -841,7 +841,7 @@ test_expect_success 'process filter abort stops processing of all further files' ) ' -test_expect_success PERL 'invalid process filter must fail (and not hang!)' ' +test_expect_success 'invalid process filter must fail (and not hang!)' ' test_config_global filter.protocol.process cat && test_config_global filter.protocol.required true && rm -rf repo && @@ -1111,19 +1111,19 @@ do branch) opt='-f HEAD' ;; esac - test_expect_success PERL,TTY "delayed checkout shows progress by default on tty ($mode checkout)" ' + test_expect_success TTY "delayed checkout shows progress by default on tty ($mode checkout)" ' test_delayed_checkout_progress test_terminal git checkout $opt ' - test_expect_success PERL "delayed checkout omits progress on non-tty ($mode checkout)" ' + test_expect_success "delayed checkout omits progress on non-tty ($mode checkout)" ' test_delayed_checkout_progress ! git checkout $opt ' - test_expect_success PERL,TTY "delayed checkout omits progress with --quiet ($mode checkout)" ' + test_expect_success TTY "delayed checkout omits progress with --quiet ($mode checkout)" ' test_delayed_checkout_progress ! test_terminal git checkout --quiet $opt ' - test_expect_success PERL,TTY "delayed checkout honors --[no]-progress ($mode checkout)" ' + test_expect_success TTY "delayed checkout honors --[no]-progress ($mode checkout)" ' test_delayed_checkout_progress ! test_terminal git checkout --no-progress $opt && test_delayed_checkout_progress test_terminal git checkout --quiet --progress $opt ' diff --git a/t/t0090-cache-tree.sh b/t/t0090-cache-tree.sh index ab80c9ef135..d9015882946 100755 --- a/t/t0090-cache-tree.sh +++ b/t/t0090-cache-tree.sh @@ -128,7 +128,7 @@ test_expect_success 'second commit has cache-tree' ' test_cache_tree ' -test_expect_success PERL 'commit --interactive gives cache-tree on partial commit' ' +test_expect_success 'commit --interactive gives cache-tree on partial commit' ' test_when_finished "git reset --hard" && cat <<-\EOT >foo.c && int foo() @@ -162,7 +162,7 @@ test_expect_success PERL 'commit --interactive gives cache-tree on partial commi test_cache_tree expected.status ' -test_expect_success PERL 'commit -p with shrinking cache-tree' ' +test_expect_success 'commit -p with shrinking cache-tree' ' mkdir -p deep/very-long-subdir && echo content >deep/very-long-subdir/file && git add deep && diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh index a574da3df53..0a22b0a7b8e 100755 --- a/t/t1006-cat-file.sh +++ b/t/t1006-cat-file.sh @@ -1323,7 +1323,7 @@ test_expect_success 'batch-command flush without --buffer' ' grep "^fatal:.*flush is only for --buffer mode.*" err ' -script=' +perl_script=' use warnings; use strict; use IPC::Open2; @@ -1345,12 +1345,16 @@ $? == 0 or die "\$?=$?"; expect="$hello_oid blob $hello_size" -test_expect_success PERL '--batch-check is unbuffered by default' ' - perl -e "$script" -- --batch-check $hello_oid "$expect" +test_lazy_prereq PERL_IPC_OPEN2 ' + perl -MIPC::Open2 -e "exit 0" ' -test_expect_success PERL '--batch-command info is unbuffered by default' ' - perl -e "$script" -- --batch-command $hello_oid "$expect" "info " +test_expect_success PERL_IPC_OPEN2 '--batch-check is unbuffered by default' ' + perl -e "$perl_script" -- --batch-check $hello_oid "$expect" +' + +test_expect_success PERL_IPC_OPEN2 '--batch-command info is unbuffered by default' ' + perl -e "$perl_script" -- --batch-command $hello_oid "$expect" "info " ' test_done diff --git a/t/t7501-commit-basic-functionality.sh b/t/t7501-commit-basic-functionality.sh index cc12f99f115..a37509f0043 100755 --- a/t/t7501-commit-basic-functionality.sh +++ b/t/t7501-commit-basic-functionality.sh @@ -46,7 +46,7 @@ test_expect_success 'paths and -a do not mix' ' test_must_fail git commit -m foo -a file ' -test_expect_success PERL 'can use paths with --interactive' ' +test_expect_success 'can use paths with --interactive' ' echo bong-o-bong >file && # 2: update, 1:st path, that is all, 7: quit test_write_lines 2 1 "" 7 | @@ -345,12 +345,12 @@ test_expect_success 'overriding author from command line' ' grep Rubber.Duck output ' -test_expect_success PERL 'interactive add' ' +test_expect_success 'interactive add' ' echo 7 | test_must_fail git commit --interactive >out && grep "What now" out ' -test_expect_success PERL "commit --interactive doesn't change index if editor aborts" ' +test_expect_success "commit --interactive doesn't change index if editor aborts" ' echo zoo >file && test_must_fail git diff --exit-code >diff1 && test_write_lines u "*" q | From patchwork Tue Mar 25 13:14:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029010 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AC89267F75 for ; Tue, 25 Mar 2025 13:14:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908474; cv=none; b=YAG0wX3L0fliDco+7RWTjfICLwCFRHjTJ2hn7tIQxY9G5fo4q4nhUT0mtd4AXqUffXGu0a5x3opMqBaVC7HkfQtctUUEMeH8lsbx8/zDXLSZysxtK+Z0dFsQ4ZV6cX9FrJ/Z7HyQI1Nc9cRomwiZ9NMzteh045smNuIg2X0/HVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908474; c=relaxed/simple; bh=SqgwrBTkrYbv5glFIrb56jno8ArmyZR/5hk9xLLHDZk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hnWNRLlLM7LpkZNeOvqjv4n1xK+VD3CuFPSIh5xgTVAGgqEXGjhhFf6ldGbjx0dmvOaum5Q3DbCkRLN0pmhSnuNZmAA17oie+HrAH5TlyDPZw8yT46jUzeR93OWC05wbdT308VgZnDqrtuBrv/Jeqi2o3nPMvv/kh9Ab8pOmyXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=afQiFhcq; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=SgwQCAF0; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="afQiFhcq"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="SgwQCAF0" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id 9DC9F1383844; Tue, 25 Mar 2025 09:14:31 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908471; x=1742994871; bh=qOkz5tNStvWV5OcPZ4w3xCtLyTUs4qHhI9eqR2Q3F9M=; b= afQiFhcqNP511e4hpzM62OfBj+u9ycG3BxMrAJkfcRZMKwgZZXP0ATnXS7Tw8WSp DmE6hE4r1XCaPPewlLLO+C3hMRnSUCVRi05WtueZysv3vXWC5/IG8qstZbT9x6Nv R4FtN4Xt5D91ZRqSkV7USlEwqGt9XGZPpS4PeFgrKqWPpFZi/D6qP+mEcO/BOtlm 6hlNH1qKxRckRsoDjAUX1xK/jiOjRET7PkEHkpiCfrrvcp4cygtaiMNSWkvc+1q6 P53eCoA95fMYvNibaaJbIYXAlLcDSfwoGkzLnwNk+/CBSjEurVWWgoiAoBPkKhmo QR4TT6mgCj/4u5DqXfu1Ew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908471; x= 1742994871; bh=qOkz5tNStvWV5OcPZ4w3xCtLyTUs4qHhI9eqR2Q3F9M=; b=S gwQCAF0aW6XcbuDG9WEEctFycJN47W0/FxLN2j7fgNi/9EKr7QRuN+BLBHdivqdk IasHCxtDT+8VyD0p3cP+csmWCUerIqWIPjo4v4Gu8UuGf8ocz5yUKl9Ntr5pK2um 9u5b2yeaZCrTS1iJzp0Lr3MXl9BMoIEQClvy7oGsf0+CENopE8GcakztyKPT4krO pUPTuRGR2ghMmDYUBYP6Y2cie/RoRElr2AN8MrfvRmXu4ZNhxg2TCchDpZ7KMW3Q 9XZkcumfzCzkkI11/jbXkFmRg0z2fhPnydsp0C/sFRuf/sDlEN+6JW58tNXB+d89 ccGfZAGQc5+ckqn90V6iA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedvnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlih hnsehgmhigrdguvgdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrdgt ohhmpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprh gtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghp thhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:30 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 555acbb2 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:29 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:26 +0100 Subject: [PATCH v2 08/20] meson: stop requiring Perl when tests are enabled Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-8-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The Perl interpreter used to be a strict dependency for running our test suite. This requirement is explicit in the Meson build system, where we require Perl to be present unless tests have been disabled. With the preceding commits we have loosened this restriction so that it is now possible to run tests when Perl is unavailable. Loosen the above requirement accordingly. Signed-off-by: Patrick Steinhardt --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index efe2871c9db..d6e27b236fa 100644 --- a/meson.build +++ b/meson.build @@ -772,7 +772,7 @@ endif # features. It is optional if you want to neither execute tests nor use any of # these optional features. perl_required = get_option('perl') -if get_option('tests') or get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers') +if get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers') perl_required = true endif From patchwork Tue Mar 25 13:14:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029013 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3311E268685 for ; Tue, 25 Mar 2025 13:14:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908476; cv=none; b=l58oG3+m+drukvwVXi0XLp3F+MJ5fITkGnGxxf7NMTfBmDbXahsSO3SQVgJlfFglnOLt8qFDma/sHmMkiW7FCWc5o2DCxtQ5YyLMKmcLe0Ubk2BpdB6Mft/Kk1gKZWRml9eQukZh9DUQ7r55/O8Sf3kr2fX/MdXF8g8fXDKgFdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908476; c=relaxed/simple; bh=l++6TOMGDvU+Ku1F+XjsGw22Ru2u7Sy3ITLF2o+P/oM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C9kzzh+kafzPFcnegelc5vEoHKPBEPQDmnT8nbXRvGR9wqzKZUY8saJPdMCE9EWIv3FhBeTerStRqltq0nTyJBOmpbhFBTgGuCIHkcR9MPXhJp3BwX0yNDKqR1MOC/hdbNH13D7OUvonPifH2w8Td1rfwi8x2MQFCy/tgyuorgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=l5Rs4NN4; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=OZZAzPct; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="l5Rs4NN4"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="OZZAzPct" Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52]) by mailfout.phl.internal (Postfix) with ESMTP id 0A3AE1383842; Tue, 25 Mar 2025 09:14:33 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-12.internal (MEProxy); Tue, 25 Mar 2025 09:14:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908473; x=1742994873; bh=3ClEJeq0r9S2afkT2Gk3D1jB1qy87nJM7NWRNiLDVUI=; b= l5Rs4NN46oiSHQ+SL/kMklCsi0mM9O38Wo+JeCMv2ARYYfHmpsegZb2zPF14bQ5P 2ewjYMZjt3NKMXS8SvXIPtPTfKGwjkvNmaCkG6yTOrbDbn7Nz5tNj1Q+PEDbqUfY Rf7WDa7RscX3QRP/UQ4Wm2GFSrAm9UVRcf54ZOn/fXnPrLjT5AWJCrW0n+ddYMHS /NvZaj2EJkTgV4TW9VU5kzChMW/7v9txuSzpta2G24+i57ABG0vf8m3FdjXF2+yZ 9cjQ5yro4NlepXgsvUHEKhQeYuAgUqiGnizp95w0f35vIDKMlPn07vzyflSAV/QJ 0lZNrlyL2ii7MYCWr5gVMQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908473; x= 1742994873; bh=3ClEJeq0r9S2afkT2Gk3D1jB1qy87nJM7NWRNiLDVUI=; b=O ZZAzPct2OFOfsFkygzuHuf0wYsO7VAyQJDM3oRv3M1qBl8gP4X58PDPUdBocxrHQ LUO1sgJdnDHyHkG8e0PzDkWAkREYk2qlBe66TEOpxyUFZQGT07UWUrWuSNebzCHc 492tKr1NvKTDsG5ENSvGFF3LnFDUECUUKy6VsL/I24KtiOfrBERAwtpTieqv9Gr3 tD3ytzSzc4nWWWdWJDVs60RUCbghlZvavqQn8cnZ4oVOAnLID3Qi4dBoQ7kpYAp8 M2TwMUmLWxnPUFvAvPYGsPYXVlM4HvvBq//Vz3OAtJnLAHxwFV/zMBJgE827eQRs WQwgrNp9ce+Ack06/n1vQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpedtvefghfeuudethfdtfeejkeeugfehheduheel vdehfeekveekuefgfeelvdegffenucffohhmrghinheptghouhhnthhsrdhshhenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpshesphhkshdr ihhmpdhnsggprhgtphhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhope hphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpthhtohepshhu nhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprhgtphhtthhopehgihhtsehvgh gvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhohhgrnhhnvghsrdhstghhihhn uggvlhhinhesghhmgidruggvpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrg hilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:31 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 2091f689 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:30 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:27 +0100 Subject: [PATCH v2 09/20] Makefile: stop requiring Perl when running tests Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-9-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The Makefile for our tests has a couple of targets that depend on Perl. Adapt those targets to only run conditionally in case Perl is available on the system so that it becomes possible to run the test suite without Perl. Signed-off-by: Patrick Steinhardt --- t/Makefile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/t/Makefile b/t/Makefile index 2994eb5fa9a..791e0a09789 100644 --- a/t/Makefile +++ b/t/Makefile @@ -59,16 +59,21 @@ CHAINLINTSUPPRESS = GIT_TEST_EXT_CHAIN_LINT=0 && export GIT_TEST_EXT_CHAIN_LINT all:: $(DEFAULT_TEST_TARGET) -test: pre-clean check-chainlint check-meson $(TEST_LINT) +test: pre-clean check-meson $(TEST_LINT) $(CHAINLINTSUPPRESS) $(MAKE) aggregate-results-and-cleanup +ifneq ($(PERL_PATH),) +test: check-chainlint +prove: check-chainlint +endif + failed: @failed=$$(cd '$(TEST_RESULTS_DIRECTORY_SQ)' && \ grep -l '^failed [1-9]' *.counts | \ sed -n 's/\.counts$$/.sh/p') && \ test -z "$$failed" || $(MAKE) $$failed -prove: pre-clean check-chainlint $(TEST_LINT) +prove: pre-clean $(TEST_LINT) @echo "*** prove (shell & unit tests) ***" @$(CHAINLINTSUPPRESS) TEST_OPTIONS='$(GIT_TEST_OPTS)' TEST_SHELL_PATH='$(TEST_SHELL_PATH_SQ)' $(PROVE) --exec ./run-test.sh $(GIT_PROVE_OPTS) $(T) $(UNIT_TESTS) $(MAKE) clean-except-prove-cache @@ -132,8 +137,13 @@ check-meson: fi; \ done -test-lint: test-lint-duplicates test-lint-executable test-lint-shell-syntax \ +test-lint: test-lint-duplicates test-lint-executable \ test-lint-filenames +ifneq ($(PERL_PATH),) +test-lint: test-lint-shell-syntax +else +GIT_TEST_CHAIN_LINT = 0 +endif ifneq ($(GIT_TEST_CHAIN_LINT),0) test-lint: test-chainlint endif From patchwork Tue Mar 25 13:14:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029014 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73E5126868D for ; Tue, 25 Mar 2025 13:14:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908477; cv=none; b=YWNwRIyIFNkWDYj/6aP2G89Akf2RngtiZdnxrcqFbEiA4pUh9aFcmE6npHu6eOXCWUh7l6ie2lijQ7nYWPWR8XosiMofpHICftfPwsngXbqkGEqF1P+mc0yHCjFs7u8Ge3ey0Qpt7CeQ5zNndmIlCzUZSlJYwxQUQLy6aXAgAeI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908477; c=relaxed/simple; bh=kbryDW/8mAHi1VxLqgZRb+hSNgwHHvpVcZLcfFw5Ldo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Iq/v/aZk4JElyRtofqb12zeVqGwjSFULutt0Wdt3M/clOWf/TYVEIgh6q1M579Y3ceYWc8+cSCIl6u+QWuRnvm5NS1JqVkzOdNupc/BP5+AzJzT0V6JJ0fwIR48GHIvUM2OQiJLzV3O7WzhFln7xqgyeTi6Kpz5Eu6JHhZLMQFs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=ZaANJI6j; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=DFh5OxIe; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="ZaANJI6j"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="DFh5OxIe" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id 451951383841; Tue, 25 Mar 2025 09:14:34 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908474; x=1742994874; bh=99JmKnJAovG52dErw2E33UrMlnFczkkbwlem6rWKtX8=; b= ZaANJI6jLkSR2eKm+L34czG363yGzJtqW+Zp37rDGCyrXHvhGQKhbCIPlJdKCyK7 PVXxMmajJ9BFAD7ubLQCyOcLIXriCCGzgou7FaCGGWxmo9lmqRpXOzZT+ADWdSdt dtXbh5HZNZ4Utf11WzX1n0Q9x4ln1Cz05jLqGD99XMlmLxRcQsKQBiQzItsRVdNP J5McBUS8WRlbW0bJB+44bNINoTGShuBWaiFkeLidhLRcRDQP5bF7DmyJIfH0b9f2 /ETNLTQtCEBwp+a6tXE9wCMio1G4Pusigt9GsEW/CAnGeRuyn02NikNoF38qHkac bL0Pz2oIhkNNrsB9nXk0PA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908474; x= 1742994874; bh=99JmKnJAovG52dErw2E33UrMlnFczkkbwlem6rWKtX8=; b=D Fh5OxIe+grdD4Ip4N2ZWuOURO/aDk81RqR885aQmOCo32cA6pFJUyV6DJItNns4x lJxQua838sEGSt0+UkFAPBMi7abH6EDqj8PoKj1wNKkyy0IWbieY4/sHAdjl5hq7 XOkjvHGC6Gx+znAyQotF/5lO0vZ9wd/zzXhVp//GkaHo0FD3OGD32T64alwhkgaZ Kvpxj0YBE1GTQNQIYGZxl6ZZrpsnU9p7uXaRl0ISpOAzu7DkXujdC3zz03ANI1Va Qnxw7L9CYcLowJ/gu5C1I+gDX9IvWy2jlLBwztHjOkvZDjVrqbVx0p6C928Pa68L iSHwrYhAMqkxtFXVaEqiA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedvnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtg hordgtohhmpdhrtghpthhtohepphhhihhllhhiphdrfihoohguuddvfeesghhmrghilhdr tghomhdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpth htohepjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhmgidruggvpdhrtghpthht ohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:33 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 18ada201 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:31 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:28 +0100 Subject: [PATCH v2 10/20] t: refactor tests depending on Perl transliteration operator Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-10-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 We have a bunch of tests that use Perl to perform character transliteration via the "y/" or "tr/" operator. These usecases can be trivially replaced with tr(1). Refactor the tests accordingly so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Signed-off-by: Patrick Steinhardt --- t/helper/test-sha1.sh | 4 ++-- t/lib-diff.sh | 4 ++-- t/t3300-funny-names.sh | 12 ++++++------ t/t4020-diff-external.sh | 6 +++--- t/t4103-apply-binary.sh | 12 +++--------- t/t4116-apply-reverse.sh | 10 ++-------- t/t4200-rerere.sh | 2 +- 7 files changed, 19 insertions(+), 31 deletions(-) diff --git a/t/helper/test-sha1.sh b/t/helper/test-sha1.sh index bf387d3db14..f03b784ddc2 100755 --- a/t/helper/test-sha1.sh +++ b/t/helper/test-sha1.sh @@ -15,7 +15,7 @@ do { test -z "$pfx" || echo "$pfx" dd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null | - perl -pe 'y/\000/g/' + tr "\000" "g" } | ./t/helper/test-tool $sha1 $cnt ) if test "$expect" = "$actual" @@ -61,7 +61,7 @@ do { test -z "$pfx" || echo "$pfx" dd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null | - perl -pe 'y/\000/g/' + tr "\000" "g" } | sha1sum | sed -e 's/ .*//' ) diff --git a/t/lib-diff.sh b/t/lib-diff.sh index c4606bd4b7f..12b3c8fcc6a 100644 --- a/t/lib-diff.sh +++ b/t/lib-diff.sh @@ -21,8 +21,8 @@ compare_diff_raw_z () { # Also we do not check SHA1 hash generation in this test, which # is a job for t0000-basic.sh - perl -pe 'y/\000/\012/' <"$1" | sed -e "$sanitize_diff_raw_z" >.tmp-1 - perl -pe 'y/\000/\012/' <"$2" | sed -e "$sanitize_diff_raw_z" >.tmp-2 + tr "\000" "\012" <"$1" | sed -e "$sanitize_diff_raw_z" >.tmp-1 + tr "\000" "\012" <"$2" | sed -e "$sanitize_diff_raw_z" >.tmp-2 test_cmp .tmp-1 .tmp-2 && rm -f .tmp-1 .tmp-2 } diff --git a/t/t3300-funny-names.sh b/t/t3300-funny-names.sh index 502b1572059..dd0586b0073 100755 --- a/t/t3300-funny-names.sh +++ b/t/t3300-funny-names.sh @@ -63,14 +63,14 @@ test_expect_success 'ls-files quotes funny filename' ' test_cmp expected current ' -test_expect_success PERL_TEST_HELPERS 'ls-files -z does not quote funny filename' ' +test_expect_success 'ls-files -z does not quote funny filename' ' cat >expected <<-\EOF && just space no-funny tabs ," (dq) and spaces EOF git ls-files -z >ls-files.z && - perl -pe "y/\000/\012/" current && + tr "\000" "\012" current && test_cmp expected current ' @@ -101,23 +101,23 @@ test_expect_success 'diff-tree --name-status quotes funny filename' ' test_cmp expected current ' -test_expect_success PERL_TEST_HELPERS 'diff-index -z does not quote funny filename' ' +test_expect_success 'diff-index -z does not quote funny filename' ' cat >expected <<-\EOF && A tabs ," (dq) and spaces EOF git diff-index -z --name-status $t0 >diff-index.z && - perl -pe "y/\000/\012/" current && + tr "\000" "\012" current && test_cmp expected current ' -test_expect_success PERL_TEST_HELPERS 'diff-tree -z does not quote funny filename' ' +test_expect_success 'diff-tree -z does not quote funny filename' ' cat >expected <<-\EOF && A tabs ," (dq) and spaces EOF git diff-tree -z --name-status $t0 $t1 >diff-tree.z && - perl -pe y/\\000/\\012/ current && + tr "\000" "\012" current && test_cmp expected current ' diff --git a/t/t4020-diff-external.sh b/t/t4020-diff-external.sh index 189294de7ef..c8a23d51483 100755 --- a/t/t4020-diff-external.sh +++ b/t/t4020-diff-external.sh @@ -237,9 +237,9 @@ check_external_diff 0 empty empty 0 on --quiet check_external_diff 1 empty empty 1 on --quiet check_external_diff 128 empty error 2 on --quiet -echo NULZbetweenZwords | perl -pe 'y/Z/\000/' > file +echo NULZbetweenZwords | tr "Z" "\000" > file -test_expect_success PERL_TEST_HELPERS 'force diff with "diff"' ' +test_expect_success 'force diff with "diff"' ' after=$(git hash-object file) && after=$(git rev-parse --short $after) && echo >.gitattributes "file diff" && @@ -300,7 +300,7 @@ test_expect_success 'external diff with autocrlf = true' ' test $(wc -l file1 <<-\EOF && A quick brown fox jumps over the lazy dog. @@ -32,10 +26,10 @@ test_expect_success 'setup' ' git commit -m "Initial Version" 2>/dev/null && git checkout -b binary && - perl -pe "y/x/\000/" file3 && + tr "x" "\000" file3 && cat file3 >file4 && git add file2 && - perl -pe "y/\000/v/" file1 && + tr "y" "\000" file1 && rm -f file2 && git update-index --add --remove file1 file2 file3 file4 && git commit -m "Second Version" && @@ -164,7 +158,7 @@ test_expect_success 'apply binary -p0 diff' ' test -z "$(git diff --name-status binary -- file3)" ' -test_expect_success 'reject truncated binary diff' ' +test_expect_success PERL_TEST_HELPERS 'reject truncated binary diff' ' do_reset && # this length is calculated to get us very close to diff --git a/t/t4116-apply-reverse.sh b/t/t4116-apply-reverse.sh index 6f414ad27f5..1e7beab0016 100755 --- a/t/t4116-apply-reverse.sh +++ b/t/t4116-apply-reverse.sh @@ -10,23 +10,17 @@ test_description='git apply in reverse . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping apply reverse tests; Perl not available' - test_done -fi - test_expect_success setup ' test_write_lines a b c d e f g h i j k l m n >file1 && - perl -pe "y/ijk/\\000\\001\\002/" file2 && + tr "ijk" "\000\001\002" file2 && git add file1 file2 && git commit -m initial && git tag initial && test_write_lines a b c g h i J K L m o n p q >file1 && - perl -pe "y/mon/\\000\\001\\002/" file2 && + tr "mon" "\000\001\002" file2 && git commit -a -m second && git tag second && diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index 50fe8b0fd05..7fcca9ddad5 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -194,7 +194,7 @@ test_expect_success 'rerere updates postimage timestamp' ' test_expect_success 'rerere clear' ' mv $rr/postimage .git/post-saved && - echo "$sha1 a1" | perl -pe "y/\012/\000/" >.git/MERGE_RR && + echo "$sha1 a1" | tr "\012" "\000" >.git/MERGE_RR && git rerere clear && ! test -d $rr ' From patchwork Tue Mar 25 13:14:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029015 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95521268691 for ; Tue, 25 Mar 2025 13:14:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908477; cv=none; b=RSovkDoLWlC0tX+KDeERmF+b1NFonVGR3H7Po5rbun6WITI9LhK0gcDqTb1+vrB/y8XyqtQgE22yywe4kEgJfp69ZwmOdDFgfkaDFCGNL1A4AH45dCBctylSmRco7XZxZGNmKIiZitsxY9Px2dcid14qTGGt7rpV5xxpDAKXudo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908477; c=relaxed/simple; bh=NUjJwVrZKf36ai0L/yCz0tizIGQuhWN1bJiipXBpsMk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iKICyhYF7AkHEzCsnRbfa5K0BTjfXmDZeJSjAqweFx/U3YzDf1UnDojFW/VyxecGswFEA25qXRuNHtu1fqs0xFMQrI73+1c3H6qOBCb/QQmZJLkBVM46dXT6QHyOkJL7t5bGBLgAsAiBLbtPSVR2ykWpHqDvfmOWniCoLRgzxGk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=MhphwbHG; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=LxTtaHrV; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="MhphwbHG"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="LxTtaHrV" Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfhigh.phl.internal (Postfix) with ESMTP id 98A211140283; Tue, 25 Mar 2025 09:14:34 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Tue, 25 Mar 2025 09:14:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908474; x=1742994874; bh=zw64TTBnVmiHYg8TXrMvQw9Xaz+FqLeHk409zSzzaPM=; b= MhphwbHGRWmKTd0NhpZY8iTGPANW+fALwY50tPZ6JZAhhv1o6MCSAba0gCPzNzHO X3XCkYXSi44K07Po6O47ia7eJXkrL92g0eB9gOnIXNADIgW+x6vqZI4EqKEmehgn EfxCgk5oiP7HKRpNpQ6jVix7UpEzUncxvBFmOVahEfZGvTDUU00csNZ3hf782c1+ xf5S6z66wv6N9CXWPaQN2SlJINskLPRIl25BT3CK1fokWfGITugHGkg2TN/nutBw oIBar40HVbp63DeyXXtVQFRSphd0NQLM+y81KAW1NozcOhAyZXje10nlTjJgKHp+ ZQ8GBOUgKiGOa/HKT6UyLg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908474; x= 1742994874; bh=zw64TTBnVmiHYg8TXrMvQw9Xaz+FqLeHk409zSzzaPM=; b=L xTtaHrVq8ok7ncfGJC29DFDwOzS/tMiXuvdbrE0YCaIZMGeR6m7KGpzVjjfXT9r7 ryY08zu8uAPGZhxmGXLZ6BxXhbiz1Xk8TmKBWr78osu/Yilgjm4BSYe3aOIKMwOP wcz+mcbpqigOEO5ABrZ3eHIG42WYJN9nDlXI+eVoJ2lhGCOyAnVkb2H9yiQU2j+7 PhISlOC9vm7Vma1T/lWC5ob6D68yMgnm+LCwqFlM/Ua/5zOzz96b96qNt6fuEicI QvtG/LkwsGfAhMwNX83cXpROGpfsoT0XF5GSpuJGuYHxMGkmp3sJ0jU9OFleTRTr vxKXs+fgWJMf68fzlkM8w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtg hordgtohhmpdhrtghpthhtohepjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhm gidruggvpdhrtghpthhtohepphhhihhllhhiphdrfihoohguuddvfeesghhmrghilhdrtg homhdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrdgtohhmpdhrtghp thhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:33 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 1963d319 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:32 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:29 +0100 Subject: [PATCH v2 11/20] t: refactor tests depending on Perl substitution operator Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-11-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 We have a bunch of tests that use Perl to perform substitution via the "s/" operator. These usecases can be trivially replaced with sed(1). Refactor the tests accordingly so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Signed-off-by: Patrick Steinhardt --- t/t0008-ignores.sh | 10 ++-------- t/t4029-diff-trailing-space.sh | 5 +++-- t/t4200-rerere.sh | 12 +++--------- t/t5303-pack-corruption-resilience.sh | 10 ++++++---- t/t5310-pack-bitmaps.sh | 4 ++-- t/t5534-push-signed.sh | 4 ++-- t/t6011-rev-list-with-bad-commit.sh | 20 +++++++++----------- t/t7416-submodule-dash-url.sh | 9 ++------- t/t7508-status.sh | 4 ++-- t/t8006-blame-textconv.sh | 8 +------- t/t9137-git-svn-dcommit-clobber-series.sh | 14 ++++++++------ 11 files changed, 40 insertions(+), 60 deletions(-) diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh index 1aaa6bf5ae8..273d71411fe 100755 --- a/t/t0008-ignores.sh +++ b/t/t0008-ignores.sh @@ -5,12 +5,6 @@ test_description=check-ignore TEST_CREATE_REPO_NO_TEMPLATE=1 . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping ignores tests; Perl not available' - test_done -fi - init_vars () { global_excludes="global-excludes" } @@ -45,11 +39,11 @@ test_stderr () { } broken_c_unquote () { - "$PERL_PATH" -pe 's/^"//; s/\\//; s/"$//; tr/\n/\0/' "$@" + sed -e 's/^"//' -e 's/\\//' -e 's/"$//' "$1" | tr '\n' '\0' } broken_c_unquote_verbose () { - "$PERL_PATH" -pe 's/ "/ /; s/\\//; s/"$//; tr/:\t\n/\0/' "$@" + sed -e 's/ "/ /' -e 's/\\//' -e 's/"$//' "$1" | tr ':\t\n' '\000' } stderr_contains () { diff --git a/t/t4029-diff-trailing-space.sh b/t/t4029-diff-trailing-space.sh index a92a42990b1..db75998e35f 100755 --- a/t/t4029-diff-trailing-space.sh +++ b/t/t4029-diff-trailing-space.sh @@ -18,7 +18,7 @@ index 5f6a263..8cb8bae 100644 EOF exit 1 -test_expect_success PERL_TEST_HELPERS "$test_description" ' +test_expect_success "$test_description" ' printf "\nx\n" > f && before=$(git hash-object f) && before=$(git rev-parse --short $before) && @@ -31,7 +31,8 @@ test_expect_success PERL_TEST_HELPERS "$test_description" ' git config --bool diff.suppressBlankEmpty true && git diff f > actual && test_cmp exp actual && - perl -i.bak -p -e "s/^\$/ /" exp && + sed "s/^\$/ /" exp.munged && + mv exp.munged exp && git config --bool diff.suppressBlankEmpty false && git diff f > actual && test_cmp exp actual && diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index 7fcca9ddad5..bacb93d014f 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -27,12 +27,6 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping rerere tests; Perl not available' - test_done -fi - test_expect_success 'setup' ' cat >a1 <<-\EOF && Some title @@ -87,7 +81,7 @@ test_expect_success 'activate rerere, old style (conflicting merge)' ' test_might_fail git config --unset rerere.enabled && test_must_fail git merge first && - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && + sha1=$(sed "s/ .*//" <.git/MERGE_RR) && rr=.git/rr-cache/$sha1 && grep "^=======\$" $rr/preimage && ! test -f $rr/postimage && @@ -100,7 +94,7 @@ test_expect_success 'rerere.enabled works, too' ' git reset --hard && test_must_fail git merge first && - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && + sha1=$(sed "s/ .*//" <.git/MERGE_RR) && rr=.git/rr-cache/$sha1 && grep ^=======$ $rr/preimage ' @@ -110,7 +104,7 @@ test_expect_success 'set up rr-cache' ' git config rerere.enabled true && git reset --hard && test_must_fail git merge first && - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && + sha1=$(sed "s/ .*//" <.git/MERGE_RR) && rr=.git/rr-cache/$sha1 ' diff --git a/t/t5303-pack-corruption-resilience.sh b/t/t5303-pack-corruption-resilience.sh index ac5e370e1e4..07382797bbb 100755 --- a/t/t5303-pack-corruption-resilience.sh +++ b/t/t5303-pack-corruption-resilience.sh @@ -99,11 +99,12 @@ test_expect_success '... and loose copy of first delta allows for partial recove git cat-file blob $blob_3 > /dev/null ' -test_expect_success PERL_TEST_HELPERS 'create corruption in data of first object' ' +test_expect_success 'create corruption in data of first object' ' create_new_pack && git prune-packed && chmod +w ${pack}.pack && - perl -i.bak -pe "s/ base /abcdef/" ${pack}.pack && + sed "s/ base /abcdef/" <${pack}.pack >${pack}.pack.munged && + mv ${pack}.pack.munged ${pack}.pack && test_must_fail git cat-file blob $blob_1 > /dev/null && test_must_fail git cat-file blob $blob_2 > /dev/null && test_must_fail git cat-file blob $blob_3 > /dev/null @@ -156,11 +157,12 @@ test_expect_success '... and then a repack "clears" the corruption' ' git cat-file blob $blob_3 > /dev/null ' -test_expect_success PERL_TEST_HELPERS 'create corruption in data of first delta' ' +test_expect_success 'create corruption in data of first delta' ' create_new_pack && git prune-packed && chmod +w ${pack}.pack && - perl -i.bak -pe "s/ delta1 /abcdefgh/" ${pack}.pack && + sed "s/ delta1 /abcdefgh/" <${pack}.pack >${pack}.pack.munged && + mv ${pack}.pack.munged ${pack}.pack && git cat-file blob $blob_1 > /dev/null && test_must_fail git cat-file blob $blob_2 > /dev/null && test_must_fail git cat-file blob $blob_3 > /dev/null diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh index 81987296235..9033d72b8c7 100755 --- a/t/t5310-pack-bitmaps.sh +++ b/t/t5310-pack-bitmaps.sh @@ -395,7 +395,7 @@ test_bitmap_cases () { ) ' - test_expect_success PERL_TEST_HELPERS 'pack.preferBitmapTips' ' + test_expect_success 'pack.preferBitmapTips' ' git init repo && test_when_finished "rm -fr repo" && ( @@ -421,7 +421,7 @@ test_bitmap_cases () { # mark the commits which did not receive bitmaps as preferred, # and generate the bitmap again - perl -pe "s{^}{create refs/tags/include/$. }" push.tweak && + sed "s/\([^ ]\)bar/\1baz/" push.tweak && prepare_dst && git -C dst config receive.certnonceseed sekrit && git -C dst config receive.advertisepushoptions 1 && diff --git a/t/t6011-rev-list-with-bad-commit.sh b/t/t6011-rev-list-with-bad-commit.sh index 6131c361094..12329aab388 100755 --- a/t/t6011-rev-list-with-bad-commit.sh +++ b/t/t6011-rev-list-with-bad-commit.sh @@ -4,12 +4,6 @@ test_description='git rev-list should notice bad commits' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping rev-list with bad commit tests; Perl not available' - test_done -fi - # Note: # - compression level is set to zero to make "corruptions" easier to perform # - reflog is disabled to avoid extra references which would twart the test @@ -41,11 +35,15 @@ test_expect_success 'verify number of revisions' \ first_commit=$(git rev-parse HEAD~3) ' -test_expect_success 'corrupt second commit object' \ - ' - perl -i.bak -pe "s/second commit/socond commit/" .git/objects/pack/*.pack && - test_must_fail git fsck --full - ' +test_expect_success 'corrupt second commit object' ' + for p in .git/objects/pack/*.pack + do + sed "s/second commit/socond commit/" <"$p" >"$p.munged" && + mv "$p.munged" "$p" || + return 1 + done && + test_must_fail git fsck --full +' test_expect_success 'rev-list should fail' ' test_must_fail env GIT_TEST_COMMIT_GRAPH=0 git -c core.commitGraph=false rev-list --all > /dev/null diff --git a/t/t7416-submodule-dash-url.sh b/t/t7416-submodule-dash-url.sh index 14069600a2f..00b81d349b9 100755 --- a/t/t7416-submodule-dash-url.sh +++ b/t/t7416-submodule-dash-url.sh @@ -4,12 +4,6 @@ test_description='check handling of disallowed .gitmodule urls' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping submodule dash URL tests; Perl not available' - test_done -fi - test_expect_success 'setup' ' git config --global protocol.file.allow always ' @@ -39,7 +33,8 @@ test_expect_success 'fsck accepts protected dash' ' ' test_expect_success 'remove ./ protection from .gitmodules url' ' - perl -i -pe "s{\./}{}" .gitmodules && + sed "s|\./||" <.gitmodules >.gitmodules.munged && + mv .gitmodules.munged .gitmodules && git commit -am "drop protection" ' diff --git a/t/t7508-status.sh b/t/t7508-status.sh index 14c41b2cb7c..cdc1d6fcc78 100755 --- a/t/t7508-status.sh +++ b/t/t7508-status.sh @@ -1064,9 +1064,9 @@ test_expect_success 'status -s submodule summary (clean submodule)' ' test_cmp expect output ' -test_expect_success PERL_TEST_HELPERS 'status -z implies porcelain' ' +test_expect_success 'status -z implies porcelain' ' git status --porcelain | - perl -pe "s/\012/\000/g" >expect && + tr "\012" "\000" >expect && git status -z >output && test_cmp expect output ' diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh index 5cb16872081..810dac18f56 100755 --- a/t/t8006-blame-textconv.sh +++ b/t/t8006-blame-textconv.sh @@ -4,12 +4,6 @@ test_description='git blame textconv support' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping blame textconv tests; Perl not available' - test_done -fi - find_blame() { sed -e 's/^[^(]*//' } @@ -17,7 +11,7 @@ find_blame() { cat >helper <<'EOF' #!/bin/sh grep -q '^bin: ' "$1" || { echo "E: $1 is not \"binary\" file" 1>&2; exit 1; } -"$PERL_PATH" -p -e 's/^bin: /converted: /' "$1" +sed 's/^bin: /converted: /' <"$1" EOF chmod +x helper diff --git a/t/t9137-git-svn-dcommit-clobber-series.sh b/t/t9137-git-svn-dcommit-clobber-series.sh index a9d38be997c..9afdb45b1cc 100755 --- a/t/t9137-git-svn-dcommit-clobber-series.sh +++ b/t/t9137-git-svn-dcommit-clobber-series.sh @@ -15,13 +15,13 @@ test_expect_success 'initialize repo' ' test -e file ' -test_expect_success PERL_TEST_HELPERS '(supposedly) non-conflicting change from SVN' ' +test_expect_success '(supposedly) non-conflicting change from SVN' ' test x"$(sed -n -e 58p < file)" = x58 && test x"$(sed -n -e 61p < file)" = x61 && svn_cmd co "$svnrepo" tmp && (cd tmp && - perl -i.bak -p -e "s/^58$/5588/" file && - perl -i.bak -p -e "s/^61$/6611/" file && + sed -e "s/^58$/5588/" -e "s/^61$/6611/" file.munged && + mv file.munged file && poke file && test x"$(sed -n -e 58p < file)" = x5588 && test x"$(sed -n -e 61p < file)" = x6611 && @@ -37,11 +37,13 @@ test_expect_success 'some unrelated changes to git' " git commit -m bye-life life " -test_expect_success PERL_TEST_HELPERS 'change file but in unrelated area' " +test_expect_success 'change file but in unrelated area' " test x\"\$(sed -n -e 4p < file)\" = x4 && test x\"\$(sed -n -e 7p < file)\" = x7 && - perl -i.bak -p -e 's/^4\$/4444/' file && - perl -i.bak -p -e 's/^7\$/7777/' file && + sed -e 's/^4\$/4444/' \ + -e 's/^7\$/7777/' \ + file.munged && + mv file.munged file && test x\"\$(sed -n -e 4p < file)\" = x4444 && test x\"\$(sed -n -e 7p < file)\" = x7777 && git commit -m '4 => 4444, 7 => 7777' file && From patchwork Tue Mar 25 13:14:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029017 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7360125F7B7 for ; Tue, 25 Mar 2025 13:14:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908478; cv=none; b=fBvFsAFYjOsmYL2eXSH0VtXmeLnY/AXBWupvXtJjJf4L23f2JiH03hXSz6ADDx6x1V0UeJ2x70CXZ6ZoSTL50kbZrk28aiTZaIKLIQYPmEB9KR1YxWf9nU4yfqWZLbIVGouppACTVNgCYGM46ZNdX4/SVsxhYDWe+painNAAtKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908478; c=relaxed/simple; bh=XGG8rZ5HbDCjk2zGhaX6TYCv5ZAffm6Wv/cj+QDoVfk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pbvoBqnGw+xQgFylPv6zbW6YHxErAuVUII+v717VR51lUDYcx8lUKYVjqr73az41a2cfdY1jSDWOCCdvrCTAB9L3qtbHH8PwaawrcioDM3xKfhTZ1wP1327a+wt2rv5U+Y4LRlFvBP3F98nvw6RA5V3kBUzy6zdbwzyyMQ1LJDI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=RFpJV6Ba; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=lFiCdZjR; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="RFpJV6Ba"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="lFiCdZjR" Received: from phl-compute-10.internal (phl-compute-10.phl.internal [10.202.2.50]) by mailfhigh.phl.internal (Postfix) with ESMTP id 917F4114028B; Tue, 25 Mar 2025 09:14:35 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-10.internal (MEProxy); Tue, 25 Mar 2025 09:14:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908475; x=1742994875; bh=Ponmc7v/lBVtweSTqp10UuCRjbtOfO1E7s3Hl1eippo=; b= RFpJV6BaQpBzePaM3vpSNCfI68F+k6ZVM3yf4+iLlsG1VeiEVkBm81DNiyhUfifo tNYzWKs4oD1qDVdiuRmh7UuTZ0dUwTWGnv1MFqaCb712zv0rfTKqvG6hf9Eghdrn UZravDvthehXWBvLjyt1qqTPEbgCXuuRgOEHaQ/Wr7U7xJeR2c6de7zogE0Kbc2Y 6jAGSpPm7rSa9ngWEJVfzFm6jhGmxpOVhfTswYOyI5RoKp5+bfIZ6Nqsw9OEMNH3 WVnbb6Nw0/7An92oj1qfk+vbRs/7Czpz5g8SDdmw6ymha56QJVc03vKUuszZCJfP 8D6jbF5h07kzbbFwHnAzmA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908475; x= 1742994875; bh=Ponmc7v/lBVtweSTqp10UuCRjbtOfO1E7s3Hl1eippo=; b=l FiCdZjRB++RHdFy6Qd4k7WCjTAMw3iC9GKOgoJ1S/GyOvmDS3WF2J5mnXNw90Wp1 0MC3Nk4XK7I4asZbuXVwrxaaAK+FnPa/FyHomx3ekzvtYqEJNMEN1cgQbGCZ+QYy W3yeGvO1pHQtijGMybUPFtk+RxYtntV+9T/wYe6H8LeLjDblhu8RuAvHCL4R6UtV 7BLp53FfCQ4NerdLpAOaE+V7uJqzEJLbDl2Gsim4H1tHHIIvMvtrWo6VQ1+R8KYd nMfDfgdLYfT7mhJGc8suPYrS5i1PTAl/6lk/xxX2/3itVlm4a6rDAtFpfS8r7joy 2vK2LaeKMyh5yUujTYg+g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlih hnsehgmhigrdguvgdprhgtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgr ihhlrdgtohhmpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh dprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohep shhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:34 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id d92997e1 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:33 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:30 +0100 Subject: [PATCH v2 12/20] t: refactor tests depending on Perl to print data Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-12-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 A bunch of tests rely on Perl to print data in various different ways. These usages fall into the following categories: - Print data conditionally by matching patterns. These usecases can be converted to use awk(1) rather easily. - Print data repeatedly. These usecases can typically be converted to use a combination of `test-tool genzeros` and sed(1). - Print data in reverse. These usecases can be converted to use awk(1). Refactor the tests accordingly so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Signed-off-by: Patrick Steinhardt --- t/t0610-reftable-basics.sh | 7 +++---- t/t0613-reftable-write-options.sh | 4 ++-- t/t1010-mktree.sh | 8 ++++---- t/t4150-am.sh | 10 +++++----- t/t5300-pack-object.sh | 16 +++++----------- t/t5326-multi-pack-bitmaps.sh | 6 +++--- t/t5333-pseudo-merge-bitmaps.sh | 18 +++++------------- t/t5410-receive-pack-alternates.sh | 6 +++--- t/t5701-git-serve.sh | 7 +++++-- t/t6013-rev-list-reverse-parents.sh | 14 ++++++++------ t/t6115-rev-list-du.sh | 8 +------- t/t7006-pager.sh | 8 ++++---- t/t8002-blame.sh | 2 +- t/t9850-shell.sh | 4 ++-- 14 files changed, 51 insertions(+), 67 deletions(-) diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh index 5e0a1fa176d..77ed11e7172 100755 --- a/t/t0610-reftable-basics.sh +++ b/t/t0610-reftable-basics.sh @@ -643,12 +643,11 @@ test_expect_success 'basic: commit and list refs' ' test_cmp actual expect ' -test_expect_success PERL_TEST_HELPERS 'basic: can write large commit message' ' +test_expect_success 'basic: can write large commit message' ' test_when_finished "rm -rf repo" && git init repo && - perl -e " - print \"this is a long commit message\" x 50000 - " >commit-msg && + + awk "BEGIN { for (i = 0; i < 50000; i++) printf \"%s\", \"this is a long commit message\" }" >commit-msg && git -C repo commit --allow-empty --file=../commit-msg ' diff --git a/t/t0613-reftable-write-options.sh b/t/t0613-reftable-write-options.sh index fa1e2f9eef8..42aa1592f87 100755 --- a/t/t0613-reftable-write-options.sh +++ b/t/t0613-reftable-write-options.sh @@ -139,13 +139,13 @@ test_expect_success 'small block size leads to multiple ref blocks' ' ) ' -test_expect_success PERL_TEST_HELPERS 'small block size fails with large reflog message' ' +test_expect_success 'small block size fails with large reflog message' ' test_when_finished "rm -rf repo" && git init repo && ( cd repo && test_commit A && - perl -e "print \"a\" x 500" >logmsg && + test-tool genzeros 500 | tr "\000" "a" >logmsg && cat >expect <<-EOF && fatal: update_ref failed for ref ${SQ}refs/heads/logme${SQ}: reftable: transaction failure: entry too large EOF diff --git a/t/t1010-mktree.sh b/t/t1010-mktree.sh index 4977998e205..e9973f74949 100755 --- a/t/t1010-mktree.sh +++ b/t/t1010-mktree.sh @@ -41,14 +41,14 @@ test_expect_success 'ls-tree piped to mktree (2)' ' test_cmp tree.withsub actual ' -test_expect_success PERL_TEST_HELPERS 'ls-tree output in wrong order given to mktree (1)' ' - perl -e "print reverse <>" actual && test_cmp tree actual ' -test_expect_success PERL_TEST_HELPERS 'ls-tree output in wrong order given to mktree (2)' ' - perl -e "print reverse <>" actual && test_cmp tree.withsub actual ' diff --git a/t/t4150-am.sh b/t/t4150-am.sh index 4794510d70d..2ae93d3c967 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -1073,7 +1073,7 @@ test_expect_success 'am --patch-format=mboxrd handles mboxrd' ' test_cmp msg out ' -test_expect_success PERL_TEST_HELPERS 'am works with multi-line in-body headers' ' +test_expect_success 'am works with multi-line in-body headers' ' FORTY="String that has a length of more than forty characters" && LONG="$FORTY $FORTY" && rm -fr .git/rebase-apply && @@ -1084,13 +1084,13 @@ test_expect_success PERL_TEST_HELPERS 'am works with multi-line in-body headers' Body test" --author="$LONG " && git format-patch --stdout -1 >patch && # bump from, date, and subject down to in-body header - perl -lpe " - if (/^From:/) { + awk " + /^From:/{ print \"From: x \"; print \"Date: Sat, 1 Jan 2000 00:00:00 +0000\"; print \"Subject: x\n\"; - } - " patch >msg && + }; 1 + " msg && git checkout HEAD^ && git am msg && # Ensure that the author and full message are present diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 143856c29f1..362b05441af 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -7,17 +7,11 @@ test_description='git pack-object' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping pack-object tests; Perl not available' - test_done -fi - test_expect_success 'setup' ' rm -f .git/index* && - perl -e "print \"a\" x 4096;" >a && - perl -e "print \"b\" x 4096;" >b && - perl -e "print \"c\" x 4096;" >c && + test-tool genzeros 4096 | tr "\000" "a" >a && + test-tool genzeros 4096 | tr "\000" "b" >b && + test-tool genzeros 4096 | tr "\000" "c" >c && test-tool genrandom "seed a" 2097152 >a_big && test-tool genrandom "seed b" 2097152 >b_big && git update-index --add a a_big b b_big c && @@ -146,7 +140,7 @@ test_expect_success 'pack-object # e.g.: check_deltas stderr -gt 0 check_deltas() { - deltas=$(perl -lne '/delta (\d+)/ and print $1' "$1") && + deltas=$(sed -n 's/Total [0-9][0-9]* (delta \([0-9][0-9]*\)).*/\1/p' <"$1") && shift && if ! test "$deltas" "$@" then @@ -221,7 +215,7 @@ test_expect_success 'unpack with OFS_DELTA (core.fsyncmethod=batch)' ' check_unpack test-3-${packname_3} obj-list "$BATCH_CONFIGURATION" ' -test_expect_success 'compare delta flavors' ' +test_expect_success PERL_TEST_HELPERS 'compare delta flavors' ' perl -e '\'' defined($_ = -s $_) or die for @ARGV; exit 1 if $ARGV[0] <= $ARGV[1]; diff --git a/t/t5326-multi-pack-bitmaps.sh b/t/t5326-multi-pack-bitmaps.sh index 627f8b4efdc..e5d52de4bd3 100755 --- a/t/t5326-multi-pack-bitmaps.sh +++ b/t/t5326-multi-pack-bitmaps.sh @@ -153,7 +153,7 @@ test_midx_bitmap_cases () { ) ' - test_expect_success PERL_TEST_HELPERS 'pack.preferBitmapTips' ' + test_expect_success 'pack.preferBitmapTips' ' git init repo && test_when_finished "rm -fr repo" && ( @@ -176,8 +176,8 @@ test_midx_bitmap_cases () { comm -13 bitmaps commits >before && test_line_count = 1 before && - perl -ne "printf(\"create refs/tags/include/%d \", $.); print" \ - in && - perl -lne ' - print "create refs/tags/" . $. . " " . $1 if /([0-9a-f]+)/ - ' in && - - perl -lne "print \"create refs/remotes/$r/tags/\$. \$_\"" oids && grep -f oids refs | - perl -lne "print \$1 if /refs\/remotes\/([0-9]+)/" | + sed -n "s|refs/remotes/\([0-9][0-9]*\)/|\1|p" && sort -u || return 1 done >remotes && diff --git a/t/t5410-receive-pack-alternates.sh b/t/t5410-receive-pack-alternates.sh index 6a009fdcd71..4e82fd102e3 100755 --- a/t/t5410-receive-pack-alternates.sh +++ b/t/t5410-receive-pack-alternates.sh @@ -17,10 +17,10 @@ test_expect_success 'setup' ' ' extract_haves () { - depacketize | perl -lne '/^(\S+) \.have/ and print $1' + depacketize | sed -n 's/^\([^ ][^ ]*\) \.have/\1/p' } -test_expect_success PERL_TEST_HELPERS 'with core.alternateRefsCommand' ' +test_expect_success 'with core.alternateRefsCommand' ' write_script fork/alternate-refs <<-\EOF && git --git-dir="$1" for-each-ref \ --format="%(objectname)" \ @@ -33,7 +33,7 @@ test_expect_success PERL_TEST_HELPERS 'with core.alternateRefsCommand' ' test_cmp expect actual.haves ' -test_expect_success PERL_TEST_HELPERS 'with core.alternateRefsPrefixes' ' +test_expect_success 'with core.alternateRefsPrefixes' ' test_config -C fork core.alternateRefsPrefixes "refs/heads/private" && git rev-parse private/branch >expect && printf "0000" | git receive-pack fork >actual && diff --git a/t/t5701-git-serve.sh b/t/t5701-git-serve.sh index 200bf06ecb3..d4c28bae39e 100755 --- a/t/t5701-git-serve.sh +++ b/t/t5701-git-serve.sh @@ -220,7 +220,7 @@ test_expect_success 'refs/heads prefix' ' test_cmp expect actual ' -test_expect_success PERL_TEST_HELPERS 'ignore very large set of prefixes' ' +test_expect_success 'ignore very large set of prefixes' ' # generate a large number of ref-prefixes that we expect # to match nothing; the value here exceeds TOO_MANY_PREFIXES # from ls-refs.c. @@ -228,7 +228,10 @@ test_expect_success PERL_TEST_HELPERS 'ignore very large set of prefixes' ' echo command=ls-refs && echo object-format=$(test_oid algo) && echo 0001 && - perl -le "print \"ref-prefix refs/heads/\$_\" for (1..65536)" && + awk "{ + for (i = 1; i <= 65536; i++) + print \"ref-prefix refs/heads/\", \$i + }" && echo 0000 } | test-tool pkt-line pack >in && diff --git a/t/t6013-rev-list-reverse-parents.sh b/t/t6013-rev-list-reverse-parents.sh index 8074185742c..273196f52b5 100755 --- a/t/t6013-rev-list-reverse-parents.sh +++ b/t/t6013-rev-list-reverse-parents.sh @@ -26,17 +26,19 @@ test_expect_success 'set up --reverse example' ' commit five ' -test_expect_success PERL_TEST_HELPERS '--reverse --parents --full-history combines correctly' ' - git rev-list --parents --full-history main -- foo | - perl -e "print reverse <>" > expected && +reverse () { + awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' +} + +test_expect_success '--reverse --parents --full-history combines correctly' ' + git rev-list --parents --full-history main -- foo | reverse >expected && git rev-list --reverse --parents --full-history main -- foo \ > actual && test_cmp expected actual ' -test_expect_success PERL_TEST_HELPERS '--boundary does too' ' - git rev-list --boundary --parents --full-history main ^root -- foo | - perl -e "print reverse <>" > expected && +test_expect_success '--boundary does too' ' + git rev-list --boundary --parents --full-history main ^root -- foo | reverse >expected && git rev-list --boundary --reverse --parents --full-history \ main ^root -- foo > actual && test_cmp expected actual diff --git a/t/t6115-rev-list-du.sh b/t/t6115-rev-list-du.sh index 6a74be576a2..04c577dad69 100755 --- a/t/t6115-rev-list-du.sh +++ b/t/t6115-rev-list-du.sh @@ -4,12 +4,6 @@ test_description='basic tests of rev-list --disk-usage' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping rev-list disk usage tests; Perl not available' - test_done -fi - # we want a mix of reachable and unreachable, as well as # objects in the bitmapped pack and some outside of it test_expect_success 'set up repository' ' @@ -28,7 +22,7 @@ test_expect_success 'set up repository' ' disk_usage_slow () { git rev-list --no-object-names "$@" | git cat-file --batch-check="%(objectsize:disk)" | - perl -lne '$total += $_; END { print $total}' + awk '{ i += $1 } END { print i }' } # check behavior with given rev-list options; note that diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh index 49aae183829..9717e825f0d 100755 --- a/t/t7006-pager.sh +++ b/t/t7006-pager.sh @@ -661,10 +661,10 @@ test_expect_success 'setup trace2' ' export GIT_TRACE2_BRIEF ' -test_expect_success PERL_TEST_HELPERS 'setup large log output' ' - perl -e " - print \"this is a long commit message\" x 50000 - " >commit-msg && +test_expect_success 'setup large log output' ' + test-tool genzeros 50000 | + tr "\000" "a" | + sed "s/a/this is a long commit message/g" >commit-msg && git commit --allow-empty -F commit-msg ' diff --git a/t/t8002-blame.sh b/t/t8002-blame.sh index b40199df231..0b7548c8e75 100755 --- a/t/t8002-blame.sh +++ b/t/t8002-blame.sh @@ -107,7 +107,7 @@ test_expect_success 'set up abbrev tests' ' expect=$1 && shift && echo $sha1 | cut -c 1-$expect >expect && git blame "$@" abbrev.t >actual && - perl -lne "/[0-9a-f]+/ and print \$&" actual.sha && + sed -n "s/^[\^]\{0,1\}\([0-9a-f][0-9a-f]*\).*/\1/p" actual.sha && test_cmp expect actual.sha } ' diff --git a/t/t9850-shell.sh b/t/t9850-shell.sh index f619b60f226..21c3af48bd0 100755 --- a/t/t9850-shell.sh +++ b/t/t9850-shell.sh @@ -29,8 +29,8 @@ test_expect_success 'shell allows interactive command' ' test_cmp expect actual ' -test_expect_success PERL_TEST_HELPERS 'shell complains of overlong commands' ' - perl -e "print \"a\" x 2**12 for (0..2**19)" | +test_expect_success 'shell complains of overlong commands' ' + test-tool genzeros | tr "\000" "a" | test_must_fail git shell 2>err && grep "too long" err ' From patchwork Tue Mar 25 13:14:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029016 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BECC1267F7A for ; Tue, 25 Mar 2025 13:14:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908478; cv=none; b=CJWiogDqqRPBnAxXpeiyH0MairkRM1PPhW5WJQAWxwjGED1fjKTcpmkh7PWsLiTN+5iM2EtpzPTFylZvPem5YCmkonCnN2YNIpZnPzPHBSVZgIR0ThHH4GOspzSSDbbNjaUJ/BPe4uHwkce2NjhFrDTrQE6BbJmnvMXkkVjBg5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908478; c=relaxed/simple; bh=pWr3UcaWANc8naJen7QnchaDNFox7PBbI03NK6qmi2A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UunsBktGB4iQAAUjiGM9c4vNTxecHBsGz9FeCpG+kRwgLXCjzwvOIT15JPzW6GALgK8cXq82VZNTm+jygFJKJbHMEDm3qVeJNbsXsr4mhNS5a3novGTHyI2vy8dWj05oA17hUJyiZ6aBsMQ/bM5JzbZoLrvIIO+S11E+P/PMa2E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=euAgY9tt; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=hpYYslAV; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="euAgY9tt"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="hpYYslAV" Received: from phl-compute-10.internal (phl-compute-10.phl.internal [10.202.2.50]) by mailfout.phl.internal (Postfix) with ESMTP id EDD0213838C6; Tue, 25 Mar 2025 09:14:35 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-10.internal (MEProxy); Tue, 25 Mar 2025 09:14:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908475; x=1742994875; bh=wAM+E/mH1X/v6GuqkS1/CQ4VcAw05+8QixkS7TW35Cw=; b= euAgY9ttE0kyJuK46Fj0J/hdIDKd25wNGCSFif2+JB1D+raZQ0R+O1fUklezFJMX XGu7fm95IOOrVdm7u0jR2ErunOSFQdLL2yL7l4X8rar3RnIEZvTVLUykZef7JGhI Nq36L7wehIZdvnmPu+TJJaw2szAaLMVJaGdSmLR3qBSQXnzLy1y1wq9X5UzjCfV+ HlG9TQy/u6sB7ddLDOU7Clh9GE/qFsmnj+SD8PhN1OxlbvVFTimz43IiiuphP92s 8t2OOFVOTQ6Oyx5q2ofcJo7n2W1jmPUYBgYK6lxbAgNwVpCZf0iiwfHmbVYYQe/s gq2Q8eWPcwQm1S8lcuysFA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908475; x= 1742994875; bh=wAM+E/mH1X/v6GuqkS1/CQ4VcAw05+8QixkS7TW35Cw=; b=h pYYslAVougikrEp/BIXKVQoo3lmGq0OxY5v+EVYtubWGhBgfloVonlmERmwlo6/S oZUsQc8o4AgNaPDHUhZHXQhkUQDBqzz60YBlDvtrasKE99TWQDLMU+CkRaBki39m UQxpfNcZOigLiyGQb7VcWxjSZYQg7uGeGaPleYGp3tEPAT4swqcMAkIxwuWD0EgG Q+WDi9eZyzOhB7Nmj0Oo3tTenL8sebitEOtVUY96LdpnR4OTCtYPaiyhG/6O0T81 RAbXpcgwmPzu8J+MHItMVVHw+feQCFx59ea5ajp/TkCjUK/6QsyygSJPeyakTm5a QN3Wa+vTOtJR8D0xCp8OA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtkeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeefhfeugeelheefjeektdffhedvhfdvteefgfdt udffudevveetgeeuuedtkefhgeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrd gtohhmpdhrtghpthhtohepphhhihhllhhiphdrfihoohguuddvfeesghhmrghilhdrtgho mhdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtoh epshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprhgtphhtthhopehjohhh rghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvg X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:34 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id acb23c3b (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:34 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:31 +0100 Subject: [PATCH v2 13/20] t: refactor tests depending on Perl for textconv scripts Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-13-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 We have a couple of tests that depend on Perl for textconv scripts. Refactor these tests to instead be implemented via shell utilities so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Note that not all of the conversions are a one-to-one equivalent to the previous textconv scripts. But that's not really needed in the first place: we only care that the textconv script does something, and that can be verified trivially without having a full-blown invocation of hexdump. So at times, the implementation of the textconv scripts is reduced to their bare minimum and the expectations of those tests are adapted accordingly. Signed-off-by: Patrick Steinhardt --- t/t4030-diff-textconv.sh | 15 +++------------ t/t4031-diff-rewrite-binary.sh | 19 +++++++------------ t/t7815-grep-binary.sh | 15 +++------------ 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/t/t4030-diff-textconv.sh b/t/t4030-diff-textconv.sh index c7d8eb12453..f904fc19f69 100755 --- a/t/t4030-diff-textconv.sh +++ b/t/t4030-diff-textconv.sh @@ -4,12 +4,6 @@ test_description='diff.*.textconv tests' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping diff textconv tests; Perl not available' - test_done -fi - find_diff() { sed '1,/^index /d' | sed '/^-- $/,$d' } @@ -26,13 +20,10 @@ cat >expect.text <<'EOF' +1 EOF -cat >hexdump <<'EOF' -#!/bin/sh -"$PERL_PATH" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1" -EOF -chmod +x hexdump - test_expect_success 'setup binary file with history' ' + write_script hexdump <<-\EOF && + tr "\000\001" "01" <"$1" + EOF test_commit --printf one file "\\0\\n" && test_commit --printf --append two file "\\01\\n" ' diff --git a/t/t4031-diff-rewrite-binary.sh b/t/t4031-diff-rewrite-binary.sh index cbe50b15772..15e012ccc7c 100755 --- a/t/t4031-diff-rewrite-binary.sh +++ b/t/t4031-diff-rewrite-binary.sh @@ -57,24 +57,19 @@ test_expect_success 'diff --stat counts binary rewrite as 0 lines' ' grep " rewrite file" diff ' -{ - echo "#!$SHELL_PATH" - cat <<'EOF' -"$PERL_PATH" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1" -EOF -} >dump -chmod +x dump - test_expect_success 'setup textconv' ' + write_script dump <<-\EOF && + test-tool hexdump <"$1" + EOF echo file diff=foo >.gitattributes && git config diff.foo.textconv "\"$(pwd)\""/dump ' -test_expect_success PERL_TEST_HELPERS 'rewrite diff respects textconv' ' +test_expect_success 'rewrite diff respects textconv' ' git diff -B >diff && - grep "dissimilarity index" diff && - grep "^-61" diff && - grep "^-0" diff + test_grep "dissimilarity index" diff && + test_grep "^-3d 0a 00" diff && + test_grep "^+3d 0a 01" diff ' test_done diff --git a/t/t7815-grep-binary.sh b/t/t7815-grep-binary.sh index b2730d200c8..3bd91da9707 100755 --- a/t/t7815-grep-binary.sh +++ b/t/t7815-grep-binary.sh @@ -4,12 +4,6 @@ test_description='git grep in binary files' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping grep binary tests; Perl not available' - test_done -fi - test_expect_success 'setup' " echo 'binaryQfileQm[*]cQ*æQð' | q_to_nul >a && git add a && @@ -120,13 +114,10 @@ test_expect_success 'grep respects not-binary diff attribute' ' test_cmp expect actual ' -cat >nul_to_q_textconv <<'EOF' -#!/bin/sh -"$PERL_PATH" -pe 'y/\000/Q/' < "$1" -EOF -chmod +x nul_to_q_textconv - test_expect_success 'setup textconv filters' ' + write_script nul_to_q_textconv <<-\EOF && + tr "\000" "Q" <"$1" + EOF echo a diff=foo >.gitattributes && git config diff.foo.textconv "\"$(pwd)\""/nul_to_q_textconv ' From patchwork Tue Mar 25 13:14:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029018 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB4AD25F978 for ; Tue, 25 Mar 2025 13:14:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908479; cv=none; b=mH0UcwvogwPivzdRA30chZN7rhgrYb5dN1FRDRSSlgySNgk4zG/5PAA595NlDA08MBqXceb9NoyVF08wiFm/WRuhsZl9UZXtVE3mAOQQKqjEdgzShqjAwQnmW21xErVmTxXSLTZduo/FwO8R+M9N++0NTy/AfugG2UzmCpFAXAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908479; c=relaxed/simple; bh=OzPEXYJJSkCRVgvE9r/ZR014p4QQC/SiVAp5FNaVjm0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IE6tKBvUkjs9cKVW9azyvOtl+fFswrbJC9B86v89Ak87merBSYVCKnqfUMNT1P72McC9MZwJxr9l4Uss0jN+8cx+Qs+x7qQh5NLO9GLErCCg5xlGMbqUYu6LUCyEA0Qy+3NXVRQIqMSGbNexIlSgMxZeIbuCOWCr2NQwvljAVGc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=WFd8CYGx; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=pkpSHwoE; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="WFd8CYGx"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="pkpSHwoE" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfhigh.phl.internal (Postfix) with ESMTP id D68FB1140275; Tue, 25 Mar 2025 09:14:36 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908476; x=1742994876; bh=SK72nLGE48Io01PVlKAlFOEhxfBN6derLq8NspJR/K0=; b= WFd8CYGxhH6++5uAQuEG9SNaAUfwg1bAUNhOubzcTdv1e096RcJzy/zhKmC2I1am sSPW5pDrdHR0WnnziM041V2TSBrqQOFBP/IVRoZfyh2pQJq8GcTv7ZIX1YDj0fxo ZVcBf9iv+RcZnR+ds5SUVzK/TABwv/8owTojFWEjCPlkPRAKORGMQFt7flXHZMyw xcC+TpDYAr9aKu09TbZrLgIQ4tB4bcUOudK3XCQ9teKlnyxVT7k0v8KE7x6TA89K yIuZDHAqkICS9t3mn6NH+W21Dz/IbOZPO6ZRqR1GtiyBFZosfFlezwF6dLMpNCHm 2dla+FkONyhsquU1vrW+bQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908476; x= 1742994876; bh=SK72nLGE48Io01PVlKAlFOEhxfBN6derLq8NspJR/K0=; b=p kpSHwoE9bTPWTDR7FFuX+jzqxsIivTo4v7U5lF/nj/DaqOIgVZz7drhLsgi8/2j9 4MX1QvXs5GhXGU/0gBDUE99gK0DpQvU4DUvrkM5KsWphIuTyDsdgvpo6a1QWZofg YM2oVMvrW1wd+ufkTcCAqbn3QSgKcP/xQUANwFnO34oPgHxWeJy/kXKxComZZpp4 K3AlW/QfrC0JQrtl1uVG7Y95uY/M3bApDtNOg62wPaLWNdtXx7gl0ENU/dbEmzTo 0WSLRR4RZdC3OwS2zmVbgJZILUT6TJP1137pKTgvcTjlM8tLqo3vLyZj2OuJR3r/ QXkCZzufFFVpmRGIyJAvw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedvnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmh grihhlrdgtohhmpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdr tghomhdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpth htohepjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhmgidruggvpdhrtghpthht ohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:35 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 2600f114 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:35 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:32 +0100 Subject: [PATCH v2 14/20] t/lib-gpg: refactor `sanitize_pgp()` to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-14-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `sanitize_pgp()` test helper uses Perl to strip PGP signatures from stdin. Refactor it to instead use awk(1) so that we drop the PERL_TEST_HELPERS prerequisite in users of this library. Note that we have to add PERL_TEST_HELPERS to a subset of tests in t6300 now that the test suite doesn't bail out early anymore in case the prerequisite isn't set. Helped-by: Johannes Schindelin Signed-off-by: Patrick Steinhardt --- t/lib-gpg.sh | 6 +----- t/t6300-for-each-ref.sh | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh index 3845b6ac449..937b876bd05 100644 --- a/t/lib-gpg.sh +++ b/t/lib-gpg.sh @@ -192,9 +192,5 @@ test_lazy_prereq GPGSSH_VERIFYTIME ' ' sanitize_pgp() { - perl -ne ' - /^-----END PGP/ and $in_pgp = 0; - print unless $in_pgp; - /^-----BEGIN PGP/ and $in_pgp = 1; - ' + sed "/^-----BEGIN PGP/,/^-----END PGP/{/^-/p;d;}" } diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index 732a4d3171e..5db7038c417 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -10,12 +10,6 @@ GNUPGHOME_NOT_USED=$GNUPGHOME . "$TEST_DIRECTORY"/lib-gpg.sh . "$TEST_DIRECTORY"/lib-terminal.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping for-each-ref tests; Perl not available' - test_done -fi - # Mon Jul 3 23:18:43 2006 +0000 datestamp=1151968723 setdate_and_increment () { @@ -1215,7 +1209,7 @@ test_expect_success '%(raw) with --tcl must fail' ' test_must_fail git for-each-ref --format="%(raw)" --tcl ' -test_expect_success '%(raw) with --perl' ' +test_expect_success PERL_TEST_HELPERS '%(raw) with --perl' ' git for-each-ref --format="\$name= %(raw); print \"\$name\"" refs/myblobs/blob1 --perl | perl >actual && cmp blob1 actual && @@ -1442,9 +1436,14 @@ test_expect_success 'set up trailers for next test' ' ' test_trailer_option () { + if test "$#" -eq 3 + then + prereq="$1" + shift + fi && title=$1 option=$2 cat >expect - test_expect_success "$title" ' + test_expect_success $prereq "$title" ' git for-each-ref --format="%($option)" refs/heads/main >actual && test_cmp expect actual && git for-each-ref --format="%(contents:$option)" refs/heads/main >actual && @@ -1452,7 +1451,7 @@ test_trailer_option () { ' } -test_trailer_option '%(trailers:unfold) unfolds trailers' \ +test_trailer_option PERL_TEST_HELPERS '%(trailers:unfold) unfolds trailers' \ 'trailers:unfold' <<-EOF $(unfold X-Patchwork-Id: 14029019 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 723DC268C55 for ; Tue, 25 Mar 2025 13:14:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908481; cv=none; b=fJnaChlXr8WWAHXPDQLJxk6eiVX9K4KI1xLVhDkTElvqTjI6GEVlg3XaI7iDJDRcB3h39airwiWzigk8Z4Hs151IJTbpVIhXDXb7tgTw4QU14glNhCDy05kHBNubZ2prlGXvPA9W+OCi6J4Ckh8gPZSFNjySZrGM+jXVp8WxI5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908481; c=relaxed/simple; bh=1h48IVzmJCqnPonehXdDtVit1PATRGJbnIJeE7KqacA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B35BTO3Vwkn7CiP3YMCx7IySW4EgAYibY8oAxBrEG2+9TbqoU02c0vHCjNczYNIwa0D9RT6WtiuxCleE6BzuLmgvKklsmFfC9jqtp8wLpuwsMYVIw5iXTQOZymQQKx92vP0p/tdsKk8+wPOsH46FIkYd4iuZAf0w1GsVy1B7/2Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=f8s7HGTA; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=IOUj50A0; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="f8s7HGTA"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="IOUj50A0" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id 282BA1383844; Tue, 25 Mar 2025 09:14:38 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908478; x=1742994878; bh=d+Ztq+x3QjSGjj5OnmS0JLh7eUizho7Qq93aRVWexJ0=; b= f8s7HGTAIALOW0mBQpTYqq5EZY/mDX0nFAgVO32XpKLvKG/XwC02EsfpFHYiNrVc ujGNRGQS3WaaNdRVu+9OrUSoPQlqv/cXOuxr1exdMWy2HkJB0iIW75pcPg9As9zy Jo+E1sU/foUxwoqO2pcfnNiFvk+LaGrul3bTCa1x/3yJRVlCr40e3Osi6uLEKE77 a0b5CbxvndOuaRbT9aKMvZmhtzYnaT46KOKHVZuOupbNju5+eBk/kUIToVK/4Zgc sLQSBjHNn28n2zhtGPYJHM4dvw/9UI9cIWIpmHu08bi7EYUK9JCpoRbcl/nP7wKa kwNDakZD2lkLha9o1Xp13w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908478; x= 1742994878; bh=d+Ztq+x3QjSGjj5OnmS0JLh7eUizho7Qq93aRVWexJ0=; b=I OUj50A0qSXGKKj09+b2uYzNt4NC0z3yvNvRStaMbv++BvimnDhI5806yfMdc6139 2e4SY5CqJYzdMDbh86M6oDzouFvcsK25si9RTPoTwAbWcjqh7FmXZRvbq7DXmyUN 30fREaTy0ZnDOlFRXFZxPseu0h4Ayag6R5kAh8FxXITDMjiJeoTmRuXDBwIYC/f3 k7DURY4w7WY98Yv+2Z9bXCUhdb5fEUtdZmxne/cPzz8TNsaF/2PdZo1zkXG1sXKl +XY+jL2fpCo9SEm73X8XCShnJGzU/P2TBg7Z90mvTLaIRIwrPpacy/D3Z5o0C+Bj Gyz7DkKOuPHMTiyPcE7hg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpeehnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrd gtohhmpdhrtghpthhtohepjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhmgidr uggvpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprh gtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepphhh ihhllhhiphdrfihoohguuddvfeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:36 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 1ed2022c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:36 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:33 +0100 Subject: [PATCH v2 15/20] t/lib-t6000: refactor `name_from_description()` to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-15-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `name_from_description()` test helper uses Perl to munge a given description and convert it into a name. Refactor it to instead use a combination of sed(1) and tr(1) so that we drop PERL_TEST_HELPERS prerequisites in users of this library. Signed-off-by: Patrick Steinhardt --- t/lib-t6000.sh | 13 ++++++------- t/t6002-rev-list-bisect.sh | 6 ------ t/t6003-rev-list-topo-order.sh | 6 ------ 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/t/lib-t6000.sh b/t/lib-t6000.sh index fba6778ca35..35c54724650 100644 --- a/t/lib-t6000.sh +++ b/t/lib-t6000.sh @@ -109,13 +109,12 @@ check_output () { # All alphanums translated into -'s which are then compressed and stripped # from front and back. name_from_description () { - perl -pe ' - s/[^A-Za-z0-9.]/-/g; - s/-+/-/g; - s/-$//; - s/^-//; - y/A-Z/a-z/; - ' + sed \ + -e 's/[^A-Za-z0-9.]/-/g' \ + -e 's/--*/-/g' \ + -e 's/-$//' \ + -e 's/^-//' \ + -e 'y/A-Z/a-z/' } diff --git a/t/t6002-rev-list-bisect.sh b/t/t6002-rev-list-bisect.sh index 5e1482aff78..daa009c9a1b 100755 --- a/t/t6002-rev-list-bisect.sh +++ b/t/t6002-rev-list-bisect.sh @@ -7,12 +7,6 @@ test_description='Tests git rev-list --bisect functionality' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping rev-list bisect tests; Perl not available' - test_done -fi - # usage: test_bisection max-diff bisect-option head ^prune... # # e.g. test_bisection 1 --bisect l1 ^l0 diff --git a/t/t6003-rev-list-topo-order.sh b/t/t6003-rev-list-topo-order.sh index 02dd4127aff..0d7055d46d4 100755 --- a/t/t6003-rev-list-topo-order.sh +++ b/t/t6003-rev-list-topo-order.sh @@ -8,12 +8,6 @@ test_description='Tests git rev-list --topo-order functionality' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping rev-list topo-order tests; Perl not available' - test_done -fi - list_duplicates() { "$@" | sort | uniq -d From patchwork Tue Mar 25 13:14:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029020 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 550A9267F7A for ; Tue, 25 Mar 2025 13:14:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908482; cv=none; b=nb8KRbAK6VTe4zuufZJSrpM7Jq3C+HQXLRqQj4wwRLS6iparlhOoZUoHp+A53EigDsaMA+kcNWZy7fItcPIM14Czi7lx6jSsZB4LzbAL1yENoTq9IiLqpL5JaxXoYNP7NqwnZCRvw8hKh2ho4hYm77zyuiRpoc0Ol/YZwbk7gTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908482; c=relaxed/simple; bh=yZMa/B2KmNIylJyVX2fUoiFB3ucISyq0M7KGv2bt2Mw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iXClAGV8KEsOyoZYT2MjqS/L3UtpP8KbEdDE+6oYwugmN4zIN2PUXhPpCIIxjoop0CIV6taR00w/i4qGtEUNrer5r4d5Hfp1ch1NoMcLHmNk4XpIQviBcWEa72hyIwLG0swRTY1PNSfYNpk2qV+v3eS2cKQLjBTGZxkMEKSYbpQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=fuSQPIGx; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=OWkdamwr; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="fuSQPIGx"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="OWkdamwr" Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfout.phl.internal (Postfix) with ESMTP id 75213138383D; Tue, 25 Mar 2025 09:14:39 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Tue, 25 Mar 2025 09:14:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908479; x=1742994879; bh=iHkT+Zi82h/UiW+XMCSELcFcfloM3kFdFubSvuZ/N48=; b= fuSQPIGx++ReUXc3unm4Y4ukMNgTIMlHWSMCgyk/XrofmQUoWdgg0BDlz5r5Q6jF ZVMtAGHZFWXqnsRvqN6ciHx435XOWyfbuUI1Ty3riN1SD0uQUNWtMJAI3DqjD5MF iAMOxVXzVwGHDsKEtBF7CsQx1X46q2I0ex45E3+w9aTKg8JxneO3B56KtjpyhD7m gFvfXNdkEJSKObxDzpFDUZsOBPDXCoarg4c5++wlH03MIrpj2stLuv9nidU9+vV0 LjI1Glzaqqy/sCE+CA+xQqFlJxp8TDbv8449zyjX7RGkMGC3jrFLSQUn0QQQEYC6 34PJpmz5b1HRpxZTgifYbQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908479; x= 1742994879; bh=iHkT+Zi82h/UiW+XMCSELcFcfloM3kFdFubSvuZ/N48=; b=O WkdamwrF5GVxdYpGRSXEelS1pTgR1Wdzl+fAprp01zwLs43hfCGWAxLw8/tv8/bD C9+/Pt85nFjrDyhIhoxBtI4gEoQ4pLkPSjHgL8r0eCjGabkpcmJHtgxfgZ7uyFqM m9eUyig1VsBFFUuwm0ZwrnPvWTpJj46vPjXIqbYjwTfFogdNjK6LMMcYnfndCyrT gFCIy5sHoKvykYvcpP/7A313XkKC+HyHSum1ZU+3GSHJyuCBtXpG1mvHgWqKIaq8 IsXdmVNQXjJP+wxQFN/fB3OutQWd1cfkfAfWAAwloDdWPcMoNBnEdq99kb9bKren OsGHuRJEIQ7qB/58n5/Bw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeeigeeugfeuheefgefgteefiedvffehgfefheei heetfefgleeuteeihfelgefhfeenucffohhmrghinhephhhtthhpugdrshhhpdhhthhtph drshhhpdgrphhplhihqdhonhgvqdhtihhmvgdqphgvrhhlrdhshhdprghpphhlhidqohhn vgdqthhimhgvqdhstghrihhpthdrshhhpdhnphhhqdgtuhhsthhomhdqrghuthhhrdhshh dpuddvjedrtddrtddrudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohguvgepsh hmthhpohhuthdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtghordgt ohhmpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdprhgtph htthhopehjohhhrghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvgdprhgtphht thhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepphhhihhllh hiphdrfihoohguuddvfeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:38 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 40e5175c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:36 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:34 +0100 Subject: [PATCH v2 16/20] t/lib-httpd: refactor "one-time-perl" CGI script to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-16-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 Our Apache HTTPD setup exposes an "one_time_perl" endpoint to access repositories. If used, we execute the "apply-one-time-perl.sh" CGI script that checks whether we have a "one-time-perl" script. If so, that script gets executed so that it can munge what would be served. Once done, the script gets removed so that it doesn't execute a second time. As the name says, this functionality expects the user to pass a Perl script. This isn't really necessary though: we can just as easily implement the same thing with arbitrary scripts. Refactor the code so that we instead expect an arbitrary script to exist and rename the functionality to "one-time-script". Adapt callers to use shell utilities instead of Perl so that we can drop the PERL_TEST_HELPERS prerequisite. Signed-off-by: Patrick Steinhardt --- t/lib-httpd.sh | 2 +- t/lib-httpd/apache.conf | 6 ++--- t/lib-httpd/apply-one-time-perl.sh | 27 -------------------- t/lib-httpd/apply-one-time-script.sh | 26 +++++++++++++++++++ t/t5537-fetch-shallow.sh | 17 ++++++------- t/t5616-partial-clone.sh | 48 +++++++++++++++++++----------------- t/t5702-protocol-v2.sh | 27 +++++++++++--------- t/t5703-upload-pack-ref-in-want.sh | 10 +++++--- 8 files changed, 86 insertions(+), 77 deletions(-) diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh index d83bafeab32..5091db949b7 100644 --- a/t/lib-httpd.sh +++ b/t/lib-httpd.sh @@ -165,7 +165,7 @@ prepare_httpd() { install_script broken-smart-http.sh install_script error-smart-http.sh install_script error.sh - install_script apply-one-time-perl.sh + install_script apply-one-time-script.sh install_script nph-custom-auth.sh ln -s "$LIB_HTTPD_MODULE_PATH" "$HTTPD_ROOT_PATH/modules" diff --git a/t/lib-httpd/apache.conf b/t/lib-httpd/apache.conf index 022276a6b9a..e631ab0eb5e 100644 --- a/t/lib-httpd/apache.conf +++ b/t/lib-httpd/apache.conf @@ -135,7 +135,7 @@ SetEnv PERL_PATH ${PERL_PATH} SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH} SetEnv GIT_HTTP_EXPORT_ALL - + SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH} SetEnv GIT_HTTP_EXPORT_ALL @@ -159,7 +159,7 @@ ScriptAliasMatch /smart_*[^/]*/(.*) ${GIT_EXEC_PATH}/git-http-backend/$1 ScriptAlias /broken_smart/ broken-smart-http.sh/ ScriptAlias /error_smart/ error-smart-http.sh/ ScriptAlias /error/ error.sh/ -ScriptAliasMatch /one_time_perl/(.*) apply-one-time-perl.sh/$1 +ScriptAliasMatch /one_time_script/(.*) apply-one-time-script.sh/$1 ScriptAliasMatch /custom_auth/(.*) nph-custom-auth.sh/$1 Options FollowSymlinks @@ -182,7 +182,7 @@ ScriptAliasMatch /custom_auth/(.*) nph-custom-auth.sh/$1 Options ExecCGI - + Options ExecCGI diff --git a/t/lib-httpd/apply-one-time-perl.sh b/t/lib-httpd/apply-one-time-perl.sh deleted file mode 100644 index d7f9fed6aee..00000000000 --- a/t/lib-httpd/apply-one-time-perl.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# If "one-time-perl" exists in $HTTPD_ROOT_PATH, run perl on the HTTP response, -# using the contents of "one-time-perl" as the perl command to be run. If the -# response was modified as a result, delete "one-time-perl" so that subsequent -# HTTP responses are no longer modified. -# -# This can be used to simulate the effects of the repository changing in -# between HTTP request-response pairs. -if test -f one-time-perl -then - LC_ALL=C - export LC_ALL - - "$GIT_EXEC_PATH/git-http-backend" >out - "$PERL_PATH" -pe "$(cat one-time-perl)" out >out_modified - - if cmp -s out out_modified - then - cat out - else - cat out_modified - rm one-time-perl - fi -else - "$GIT_EXEC_PATH/git-http-backend" -fi diff --git a/t/lib-httpd/apply-one-time-script.sh b/t/lib-httpd/apply-one-time-script.sh new file mode 100644 index 00000000000..b1682944e28 --- /dev/null +++ b/t/lib-httpd/apply-one-time-script.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# If "one-time-script" exists in $HTTPD_ROOT_PATH, run the script on the HTTP +# response. If the response was modified as a result, delete "one-time-script" +# so that subsequent HTTP responses are no longer modified. +# +# This can be used to simulate the effects of the repository changing in +# between HTTP request-response pairs. +if test -f one-time-script +then + LC_ALL=C + export LC_ALL + + "$GIT_EXEC_PATH/git-http-backend" >out + ./one-time-script out >out_modified + + if cmp -s out out_modified + then + cat out + else + cat out_modified + rm one-time-script + fi +else + "$GIT_EXEC_PATH/git-http-backend" +fi diff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh index 77d20d19110..9dfcfb46df0 100755 --- a/t/t5537-fetch-shallow.sh +++ b/t/t5537-fetch-shallow.sh @@ -256,7 +256,7 @@ start_httpd REPO="$HTTPD_DOCUMENT_ROOT_PATH/repo" -test_expect_success PERL_TEST_HELPERS 'shallow fetches check connectivity before writing shallow file' ' +test_expect_success 'shallow fetches check connectivity before writing shallow file' ' rm -rf "$REPO" client && git init "$REPO" && @@ -271,22 +271,21 @@ test_expect_success PERL_TEST_HELPERS 'shallow fetches check connectivity before git -C "$REPO" config protocol.version 2 && git -C client config protocol.version 2 && - git -C client fetch --depth=2 "$HTTPD_URL/one_time_perl/repo" main:a_branch && + git -C client fetch --depth=2 "$HTTPD_URL/one_time_script/repo" main:a_branch && # Craft a situation in which the server sends back an unshallow request # with an empty packfile. This is done by refetching with a shorter # depth (to ensure that the packfile is empty), and overwriting the # shallow line in the response with the unshallow line we want. - printf "$(test_oid perl)" \ - "$(git -C "$REPO" rev-parse HEAD)" \ - "$(git -C "$REPO" rev-parse HEAD^)" \ - >"$HTTPD_ROOT_PATH/one-time-perl" && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF && + sed "$(printf "$(test_oid perl)" "$(git -C "$REPO" rev-parse HEAD)" "$(git -C "$REPO" rev-parse HEAD^)")" <"\$1" + EOF test_must_fail env GIT_TEST_SIDEBAND_ALL=0 git -C client \ - fetch --depth=1 "$HTTPD_URL/one_time_perl/repo" \ + fetch --depth=1 "$HTTPD_URL/one_time_script/repo" \ main:a_branch && - # Ensure that the one-time-perl script was used. - ! test -e "$HTTPD_ROOT_PATH/one-time-perl" && + # Ensure that the one-time-script script was used. + ! test -e "$HTTPD_ROOT_PATH/one-time-script" && # Ensure that the resulting repo is consistent, despite our failure to # fetch. diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh index bc7e0fec8dc..f878592a377 100755 --- a/t/t5616-partial-clone.sh +++ b/t/t5616-partial-clone.sh @@ -737,21 +737,25 @@ intersperse () { sed 's/\(..\)/'$1'\1/g' } -# Create a one-time-perl command to replace the existing packfile with $1. +# Create a one-time-script command to replace the existing packfile with $1. replace_packfile () { - # The protocol requires that the packfile be sent in sideband 1, hence - # the extra \x01 byte at the beginning. - cp $1 "$HTTPD_ROOT_PATH/one-time-pack" && - echo 'if (/packfile/) { - print; - my $length = -s "one-time-pack"; - printf "%04x\x01", $length + 5; - print `cat one-time-pack` . "0000"; - last - }' >"$HTTPD_ROOT_PATH/one-time-perl" + cp "$1" one-time-pack && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF + if grep packfile "\$1" >/dev/null + then + sed '/packfile/q' <"\$1" && + # The protocol requires that the packfile be sent in sideband + # 1, hence the extra \001 byte at the beginning. + printf "%04x\001" \$((\$(wc -c <"$PWD/one-time-pack") + 5)) && + cat "$PWD/one-time-pack" && + printf "0000" + else + cat "\$1" + fi + EOF } -test_expect_success PERL_TEST_HELPERS 'upon cloning, check that all refs point to objects' ' +test_expect_success 'upon cloning, check that all refs point to objects' ' SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server" && rm -rf "$SERVER" repo && test_create_repo "$SERVER" && @@ -776,15 +780,15 @@ test_expect_success PERL_TEST_HELPERS 'upon cloning, check that all refs point t # section header. test_config -C "$SERVER" protocol.version 2 && test_must_fail git -c protocol.version=2 clone \ - --filter=blob:none $HTTPD_URL/one_time_perl/server repo 2>err && + --filter=blob:none $HTTPD_URL/one_time_script/server repo 2>err && test_grep "did not send all necessary objects" err && - # Ensure that the one-time-perl script was used. - ! test -e "$HTTPD_ROOT_PATH/one-time-perl" + # Ensure that the one-time-script script was used. + ! test -e "$HTTPD_ROOT_PATH/one-time-script" ' -test_expect_success PERL_TEST_HELPERS 'when partial cloning, tolerate server not sending target of tag' ' +test_expect_success 'when partial cloning, tolerate server not sending target of tag' ' SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server" && rm -rf "$SERVER" repo && test_create_repo "$SERVER" && @@ -818,11 +822,11 @@ test_expect_success PERL_TEST_HELPERS 'when partial cloning, tolerate server not # Exercise to make sure it works. git -c protocol.version=2 clone \ - --filter=blob:none $HTTPD_URL/one_time_perl/server repo 2> err && + --filter=blob:none $HTTPD_URL/one_time_script/server repo 2> err && ! grep "missing object referenced by" err && - # Ensure that the one-time-perl script was used. - ! test -e "$HTTPD_ROOT_PATH/one-time-perl" + # Ensure that the one-time-script script was used. + ! test -e "$HTTPD_ROOT_PATH/one-time-script" ' test_expect_success PERL_TEST_HELPERS 'tolerate server sending REF_DELTA against missing promisor objects' ' @@ -845,7 +849,7 @@ test_expect_success PERL_TEST_HELPERS 'tolerate server sending REF_DELTA against # Clone. The client has deltabase_have but not deltabase_missing. git -c protocol.version=2 clone --no-checkout \ - --filter=blob:none $HTTPD_URL/one_time_perl/server repo && + --filter=blob:none $HTTPD_URL/one_time_script/server repo && git -C repo hash-object -w -- "$SERVER/have.txt" && # Sanity check to ensure that the client does not have @@ -899,8 +903,8 @@ test_expect_success PERL_TEST_HELPERS 'tolerate server sending REF_DELTA against grep "want $(cat deltabase_missing)" trace && ! grep "want $(cat deltabase_have)" trace && - # Ensure that the one-time-perl script was used. - ! test -e "$HTTPD_ROOT_PATH/one-time-perl" + # Ensure that the one-time-script script was used. + ! test -e "$HTTPD_ROOT_PATH/one-time-script" ' # DO NOT add non-httpd-specific tests here, because the last part of this diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh index ad5e772cd72..27434b1f07a 100755 --- a/t/t5702-protocol-v2.sh +++ b/t/t5702-protocol-v2.sh @@ -1120,7 +1120,7 @@ test_expect_success 'push with http:// and a config of v2 does not request v2' ' ! grep "git< version 2" log ' -test_expect_success PERL_TEST_HELPERS 'when server sends "ready", expect DELIM' ' +test_expect_success 'when server sends "ready", expect DELIM' ' rm -rf "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" http_child && git init "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" && @@ -1132,15 +1132,16 @@ test_expect_success PERL_TEST_HELPERS 'when server sends "ready", expect DELIM' # After "ready" in the acknowledgments section, pretend that a FLUSH # (0000) was sent instead of a DELIM (0001). - printf "\$ready = 1 if /ready/; \$ready && s/0001/0000/" \ - >"$HTTPD_ROOT_PATH/one-time-perl" && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && + sed "/ready/{n;s/0001/0000/;}" <"$1" + EOF test_must_fail git -C http_child -c protocol.version=2 \ - fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && + fetch "$HTTPD_URL/one_time_script/http_parent" 2> err && test_grep "expected packfile to be sent after .ready." err ' -test_expect_success PERL_TEST_HELPERS 'when server does not send "ready", expect FLUSH' ' +test_expect_success 'when server does not send "ready", expect FLUSH' ' rm -rf "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" http_child log && git init "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" && @@ -1157,12 +1158,13 @@ test_expect_success PERL_TEST_HELPERS 'when server does not send "ready", expect # After the acknowledgments section, pretend that a DELIM # (0001) was sent instead of a FLUSH (0000). - printf "\$ack = 1 if /acknowledgments/; \$ack && s/0000/0001/" \ - >"$HTTPD_ROOT_PATH/one-time-perl" && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && + sed "/acknowledgments/,//{s/0000/0001/;}" <"$1" + EOF test_must_fail env GIT_TRACE_PACKET="$(pwd)/log" git -C http_child \ -c protocol.version=2 \ - fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && + fetch "$HTTPD_URL/one_time_script/http_parent" 2> err && grep "fetch< .*acknowledgments" log && ! grep "fetch< .*ready" log && test_grep "expected no other sections to be sent after no .ready." err @@ -1446,14 +1448,15 @@ test_expect_success 'http:// --negotiate-only' ' grep "$COMMON" out ' -test_expect_success PERL_TEST_HELPERS 'http:// --negotiate-only without wait-for-done support' ' +test_expect_success 'http:// --negotiate-only without wait-for-done support' ' SERVER="server" && - URI="$HTTPD_URL/one_time_perl/server" && + URI="$HTTPD_URL/one_time_script/server" && setup_negotiate_only "$SERVER" "$URI" && - echo "s/ wait-for-done/ xxxx-xxx-xxxx/" \ - >"$HTTPD_ROOT_PATH/one-time-perl" && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && + sed "s/ wait-for-done/ xxxx-xxx-xxxx/" <"$1" + EOF test_must_fail git -c protocol.version=2 -C client fetch \ --no-tags \ diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh index f59d47aa6c6..ac7266126a0 100755 --- a/t/t5703-upload-pack-ref-in-want.sh +++ b/t/t5703-upload-pack-ref-in-want.sh @@ -468,7 +468,7 @@ test_expect_success 'setup repos for change-while-negotiating test' ' test_commit m3 && git tag -d m2 m3 ) && - git -C "$LOCAL_PRISTINE" remote set-url origin "http://127.0.0.1:$LIB_HTTPD_PORT/one_time_perl/repo" && + git -C "$LOCAL_PRISTINE" remote set-url origin "http://127.0.0.1:$LIB_HTTPD_PORT/one_time_script/repo" && git -C "$LOCAL_PRISTINE" config protocol.version 2 ' @@ -481,7 +481,9 @@ inconsistency () { # RPCs during a single negotiation. oid1=$(git -C "$REPO" rev-parse $1) && oid2=$(git -C "$REPO" rev-parse $2) && - echo "s/$oid1/$oid2/" >"$HTTPD_ROOT_PATH/one-time-perl" + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF + sed "s/$oid1/$oid2/" <"\$1" + EOF } test_expect_success 'server is initially ahead - no ref in want' ' @@ -533,7 +535,9 @@ test_expect_success 'server loses a ref - ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant true && rm -rf local && cp -r "$LOCAL_PRISTINE" local && - echo "s/main/rain/" >"$HTTPD_ROOT_PATH/one-time-perl" && + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && + sed "s/main/rain/" <"$1" + EOF test_must_fail git -C local fetch 2>err && test_grep "fatal: remote error: unknown ref refs/heads/rain" err From patchwork Tue Mar 25 13:14:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029022 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03BED268C7C for ; Tue, 25 Mar 2025 13:14:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908484; cv=none; b=V+LupOO8P+C7PWd8E2j4u7nK54+KpYlZq16fYhOhea4zgS5qaLK//67N3IcrvqxsrINW7DlPuN7HDS07yXqv0HgSrYbtk5xyQ28uKcDAXQkHcWOs5n62wll+zZkd6qP1NGqyHAPcAktgVTHD3g46Ukx36F2HCxM5dF5UQzn9BtQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908484; c=relaxed/simple; bh=x6zEzZpx+bxNQ0VKz0w/3WuCDnWSaMjafPKN/NUggOs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pLZ1MTKlWY2L4NlMdD1B6B6aVTMh/wD9WsWlBCqqXSArdlO47JUr9ZuAOEkvN/VdFmgK8eks5ZbXiaPxoybfBOBuuOMf+3+57u9um4xFIxFSg6pLr2X6nWhFVfOfUXv3JNhDN2xt3ziWLs1WYEoZMKrg1hsacdqdqL18yju1TGE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=KVp3S+YM; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=jtKM31NZ; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="KVp3S+YM"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="jtKM31NZ" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfout.phl.internal (Postfix) with ESMTP id C03D413838F0; Tue, 25 Mar 2025 09:14:40 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908480; x=1742994880; bh=RC+oEWj5k77m12uZbDBQ4gke2gQt2GP40yqO8tSB834=; b= KVp3S+YMum/WYMKpga5vhe7XauzDfWI6sZZaOOvky7mq0l54MVSvgI2iUKWJSm8s HpNowqJjXGYNd21fTFDgvbarMyCt67dQMkUF8EA3GINAGZ9wcOIMhC+cJXxefhak Mhak9YGLzrtgbvq9zlqEYEgdTljNQxR2d4xYny6cOIOIoit6qmYBgSVE+kmmDP9E tzM67fJ7llDjIphAk20KXHFLvQ+VdVj0BLqAYhAwMo27SOYsUPWN6HGLcKcW8PGj s1yCL4d/oY85wid9QW/UmfzLyihIA1ZCZ9bnroA1l/V+WouBL3Bys0RQR4Z1R4V8 UMmJOlFvjrkRipceWe8bfw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908480; x= 1742994880; bh=RC+oEWj5k77m12uZbDBQ4gke2gQt2GP40yqO8tSB834=; b=j tKM31NZgkNheuuUCM3X8gqAcFdR47TO5cwm4uW8NA0hW36NxOxvKUxQdS08qFxT1 F6v5GPgywFrZED7S3HMd6PP29sJsJOtLq3/FCjf4Un/QNwWr+wOnnUkUQ1Z+5QXB dg4iI+vi5M4AsU+MYmdG9kvemYF7RjUFsXtFIL1i/UJFlS4xhlKaymhU9k8Yd5nZ Nu2NlfabIP9gLCCUsCCievxX0nAy1y2N8p+PS995+9Mr5LC0pjzVwwRozO1/rhQ+ icAWu317Bq1dLMcOg+c2ooDgOcBKplw8Ln0HSLnXWKoTKQyT3qwRKsTKRU09ZXt3 rJYVrkqk6t2thMYp0isWA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpeehnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorh hgpdhrtghpthhtohepshhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomhdprhgt phhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpth htohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdprhgtphhtthhopehjohhh rghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvg X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:39 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id cbba0eb8 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:37 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:35 +0100 Subject: [PATCH v2 17/20] t0021: refactor `generate_random_characters()` to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-17-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `generate_random_characters()` helper function generates N random characters in the range 'a-z' and writes them into a file. The logic currently uses Perl, but it can be adapted rather easily by: - Making `test-tool genrandom` generate an infinite stream. - Using `tr -dc` to strip all characters which aren't in the range of 'a-z'. - Using `test_copy_bytes()` to copy the first N bytes. This allows us to drop the PERL_TEST_HELPERS prerequisite. Signed-off-by: Patrick Steinhardt --- t/t0021-conversion.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh index 4a892a91780..bf10d253ec4 100755 --- a/t/t0021-conversion.sh +++ b/t/t0021-conversion.sh @@ -20,8 +20,7 @@ EOF generate_random_characters () { LEN=$1 NAME=$2 - test-tool genrandom some-seed $LEN | - perl -pe "s/./chr((ord($&) % 26) + ord('a'))/sge" >"$TEST_ROOT/$NAME" + test-tool genrandom some-seed | tr -dc 'a-z' | test_copy_bytes "$LEN" >"$TEST_ROOT/$NAME" } filter_git () { @@ -619,7 +618,7 @@ test_expect_success 'required process filter should be used only for "clean" ope ) ' -test_expect_success PERL_TEST_HELPERS 'required process filter should process multiple packets' ' +test_expect_success 'required process filter should process multiple packets' ' test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" && test_config_global filter.protocol.required true && @@ -684,7 +683,7 @@ test_expect_success PERL_TEST_HELPERS 'required process filter should process mu ) ' -test_expect_success PERL_TEST_HELPERS 'required process filter with clean error should fail' ' +test_expect_success 'required process filter with clean error should fail' ' test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" && test_config_global filter.protocol.required true && rm -rf repo && From patchwork Tue Mar 25 13:14:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029021 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2510268C79 for ; Tue, 25 Mar 2025 13:14:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908484; cv=none; b=E88+mZEJkQ5V5hGwpE3rA8RNowPqlT7CS5PpYMU2STiIpaDuZfDJHb7MKkjLqR5PpLENtBJ3yiR3830Nd6ngSgZVMp22dHkh1QHOVzaE3CA5WgRIsmw1f5d8Pf8A5wF6j1ZsA8kxYNwAnPbnmkcvBCBw+V4xxbNG4rxytOPxaWk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908484; c=relaxed/simple; bh=hMHoOV37e0krItUaU8O9JexiNN8vAaEVAdxYIOii9PY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QG0/7ywNp/kbWvGNc0h1/fKpy4dSTBrEN0L/5RSF4u0yCJIeFDuTbxvJl4FyOsX1QKEdq+LR+ZS1jLfUEbk3Q34uSNfWTR0Db4C2GqM03JU9EvobzHd5U1PUPcCCkvp8A7tTztr+witL5OsGtSwUDfX7gDlDXPcyvRrXtrCfVxw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=DGNj3d9v; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=HBFUJESR; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="DGNj3d9v"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="HBFUJESR" Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfhigh.phl.internal (Postfix) with ESMTP id 0B24B1140272; Tue, 25 Mar 2025 09:14:42 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Tue, 25 Mar 2025 09:14:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908482; x=1742994882; bh=1Sfq4J/FE5u5N3Dkim9UAQS2zWTDPrPjW8DuJVNQQt8=; b= DGNj3d9vz3Ox6NlJ9aRLB8CDWYQE6E1i0o2dBiweLH6EW/raEOX8MRAF9bY3/JiP unqHJXVltFfgHMIOTn0O9OEGdtkqbFzf9XLLRjIHLtA8J4vSPVSQ6VpSRuLKeN0M VGoSyT3FLUWA9oyntRDbtaphEtS3wPSm4CNvZCZgkD/4zvqt+2xmUY50bN8D0So7 qJycWaxzX6g3DXWKZq9WLkrjGIMsZCSPkxg/+0FH+W+HoE3BIIcLdzQBlSN2I+hp mTpcj8qraqaV9lBvOe+yMs/KqRm0R4hkFMn/JdaCQfelNs17DvurEzhTDf2ReLty u4u+d9ntaCQyseomY38G/w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908482; x= 1742994882; bh=1Sfq4J/FE5u5N3Dkim9UAQS2zWTDPrPjW8DuJVNQQt8=; b=H BFUJESRJV7PAShRe67JUnS0cEZxR+5eBw9QTEj8l5PP2zfEPPs3HRRgBoWbtJRNC sCDBbtFKmVtdmgt9JjFiNCXXsIgdeFofpFZ04DpLOCFkPIgK0Bcc9LtvA7pnZxnr Wcq06WY+rtYFE+CRCUXw4Bl5hiLxEOc/87ZveETsFR4Bb3j1WHR3yCVAYgZ/cWGV 7EKQcTY10l5ep6pfnGeN8S9h8q5LfxvGYsfT21n6nOpOnYLsaRPtfd1+M6kxUr72 YJxZgKxDliOhdGMT7X0l24qX9ASqWL3S10+B2e/zn05rVwEjW3P7z9MybDT4hfRj Wk+SZRcwOe1Q5MLY4RBYg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedvnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehsuhhnshhhihhnvgesshhunhhshhhinhgvtg hordgtohhmpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomhdp rhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlihhnsehgmhigrdguvgdprh gtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepphhh ihhllhhiphdrfihoohguuddvfeesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:40 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 68f76844 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:38 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:36 +0100 Subject: [PATCH v2 18/20] t0210: refactor trace2 scrubbing to not use Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-18-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The output generated by our trace2 mechanism contains several fields that are dependent on the environment they're being run in, which makes it somewhat harder to test it. As a countermeasure we scrub the output and strip out any fields that contain such information. The logic to do so is implemented in Perl, but it can be trivially ported to instead use sed(1). Refactor the code accordingly so that we can drop the PERL_TEST_HELPERS prerequisite. Signed-off-by: Patrick Steinhardt --- t/t0210-trace2-normal.sh | 61 +++++++++++++++++++++++++++++++++-------------- t/t0210/scrub_normal.perl | 54 ----------------------------------------- 2 files changed, 43 insertions(+), 72 deletions(-) diff --git a/t/t0210-trace2-normal.sh b/t/t0210-trace2-normal.sh index ba4c0442b85..96c68f65df2 100755 --- a/t/t0210-trace2-normal.sh +++ b/t/t0210-trace2-normal.sh @@ -4,12 +4,6 @@ test_description='test trace2 facility (normal target)' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping trace2 tests; Perl not available' - test_done -fi - # Turn off any inherited trace2 settings for this test. sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT sane_unset GIT_TRACE2_BRIEF @@ -59,10 +53,41 @@ GIT_TRACE2_BRIEF=1 && export GIT_TRACE2_BRIEF # # Implicit return from cmd_ function propagates . +scrub_normal () { + # Scrub the variable fields from the normal trace2 output to make + # testing easier: + # + # 1. Various messages include an elapsed time in the middle of the + # message. Replace the time with a placeholder to simplify our + # HEREDOC in the test script. + # + # 2. We expect: + # + # start [ [ [...]]] + # + # where argv0 might be a relative or absolute path, with or + # without quotes, and platform dependent. Replace argv0 with a + # token for HEREDOC matching in the test script. + # + # 3. Likewise, the 'cmd_path' message breaks out argv[0]. + # + # This line is only emitted when RUNTIME_PREFIX is defined, + # so just omit it for testing purposes. + # + # 4. 'cmd_ancestry' is not implemented everywhere, so for portability's + # sake, skip it when parsing normal. + sed \ + -e 's/elapsed:[0-9]*\.[0-9][0-9]*\([eE][-+]\{0,1\}[0-9][0-9]*\)\{0,1\}/elapsed:_TIME_/g' \ + -e "s/^start '[^']*' \(.*\)/start _EXE_ \1/" \ + -e 's/^start [^ ][^ ]* \(.*\)/start _EXE_ \1/' \ + -e '/^cmd_path/d' \ + -e '/^cmd_ancestry/d' +} + test_expect_success 'normal stream, return code 0' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -76,7 +101,7 @@ test_expect_success 'normal stream, return code 0' ' test_expect_success 'normal stream, return code 1' ' test_when_finished "rm trace.normal actual expect" && test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 1 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 1 @@ -91,7 +116,7 @@ test_expect_success 'automatic filename' ' test_when_finished "rm -r traces actual expect" && mkdir traces && GIT_TRACE2="$(pwd)/traces" test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <"$(ls traces/*)" >actual && + scrub_normal <"$(ls traces/*)" >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -109,7 +134,7 @@ test_expect_success 'automatic filename' ' test_expect_success 'normal stream, exit code 0' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 002exit 0 @@ -123,7 +148,7 @@ test_expect_success 'normal stream, exit code 0' ' test_expect_success 'normal stream, exit code 1' ' test_when_finished "rm trace.normal actual expect" && test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 1 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 002exit 1 @@ -141,7 +166,7 @@ test_expect_success 'normal stream, exit code 1' ' test_expect_success 'normal stream, error event' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 003error '\''hello world'\'' '\''this is a test'\'' @@ -161,7 +186,7 @@ test_expect_success 'normal stream, error event' ' test_expect_success 'BUG messages are written to trace2' ' test_when_finished "rm trace.normal actual expect" && test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 007bug && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 007bug @@ -185,7 +210,7 @@ test_expect_success 'bug messages with BUG_if_bug() are written to trace2' ' sed "s/^.*: //" actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 008bug @@ -211,7 +236,7 @@ test_expect_success 'bug messages without explicit BUG_if_bug() are written to t sed "s/^.*: //" actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 009bug_BUG @@ -236,7 +261,7 @@ test_expect_success 'bug messages followed by BUG() are written to trace2' ' sed "s/^.*: //" actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 010bug_BUG @@ -268,7 +293,7 @@ test_expect_success 'using global config, normal stream, return code 0' ' test_config_global trace2.normalBrief 1 && test_config_global trace2.normalTarget "$(pwd)/trace.normal" && test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -286,7 +311,7 @@ test_expect_success 'using global config with include' ' mv "$(pwd)/.gitconfig" "$(pwd)/real.gitconfig" && test_config_global include.path "$(pwd)/real.gitconfig" && test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" actual && + scrub_normal actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 diff --git a/t/t0210/scrub_normal.perl b/t/t0210/scrub_normal.perl deleted file mode 100644 index 7cc4de392a0..00000000000 --- a/t/t0210/scrub_normal.perl +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/perl -# -# Scrub the variable fields from the normal trace2 output to -# make testing easier. - -use strict; -use warnings; - -my $float = '[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?'; - -# This code assumes that the trace2 data was written with bare -# turned on (which omits the " :" prefix. - -while (<>) { - # Various messages include an elapsed time in the middle - # of the message. Replace the time with a placeholder to - # simplify our HEREDOC in the test script. - s/elapsed:$float/elapsed:_TIME_/g; - - my $line = $_; - - # we expect: - # start [ [ [...]]] - # - # where argv0 might be a relative or absolute path, with - # or without quotes, and platform dependent. Replace argv0 - # with a token for HEREDOC matching in the test script. - - if ($line =~ m/^start/) { - $line =~ /^start\s+(.*)/; - my $argv = $1; - $argv =~ m/(\'[^\']*\'|[^ ]+)\s+(.*)/; - my $argv_0 = $1; - my $argv_rest = $2; - - print "start _EXE_ $argv_rest\n"; - } - elsif ($line =~ m/^cmd_path/) { - # Likewise, the 'cmd_path' message breaks out argv[0]. - # - # This line is only emitted when RUNTIME_PREFIX is defined, - # so just omit it for testing purposes. - # print "cmd_path _EXE_\n"; - } - elsif ($line =~ m/^cmd_ancestry/) { - # 'cmd_ancestry' is not implemented everywhere, so for portability's - # sake, skip it when parsing normal. - # - # print "$line"; - } - else { - print "$line"; - } -} From patchwork Tue Mar 25 13:14:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029023 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BA0125FA31 for ; Tue, 25 Mar 2025 13:14:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908485; cv=none; b=FNdNCs43y6GhLOM2yOoOWfWRQAsfmVDWhWQ38CywvZTK4n/v2brS/CcQfXEqlv+LyZ4zoHcLCdDN2fxqvkIYaeZbiKnenRckiCQei1vH6prwLomSLAsZAjZlYqb0uMTHv1SvHDAlCDMd6vkk6So0ZQn/Bmxn487wMZotYtWalns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908485; c=relaxed/simple; bh=VOGHVEB5DBeBsc1IOz0MKfPvuvyDiSI9QbAo+vfau2E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zb/7Ylt58F9QYAoB0GtrC5acpQ3tYqNVwi13lTK0/GdOgv+iach9DZWxJn/zisMN0L5ZwemUdOMdp+500syUWLf1VakH2qahfhRwxiStinZ2JirDS+EXI/pfpqu1cnYYXrnvhPztUTmF6Zhb2kvShQR4J+Y7JL1Grjbob6R86EI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=QrTBSW9A; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=TIRMV217; arc=none smtp.client-ip=103.168.172.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="QrTBSW9A"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="TIRMV217" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfhigh.phl.internal (Postfix) with ESMTP id 54DAD1140275; Tue, 25 Mar 2025 09:14:43 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Tue, 25 Mar 2025 09:14:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908483; x=1742994883; bh=0JV8nY16uI93FpC8oc8O/Ba/p4JfeYQlUD8rsognpdk=; b= QrTBSW9AkkESv0Rp4Xqojdtny+7EOi/yQAu8sGnT8pABPgMs5/w73UAbj/7cXSke Lku+FSgoQADRQCO+EJrIfF8cWtojZ43j7R/XINHr2h2EJjxTPx8VB9S9zb/RzbeY 8efyzsPtCdeSw6Y7Sk8q/LsJMH7RwqB4Ufrxx8XxMUhtjabi/kawXbVmW3SHy+Mv dK8vfAoz8RmFMltamXx/YMMoB8rVcxFSrywc6W/ceE9kuGxyD4zq5YsBLKo8NnAC Mk1ioJXsc8peYtfyojRP2VjgYpka8r3A1UP8owu98GjduiBH+TGRS4vwilFTFAG4 Iznw6B6DqBV47+JGmSaZcA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908483; x= 1742994883; bh=0JV8nY16uI93FpC8oc8O/Ba/p4JfeYQlUD8rsognpdk=; b=T IRMV2176vsguj6e+EfVsFHsewSw7f6R3FUCsJWwRAbZttKZ6viinqruwFdKJze6O 365fTH2Fr0f27vW1hV2y6vKh8+Al2tVNGgSf4m7w82Q0ZEfcoZwLFXhw9xnOQ0uT j94PjnOyGDBwYCronfwX81nsco+wJVpZ/Ri3ULkIFyz6LO6+xk0zsXEMWilXrkX4 y1NH4a/6+KDCqa6QT1JPcbo7Ztf10deGU9j/K2PSKQav/uDsinMK5kVKfgAFpp6t G3P4Z7fLvhR3V6iXEKjgveXmj10E5N+9mCq1xoRSfHzNXNgcR5qfr/tGuVoZQs4L 4aqcZY8PNMsnDeRorT3Xg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpeejnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehjohhhrghnnhgvshdrshgthhhinhguvghlih hnsehgmhigrdguvgdprhgtphhtthhopehphhhilhhlihhprdifohhougduvdefsehgmhgr ihhlrdgtohhmpdhrtghpthhtohepkhgrrhhthhhikhdrudekkeesghhmrghilhdrtghomh dprhgtphhtthhopehgihhtsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohep shhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:42 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id c05130c8 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:39 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:37 +0100 Subject: [PATCH v2 19/20] t5316: refactor `max_chain()` to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-19-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 The `max_chain()` helper function is used to extract the maximum delta chain of a packfile as printed by git-index-pack(1). The script uses Perl to extract that data, but it can be trivially refactored to use awk(1) instead. Refactor the helper accordingly so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Signed-off-by: Patrick Steinhardt --- t/t5316-pack-delta-depth.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/t/t5316-pack-delta-depth.sh b/t/t5316-pack-delta-depth.sh index cd947b5a5ef..defaa06d650 100755 --- a/t/t5316-pack-delta-depth.sh +++ b/t/t5316-pack-delta-depth.sh @@ -76,18 +76,18 @@ test_expect_success 'create series of packs' ' max_chain() { git index-pack --verify-stat-only "$1" >output && - perl -lne ' - BEGIN { $len = 0 } - /chain length = (\d+)/ and $len = $1; - END { print $len } - ' output + awk ' + BEGIN { len=0 } + /chain length = [0-9]+:/{ len=$4 } + END { print len } + ' expect && max_chain pack-$pack.pack >actual && test_cmp expect actual ' -test_expect_success PERL_TEST_HELPERS '--depth=0 disables deltas' ' +test_expect_success '--depth=0 disables deltas' ' pack=$(git pack-objects --all --depth=0 expect && max_chain pack-$pack.pack >actual && test_cmp expect actual ' -test_expect_success PERL_TEST_HELPERS 'negative depth disables deltas' ' +test_expect_success 'negative depth disables deltas' ' pack=$(git pack-objects --all --depth=-1 expect && max_chain pack-$pack.pack >actual && From patchwork Tue Mar 25 13:14:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 14029024 Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88296268FCF for ; Tue, 25 Mar 2025 13:14:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908487; cv=none; b=Kxk0YMeXlVxjsccS7opCyD2LI+L7fUBF1Y4ZfhfBaALYDjzd8nCfY3fPdsSMDrajBHimS3Sp2mAr/2NHliNmVGMza5wx15ceTihKRcN+bER2BDT4HL8v3BHbySFAv2GDdF+ALEeGfLNRjE6UGMHc8xhT3LEH5WlyKsaclSf9PQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742908487; c=relaxed/simple; bh=0vDLZtJoO0JWlSJGdB1334hkWHi1ZII88VJ3KTVuw4M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cys79bhbHM1/DDMHqc5jrZ8lr2hSOGEwjHFNMylH4W2OOBPhSXY8C09iqqON1bqpxUC+9tSmDNck9LzpLtBj6qH/LPx7jMTfDaXcfa09a4TXHuXUHaRW37xaEe3pWZt6lsgYr6VmtxOHhGtaBUGldSpyDTHbInlQhywmN9bEqhI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=VFvC7AIj; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=v6uJDqFk; arc=none smtp.client-ip=103.168.172.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="VFvC7AIj"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="v6uJDqFk" Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfout.phl.internal (Postfix) with ESMTP id AFF941383844; Tue, 25 Mar 2025 09:14:44 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-07.internal (MEProxy); Tue, 25 Mar 2025 09:14:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1742908484; x=1742994884; bh=8mNJ6Dr3p2I6SWEWYBP3GmUzLBsShSYpobEZZTH9ZWE=; b= VFvC7AIjXAB+4mZ1gaW8b4kazYPPSSlKKLjY3C5SeXiSasjICixIKC1MEzoPqYfq JfT1wiZACUrF8FIEN+zcdCQCS3KWqzE3NY+x3U58XTc99nfWRkQRhVCFD79pxPEE iT2HspE374HsQ7DLjOqEkILuMRr/WvoeeADAztZCoQ8W6HdTl/KVMAntSjtIbh2A bVg5amR/s6edT5nOB6EZWFRXvqI/CMBZ02tKnUyD8RbDy/lCqMbaimMNkWwE51tW KrDt5fIzdHzLY+Fi5AVokWBGaHzOJzfdQVQ+C3xJy17wtSxRA/ZrUi+2Im71IGEL j8HGnzBtWNIitCKl+TgPOg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1742908484; x= 1742994884; bh=8mNJ6Dr3p2I6SWEWYBP3GmUzLBsShSYpobEZZTH9ZWE=; b=v 6uJDqFkVrOmYEF6+KdcdmrsachKwNbIK+6pUbHiMzesELy2My3rTO15EjDSuu/Uu 509IWEX67MEMq4GxVhIkRuqnBmf9XX9Da+t4dV+j9eHOW5BwZ980GUeLUZHcuYzn KHIlsqlhgYvGU1+IGjqdknbimVjHv6e5h9dEvMWSUqWmH1QxcwUsmuUZZ3YEw/FH caZ67+c5ZnfUAC3QP6TYxgwstKo++57J2YEfPPfn++2NOQ+MK+CC42/9DaOU6i0f z0M1ZNgKYLFwNBvM+wcr5L3Ase0CtCWZInHpl1jNA1WiNlV6WWwL92eW+32hNbsn n+dDVzVWga5UzCOZvCNNQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvjeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertder tdejnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshesphhksh drihhmqeenucggtffrrghtthgvrhhnpeffueeiudejvdekheeuvdekfeffiedvueelteek udehjeetkeegvddugfdtgfeileenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpehpshesphhkshdrihhmpdhnsggprhgtphhtthhopeehpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopehkrghrthhhihhkrddukeeksehgmhgrihhlrd gtohhmpdhrtghpthhtohepghhithesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphht thhopehphhhilhhlihhprdifohhougduvdefsehgmhgrihhlrdgtohhmpdhrtghpthhtoh epjhhohhgrnhhnvghsrdhstghhihhnuggvlhhinhesghhmgidruggvpdhrtghpthhtohep shhunhhshhhinhgvsehsuhhnshhhihhnvggtohdrtghomh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 25 Mar 2025 09:14:43 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 671ede3b (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 25 Mar 2025 13:14:40 +0000 (UTC) From: Patrick Steinhardt Date: Tue, 25 Mar 2025 14:14:38 +0100 Subject: [PATCH v2 20/20] t5703: refactor test to not depend on Perl Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250325-b4-pks-t-perlless-v2-20-4b87b8072670@pks.im> References: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> In-Reply-To: <20250325-b4-pks-t-perlless-v2-0-4b87b8072670@pks.im> To: git@vger.kernel.org Cc: Johannes Schindelin , Eric Sunshine , Karthik Nayak , Phillip Wood X-Mailer: b4 0.14.2 We use Perl due to two different reasons in t5703: - To filter advertised capabilities. - To set up a CGI script with HTTPD. Refactor the first category to use `test_grep` instead. Refactoring the second category would be a bit more involved, so instead we add the PERL_TEST_HELPERS prerequisite to those individual tests now. Signed-off-by: Patrick Steinhardt --- t/t5703-upload-pack-ref-in-want.sh | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh index ac7266126a0..1ab3191d72d 100755 --- a/t/t5703-upload-pack-ref-in-want.sh +++ b/t/t5703-upload-pack-ref-in-want.sh @@ -4,12 +4,6 @@ test_description='upload-pack ref-in-want' . ./test-lib.sh -if ! test_have_prereq PERL_TEST_HELPERS -then - skip_all='skipping upload-pack ref-in-want tests; Perl not available' - test_done -fi - get_actual_refs () { sed -n -e '/wanted-refs/,/0001/{ /wanted-refs/d @@ -89,18 +83,15 @@ test_expect_success 'setup repository' ' test_expect_success 'config controls ref-in-want advertisement' ' test-tool serve-v2 --advertise-capabilities >out && - perl -ne "/ref-in-want/ and print" out >out.filter && - test_must_be_empty out.filter && + test_grep ! "ref-in-want" out && git config uploadpack.allowRefInWant false && test-tool serve-v2 --advertise-capabilities >out && - perl -ne "/ref-in-want/ and print" out >out.filter && - test_must_be_empty out.filter && + test_grep ! "ref-in-want" out && git config uploadpack.allowRefInWant true && test-tool serve-v2 --advertise-capabilities >out && - perl -ne "/ref-in-want/ and print" out >out.filter && - test_file_not_empty out.filter + test_grep "ref-in-want" out ' test_expect_success 'invalid want-ref line' ' @@ -486,7 +477,7 @@ inconsistency () { EOF } -test_expect_success 'server is initially ahead - no ref in want' ' +test_expect_success PERL_TEST_HELPERS 'server is initially ahead - no ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant false && rm -rf local && cp -r "$LOCAL_PRISTINE" local && @@ -495,7 +486,7 @@ test_expect_success 'server is initially ahead - no ref in want' ' test_grep "fatal: remote error: upload-pack: not our ref" err ' -test_expect_success 'server is initially ahead - ref in want' ' +test_expect_success PERL_TEST_HELPERS 'server is initially ahead - ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant true && rm -rf local && cp -r "$LOCAL_PRISTINE" local && @@ -507,7 +498,7 @@ test_expect_success 'server is initially ahead - ref in want' ' test_cmp expected actual ' -test_expect_success 'server is initially behind - no ref in want' ' +test_expect_success PERL_TEST_HELPERS 'server is initially behind - no ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant false && rm -rf local && cp -r "$LOCAL_PRISTINE" local && @@ -519,7 +510,7 @@ test_expect_success 'server is initially behind - no ref in want' ' test_cmp expected actual ' -test_expect_success 'server is initially behind - ref in want' ' +test_expect_success PERL_TEST_HELPERS 'server is initially behind - ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant true && rm -rf local && cp -r "$LOCAL_PRISTINE" local && @@ -531,7 +522,7 @@ test_expect_success 'server is initially behind - ref in want' ' test_cmp expected actual ' -test_expect_success 'server loses a ref - ref in want' ' +test_expect_success PERL_TEST_HELPERS 'server loses a ref - ref in want' ' git -C "$REPO" config uploadpack.allowRefInWant true && rm -rf local && cp -r "$LOCAL_PRISTINE" local &&