test-lib: add helper functions for config

There are a few common tasks when working with configuration variables in tests; this patch aims to make them a little easier to write and less error-prone. When setting a variable, you should typically make sure to clean it up after the test is finished, so as not to pollute other tests. Like: test_when_finished 'git config --unset foo.bar' && git config foo.bar baz This patch lets you just write: test_config foo.bar baz When clearing a variable that does not exist, git-config will report a specific non-zero error code. Meaning that tests which call "git config --unset" often either rely on the prior tests having actually set it, or must use test_might_fail. With this patch, the previous: test_might_fail git config --unset foo.bar becomes: test_unconfig foo.bar Not only is this easier to type, but it is more robust; it will correctly detect errors from git-config besides "key was not set". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 17, 2011 at 22:01 UTC d960c47a881c613a71b1b7c8aab3a06fd91ca70a
1 file changed +18
t/test-lib.sh
+18
@@ -357,6 +357,24 @@ test_chmod () {
357 git update-index --add "--chmod=$@"
358 }
359
360 +# Unset a configuration variable, but don't fail if it doesn't exist.
361 +test_unconfig () {
362 + git config --unset-all "$@"
363 + config_status=$?
364 + case "$config_status" in
365 + 5) # ok, nothing to unset
366 + config_status=0
367 + ;;
368 + esac
369 + return $config_status
370 +}
371 +
372 +# Set git config, automatically unsetting it after the test is over.
373 +test_config () {
374 + test_when_finished "test_unconfig '$1'" &&
375 + git config "$@"
376 +}
377 +
378 # Use test_set_prereq to tell that a particular prerequisite is available.
379 # The prerequisite can later be checked for in two ways:
380 #