From: Ævar Arnfjörð Bjarmason Date: Fri, 13 Nov 2020 13:04:40 GMT Subject: Re: [PATCH 2/2] config: allow specifying config entries via envvar pairs Message-ID: <87mtzlflw7.fsf@evledraar.gmail.com> In-Reply-To: <44e8dd50c6ea7cbcc5e4fc35c9b9057c0a52038c.1605269465.git.ps@pks.im> On Fri, Nov 13 2020, Patrick Steinhardt wrote: > While not document, it is currently possible to specify config entries "While not documented..." > + strbuf_addf(&envvar, "GIT_CONFIG_KEY_%d", i); > + if ((key = getenv(envvar.buf)) == NULL) > + break; The convention in git.git is to avoid explicit NULL checks. So maybe something like this, which also avoids the assignment inside an "if" key = getenv(envvar.buf); if (!key) break; > +test_expect_success 'git config handles environment config pairs' ' > + GIT_CONFIG_KEY_1="pair.one" GIT_CONFIG_VALUE_1="foo" \ > + GIT_CONFIG_KEY_2="pair.two" GIT_CONFIG_VALUE_2="bar" \ > + GIT_CONFIG_KEY_4="pair.four" GIT_CONFIG_VALUE_4="not-parsed" \ > + git config --get-regexp "pair.*" >actual && > + cat >expect <<-EOF && > + pair.one foo > + pair.two bar > + EOF > + test_cmp expect actual > +' > + > +test_expect_success 'git config copes with missing config pair value' ' > + GIT_CONFIG_KEY_1="pair.one" git config --get-regexp "pair.*" >actual && > + echo pair.one >expect && > + test_cmp expect actual > +' > + > +test_expect_success 'git config fails with invalid config pair key' ' > + test_must_fail env GIT_CONFIG_KEY_1= git config --list && > + test_must_fail env GIT_CONFIG_KEY_1=missing-section git config --list > +' > + > test_expect_success 'git config --edit works' ' > git config -f tmp test.value no && > echo test.value=yes >expect && I think we should have a bit more complete tests of what happens if you clobber existing config keys, and testing that this is set last after system/global/local config.