Re: [PATCH 1/3] test-lib: Add support for multiple test prerequisites

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Aug 8, 2010 at 01:57, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote:
> Ævar Arnfjörð Bjarmason wrote:
>
>> Change the test_have_prereq function in test-lib.sh to support a
>> comma-separated list of prerequisites. This is useful for tests that
>> need e.g. both POSIXPERM and SANITY.
>>
>> The implementation was stolen from Junio C Hamano and Johannes Sixt,
>> the tests and documentation were not.
>
> I think you can sell it better. :)

As Johannes points out the patch is different enough that I changed
the authorship. Actually I wouldn't modify any patch under someone
else's name without getting them to sign off on it.

>> +++ b/t/t0000-basic.sh
>> @@ -73,6 +73,23 @@ then
>>       exit 1
>>  fi
>>
>> +test_set_prereq HAVETHIS
>> +haveit=no
>> +test_expect_success HAVETHIS,HAVEIT 'test runs if prerequisites are satisfied' '
>> +    test_have_prereq HAVEIT &&
>> +    test_have_prereq HAVETHIS &&
>
> I think the similar code above was just a way to sneak in a sanity
> check for test_have_prereq().  I’d leave it out.

It's a sanity test. If that wasn't there the test might succeed
e.g. if the implementation was broken and only did a OR on the comma
delimited list, not a AND.

>> +    haveit=yes
>> +'
>> +donthaveit=yes
>> +test_expect_success HAVEIT,DONTHAVEIT 'unmet prerequisites causes test to be skipped' '
>> +    donthaveit=no
>> +'
>> +if test $haveit$donthaveit != yesyes
>> +then
>> +     say "bug in test framework: multiple prerequisite tags do not work reliably"
>> +     exit 1
>> +fi
>
> Maybe it would be simpler to squash this in with the other similar checks.

I think that's too much complexity for one test, especially in the
sanity file. I didn't squash it with the existing "yesyes" test
because we're testing basic functionality first (one prereq) then the
fancy stuff (multiple).

>> +++ b/t/test-lib.sh
>> @@ -327,12 +327,20 @@ test_set_prereq () {
>>  satisfied=" "
>>
>>  test_have_prereq () {
>> -     case $satisfied in
>> -     *" $1 "*)
>> -             : yes, have it ;;
>> -     *)
>> -             ! : nope ;;
>> -     esac
>> +     # prerequisites can be concatenated with ','
>> +     save_IFS=$IFS
>> +     IFS=,
>> +     set -- $*
>> +     IFS=$save_IFS
>> +     for prerequisite
>> +     do
>> +             case $satisfied in
>> +             *" $prerequisite "*)
>> +                     : yes, have it ;;
>> +             *)
>> +                     ! : nope ;;
>> +             esac
>> +     done
>
> Does that work?

It passes all the tests :)

> Except as noted above,
> Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
>
> Thanks.

Likewise.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]