Re: [PATCH 2/5] config tests: test for --bool-or-str
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Apr 8, 2021, 23:11 UTC
- Message-ID
- <878s5sid6x.fsf@evledraar.gmail.com>
- In-Reply-To
- <xmqqim4wtz5k.fsf@gitster.g>
On Thu, Apr 08 2021, Junio C Hamano wrote:
Show 50 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > >> Add the missing tests for the --bool-or-str code added in >> dbd8c09bfe (mergetool: allow auto-merge for meld to follow the >> vim-diff behavior, 2020-05-07). >> >> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> >> --- >> t/t1300-config.sh | 72 +++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 72 insertions(+) >> >> diff --git a/t/t1300-config.sh b/t/t1300-config.sh >> index e0dd5d65ce..a002ec5644 100755 >> --- a/t/t1300-config.sh >> +++ b/t/t1300-config.sh >> @@ -802,6 +802,78 @@ test_expect_success 'get --bool-or-int' ' >> test_cmp expect actual >> ' >> >> +test_expect_success 'get --bool-or-str' ' >> + cat >.git/config <<-\EOF && >> + [bool] >> + true1 >> + true2 = true >> + true3 = TRUE >> + true4 = yes >> + true5 = YES >> + true6 = on >> + true7 = ON >> + false1 = >> + false2 = false >> + false3 = FALSE >> + false4 = no >> + false5 = NO >> + false6 = off >> + false7 = OFF >> + [int] >> + int1 = 0 >> + int2 = 1 >> + int3 = -1 >> + [string] >> + string1 = hello >> + string2 = there you >> + EOF > > That's fairly complete set (but misses common permutations like > "Yes"). I am not sure, if we try "true" and "TRUE", if it is worth > to check yes/YES and others, but at the same time, I do not know if > reducing the permutations tested would improve the readability, > runtime and/or maintainability of the test.
Sure, I was trying to do just enough to cover strcasecmp(). I don't think we need to do black-box testing here.
Show 46 quoted lines
>> + cat >expect <<-\EOF &&
>> + true
>> + true
>> + true
>> + true
>> + true
>> + true
>> + true
>> + false
>> + false
>> + false
>> + false
>> + false
>> + false
>> + false
>> + false
>> + false
>> + true
>> + true
>> + hello
>> + there you
>> + EOF
>
> The "right answer" is hard to read and maintain. Can we immediately
> spot what happened to int.int3 in this output, for example?
>
> Perhaps with something like
>
> inspect_config () {
> name=$1
> shift
> printf "%s %s\n" $(git config "$@" "$name") "$name"
> }
>
> we can make these lines to say
>
> int.int1 false
> int.int2 true
> int.int3 true
> string.string1 hello
> string.string2 there you
>
> to make them easier to follow? Without such a hint, I would expect
> that a failure output from test_cmp at the end would be very hard to
> grok, especially with so many permutations tested that produces runs
> of "true" and "false".It's a general established pattern in t1300-config.sh used by several other existing tests, e.g. the one for bool, path etc. I'd rather not get into a general refactoring of that file.
Show 7 quoted lines
>> + {
>> + git config --type=bool-or-str bool.true1 &&
>> + git config --bool-or-str bool.true2 &&
>
> This is a bit curious. We do not do full permutation between
> --type=bool-or-str and --bool-or-str here. We just check both
> would work only once. Feels a bit inconsistent.Yeah, I was just trying to stick a --type=X v.s. --X test somewhere. I can add it to another test_expect_success or something.
Show 15 quoted lines
> My gut-feeling vote is to just try true/TRUE for case insensitivity > and try all the other variants in lowercase, but I can go with the > full permutation if you strongly prefer it. > >> ... >> + git config --bool-or-str int.int1 && >> + git config --bool-or-str int.int2 && >> + git config --bool-or-str int.int3 && >> + git config --bool-or-str string.string1 && >> + git config --bool-or-str string.string2 >> + } >actual && >> + test_cmp expect actual >> +' > > Thanks.