All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacob Keller <jacob.keller@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Taylor Blau <me@ttaylorr.com>,
	Jacob Keller <jacob.e.keller@intel.com>
Subject: [PATCH v2 3/5] tests: only automatically unset matching values from test_config
Date: Thu, 16 Jun 2022 13:54:54 -0700	[thread overview]
Message-ID: <20220616205456.19081-4-jacob.e.keller@intel.com> (raw)
In-Reply-To: <20220616205456.19081-1-jacob.e.keller@intel.com>

The test_config function is used to set a configuration value and then
ensure that its unset at the end of the test using test_unconfig. This
currently unsets all configurations with the specified name regardless
of whether they match a value.

The git config command can optionally only unset keys which have
specific values. Add support for this by using the 2 argument form, and
add handling for the --fixed-value option.

Pass --fixed-value and both the key and value to the test_unconfig call
from test_config. This ensures that test_config will only setup a
trigger to remove the matching values instead of removing all
configurations of the specified key.

Directly using test_unconfig will still unset all values by default,
unless a 2nd value-pattern parameter is provided. This matches the
behavior of git config and allows some control over the behavior.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
 t/test-lib-functions.sh | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 2e160aa61233..0057b42988a4 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -506,15 +506,18 @@ test_modebits () {
 			  -e 's|^\(......\)S|\1-|' -e 's|^\(......\)s|\1x|'
 }
 
-# Usage: test_unconfig [options] <name>
+# Usage: test_unconfig [options] <name> <value-pattern>
 #   -C <dir>:
 #	Run all git commits in directory <dir>
 #   --global:
 #	Modify the global configuration instead of repository.
+#   --fixed-value:
+#	Match the value pattern as a fixed string instead of a regex.
 #
 # Unset a configuration variable, but don't fail if it doesn't exist.
 test_unconfig () {
 	global=
+	fixedvalue=
 	config_dir=
 	while test $# != 0
 	do
@@ -526,6 +529,9 @@ test_unconfig () {
 		--global)
 			global=yes
 			;;
+		--fixed-value)
+			fixedvalue=yes
+			;;
 		-*)
 			BUG "invalid test_unconfig option: $1"
 			;;
@@ -535,7 +541,12 @@ test_unconfig () {
 		esac
 		shift
 	done
-	git ${config_dir:+-C "$config_dir"} config ${global:+--global} --unset-all "$1"
+	# Only enable --fixed-value if we have two parameters
+	if test $# < 2
+	then
+		fixedvalue=
+	fi
+	git ${config_dir:+-C "$config_dir"} config ${global:+--global} ${fixedvalue:+--fixed-value} --unset-all "$1" "$2"
 	config_status=$?
 	case "$config_status" in
 	5) # ok, nothing to unset
@@ -575,7 +586,7 @@ test_config () {
 		esac
 		shift
 	done
-	test_when_finished "test_unconfig ${config_dir:+-C '$config_dir'} ${global:+--global} '$1'" &&
+	test_when_finished "test_unconfig ${config_dir:+-C '$config_dir'} --fixed-value ${global:+--global} '$1' '$2'" &&
 	git ${config_dir:+-C "$config_dir"} config ${global:+--global} "$1" "$2"
 }
 
-- 
2.36.1


  parent reply	other threads:[~2022-06-16 20:55 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-16 20:54 [PATCH v2 0/5] support negative refspecs in git remote show Jacob Keller
2022-06-16 20:54 ` [PATCH v2 1/5] t5505: remove sub shell use in favor of git -C Jacob Keller
2022-06-16 21:09   ` Junio C Hamano
2022-06-16 21:10     ` Jacob Keller
2022-06-16 20:54 ` [PATCH v2 2/5] tests: handle --global directly in test_config/test_unconfig Jacob Keller
2022-06-16 21:34   ` Junio C Hamano
2022-06-16 22:08     ` Jacob Keller
2022-06-16 20:54 ` Jacob Keller [this message]
2022-06-16 21:18   ` [PATCH v2 3/5] tests: only automatically unset matching values from test_config Junio C Hamano
2022-06-16 22:07     ` Jacob Keller
2022-06-16 20:54 ` [PATCH v2 4/5] t5505: use test_config where appropriate Jacob Keller
2022-06-16 20:54 ` [PATCH v2 5/5] remote: handle negative refspecs in git remote show Jacob Keller
2022-06-16 21:31 ` [PATCH v2 0/5] support " Junio C Hamano
2022-06-16 22:08   ` Jacob Keller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220616205456.19081-4-jacob.e.keller@intel.com \
    --to=jacob.keller@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jacob.e.keller@intel.com \
    --cc=me@ttaylorr.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.