On 23 January 2018 at 09:56, Alceu Rodrigues de Freitas Junior via
cpan-testers-discuss <cpan-testers-discuss@perl.org> wrote:
>>> 6. Not every CPAN contributor writes tests that allow execution of
>>>     tests in parallel, or even to run in parallel with another perl
>>>     executing the same tests at the same time.
>>
>>
>> This would be an interesting thing to have, but I always thought that
>> the specification should go into the distribution's META.* files (wasn't
>> there already a proposal?). And CPAN.pm may inject changes into the META
>> information via distroprefs files (at least this is possible for
>> dependency information).
>
>
> I agree with that. A default value of "disabling" parallel tests should be
> assumed if there is no information stating the contrary.

I take the opposite view, that testers should be encouraged to run
tests in parallel by default, and report issues they find, knowing
that this can expose false-negatives: The grounds? Sometimes this
exposes some sort of design issue in the runtime code as well, where
the runtime code accidentally prohibits 2 processes co-existing or
causes anomalous random bugs when they do.

I also partly object to data about this being stored in META.* ,
because that file is already grossly overloaded with concerns that
aren't part of the critical install purposes of that file. ( Although
this usage is decidedly more relevant than half the crap that lives in
those files and randomly breaks things with Unicode nonsense )

For people who have tests that by design oppose parallel testing, they
should be encouraged to provide a rules file as follows:
https://metacpan.org/pod/TAP::Parser::Scheduler#Rules-data-structure

in a file called "t/testrules.yml" as per
https://metacpan.org/pod/release/LEONT/Test-Harness-3.39/lib/TAP/Harness.pm#new

This means instead of a simple binary "no parallelism" vs
"Parallelism", fine grained control of where parallellism is
problematic may be employed.

Then testers who wish to minimise the number of parallelism related
failures can use some heuristic like:

   if ( $dist->release_date->year >= 2015 && Test::Harness::VERSION >= 3.31 ) {
            export HARNESS_OPTIONS="j10";
   }


But given that there is already a way for authors to handle this
problem sanely for all consumers with new enough Test::Harnesses's, it
seems silly to invent something else that is substantially less
powerful and requires changes to all the CPAN::Meta stuff in the
process, and requires sizeable changes to our tooling to pull newer
versions of things to handle the new fields, etc, etc etc.

Reply via email to