This is probably something we should bring up at the toolchain summit. Ether 
pointed at a proposal from a while back about a new test status to be used when 
the module allows itself to be built, but the installing of dependencies fails: 
https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/berlin-consensus.md#cpan-testers-grading
 
<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/berlin-consensus.md#cpan-testers-grading>

I didn't know about this, but Haarg and I were talking about this at the 
MetaCPAN Hackathon: The decades of tooling built around CPAN Testers expects 
PASS, FAIL, NA, UNKNOWN and only those. Of those, NA is most appropriate for 
"it's not this distribution's fault that it cannot be installed on this 
machine." Unfortunately, this is a rather large bucket: N/A includes "OS 
unsupported", "Don't have a native compile toolchain", "Couldn't find a native 
prereq", and now may also add "Dependencies not satisfied".

We could further differentiate these statuses with a new field containing a 
status code. I really like how SMTP's error codes work, and we could adopt 
something similar as: "X.Y.Z".

        * "X" is the main type
                * PASS = 1
                * FAIL = 2
                * NA = 3
                * UNKNOWN = 4
        * "Y" is the step of the process we made it to
                * 0 is "complete/unknown"
                * 1 is "extract"
                * 2 is "build"
                * 3 is "test"
                * 4 is "install"
        * "Z" is a step-specific status code
                * "0" is always "generic/unknown"
                * But for the "build" step
                        * 1 can mean "OS unsupported"
                        * 2 can mean "Compiler needed"
                        * 3 can mean "Dependencies failed"

This might be over-engineering, and I welcome any suggestions which would be 
simpler. We'd also need to think about all the possible things that could go 
wrong and make sure we can express them in useful categories (without being 
pedantic). This may also not be the best way of expressing them: The main type 
is implied by the step/status fields (making it redundant but useful 
at-a-glance), and this could be clumsy to query on using SQL.

> On Mar 20, 2017, at 10:52 AM, Kent Fredric <kentfred...@gmail.com> wrote:
> 
> I've seen a lot of test failures from DDICK this week that all end up
> being explainable
> as "Didn't satisfy dependencies of my dependencies"
> 
> This is annoying as its a transient breakage, so the places the fail
> is being reported
> is not a place I can reasonably fix the issue.
> 
> For instance:
> 
> http://www.cpantesters.org/cpan/report/8ec51672-03b4-11e7-b9d0-1c36a38678f7
> 
> This indicates Getopt::Long::Descriptive's dependency Params::Validate
> is not installed, but its a clear dependency of the version being used
> in the test ( 0.100 )
> 
> https://metacpan.org/source/RJBS/Getopt-Long-Descriptive-0.100/Makefile.PL#L23
> 
> But Params-Validate is nowhere in the constructed @INC tree.
> 
> I'd only assume this is a client misconfiguration somehow, but if
> there's some bug
> in tooling / dependency chains that is causing this I'd rather we got
> to the root of it.
> 
> It would also be awfully nice if there was a grade/way of indicating
> from CPAN Testers side that "X dist failed due to transiently missing
> dependencies", which IME is more N/A than FAIL
> 
> ( Not to say there isn't any use in testing for dists with randomly
> missing dependencies to see if it still passes, etc, just reporting an
> expected-to-fail condition as a failure is less than useful )
> 
> Otherwise, thanks for the tests.
> 
> 
> 
> -- 
> Kent
> 
> KENTNL - https://metacpan.org/author/KENTNL

Reply via email to