Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > +test_NULL_in_multi () { > + local op="$1" && > + local file="$2" && > + > + test_expect_success "$op: NULL value in config${file:+ in $file}" ' > + config="$file" && > + if test -z "$config" > + then > + config=.git/config && > + test_when_finished "mv $config.old $config" && > + mv "$config" "$config".old > + fi && > + > + cat >"$config" <<-\EOF && > + [a]key=x > + [a]key > + [a]key=y > + EOF > + case "$op" in > + *_multi) > + cat >expect <<-\EOF > + x > + (NULL) > + y > + EOF > + ;; > + *) > + cat >expect <<-\EOF > + y > + EOF > + ;; > + esac && > + test-tool config "$op" a.key $file >actual && > + test_cmp expect actual > + ' > +} > + > +test_NULL_in_multi "get_value_multi" > +test_NULL_in_multi "configset_get_value" "my.config" > +test_NULL_in_multi "configset_get_value_multi" "my.config" I frankly preferred v3's tests over this version. v3 is slightly verbose, but at least the lack of logic made it easy to read and understand. I'd be okay with it if we get a big DRY-ness benefit, but 2 conditionals for 3 cases seems quite un-DRY to me.