James E Keenan
and 1 contributors

NAME

dump-parsed-cpanm-build-logs - pretty-print logs stored in JSON

USAGE

Multiple files:

    dump-parsed-cpanm-build-logs \
        /path/to/tad/results/perl-5.27.6/analysis/01/CPANID.Some-Distro-0.008.log.json \
        /path/to/tad/results/perl-5.27.6/analysis/01/OTHERCPANID.Some-Other-Distro-0.001.log.json

or a single file on STDIN:

    cat /path/to/tad/results/perl-5.27.6/analysis/01/CPANID.Some.Distro-.log.json | \
        dump-parsed-cpanm-build-logs

NOTE: This program's name is long. You may wish to create a shorter alias for it provided that alias does not clash with any other program whose name indicates it "dumps JSON."

DESCRIPTION

This is a helper program for use with Perl extension CPAN-cpanminus-reporter-RetainReports.

When you call that module's run() method, a build.log created by cpanm is parsed to create individual files on disk for each module which received a grade such as PASS, FAIL, NA or UNKNOWN. Those files are written in compact JSON for use as input into other programs. But compact JSON is not very human-readable. Use this program to pretty-print the report to STDOUT.

Sample Output

Running the program on the two files in the examples/ directory in this distribution generates:

    {
      author => "DAGOLDEN",
      dist => "Sub-Uplevel",
      distname => "Sub-Uplevel-0.2800",
      distversion => "0.2800",
      grade => "PASS",
      prereqs => undef,
      test_output => [
        "Building and testing Sub-Uplevel-0.2800",
        "cp lib/Sub/Uplevel.pm blib/lib/Sub/Uplevel.pm",
        "PERL_DL_NONLAZY=1 \"/home/jkeenan/var/tad/testing/perl-5.27.6/bin/perl\" \"-MExtUtils::Command::MM\" \"-MTest::Harness\" \"-e\" \"undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')\" t/*.t",
        "# ",
        "# Versions for all modules listed in MYMETA.json (including optional ones):",
        "# ",
        "# === Configure Requires ===",
        "# ",
        "#     Module              Want Have",
        "#     ------------------- ---- ----",
        "#     ExtUtils::MakeMaker 6.17 7.30",
        "# ",
        "# === Build Requires ===",
        "# ",
        "#     Module              Want Have",
        "#     ------------------- ---- ----",
        "#     ExtUtils::MakeMaker  any 7.30",
        "# ",
        "# === Test Requires ===",
        "# ",
        "#     Module              Want     Have",
        "#     ------------------- ---- --------",
        "#     Exporter             any     5.72",
        "#     ExtUtils::MakeMaker  any     7.30",
        "#     File::Spec           any     3.69",
        "#     Test::More           any 1.302111",
        "#     lib                  any     0.64",
        "# ",
        "# === Test Recommends ===",
        "# ",
        "#     Module         Want     Have",
        "#     ---------- -------- --------",
        "#     CPAN::Meta 2.120900 2.150010",
        "# ",
        "# === Runtime Requires ===",
        "# ",
        "#     Module   Want Have",
        "#     -------- ---- ----",
        "#     Carp      any 1.44",
        "#     constant  any 1.33",
        "#     strict    any 1.11",
        "#     warnings  any 1.38",
        "# ",
        "t/00-report-prereqs.t ........ ok",
        "t/01_die_check.t ............. ok",
        "t/02_uplevel.t ............... ok",
        "t/03_nested_uplevels.t ....... ok",
        "t/04_honor_later_override.t .. ok",
        "t/05_honor_prior_override.t .. ok",
        "t/06_db_args.t ............... ok",
        "t/07_uplevel_too_high.t ...... ok",
        "t/08_exporter.t .............. ok",
        "t/09_emptylist.t ............. ok",
        "All tests successful.",
        "Files=10, Tests=158,  1 wallclock secs ( 0.06 usr  0.00 sys +  0.68 cusr  0.07 csys =  0.81 CPU)",
        "Result: PASS",
      ],
      via => "App::cpanminus::reporter 0.17 (1.7043)",
    }
    {
      author => "DAGOLDEN",
      dist => "Test-API",
      distname => "Test-API-0.008",
      distversion => 0.008,
      grade => "FAIL",
      prereqs => undef,
      test_output => [
        "Building and testing Test-API-0.008",
        "cp lib/Test/API.pm blib/lib/Test/API.pm",
        "PERL_DL_NONLAZY=1 \"/home/jkeenan/var/tad/testing/perl-5.27.6/bin/perl\" \"-MExtUtils::Command::MM\" \"-MTest::Harness\" \"-e\" \"undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')\" t/*.t",
        "# ",
        "# Versions for all modules listed in MYMETA.json (including optional ones):",
        "# ",
        "# === Configure Requires ===",
        "# ",
        "#     Module              Want Have",
        "#     ------------------- ---- ----",
        "#     ExtUtils::MakeMaker 6.17 7.30",
        "# ",
        "# === Build Requires ===",
        "# ",
        "#     Module              Want Have",
        "#     ------------------- ---- ----",
        "#     ExtUtils::MakeMaker  any 7.30",
        "# ",
        "# === Test Requires ===",
        "# ",
        "#     Module                Want     Have",
        "#     --------------------- ---- --------",
        "#     Carp                   any     1.44",
        "#     Exporter               any     5.72",
        "#     ExtUtils::MakeMaker    any     7.30",
        "#     File::Spec             any     3.69",
        "#     Test::Builder::Tester 1.18 1.302120",
        "#     Test::More             any 1.302120",
        "#     lib                    any     0.64",
        "# ",
        "# === Test Recommends ===",
        "# ",
        "#     Module         Want     Have",
        "#     ---------- -------- --------",
        "#     CPAN::Meta 2.120900 2.150010",
        "# ",
        "# === Runtime Requires ===",
        "# ",
        "#     Module                Want     Have",
        "#     --------------------- ---- --------",
        "#     Symbol                 any     1.08",
        "#     Test::Builder::Module 0.86 1.302120",
        "#     strict                 any     1.11",
        "#     warnings               any     1.38",
        "# ",
        "t/00-report-prereqs.t .. ok",
        "Not a GLOB reference at /home/jkeenan/var/tad/testing/perl-5.27.6/.cpanm/work/1513444048.14516/Test-API-0.008/blib/lib/Test/API.pm line 176.",
        "t/02-public.t .......... ",
        "Dubious, test returned 255 (wstat 65280, 0xff00)",
        "Failed 4/11 subtests ",
        "Not a GLOB reference at /home/jkeenan/var/tad/testing/perl-5.27.6/.cpanm/work/1513444048.14516/Test-API-0.008/blib/lib/Test/API.pm line 176.",
        "t/03-export.t .......... ",
        "Dubious, test returned 255 (wstat 65280, 0xff00)",
        "Failed 8/14 subtests ",
        "Not a GLOB reference at /home/jkeenan/var/tad/testing/perl-5.27.6/.cpanm/work/1513444048.14516/Test-API-0.008/blib/lib/Test/API.pm line 176.",
        "t/04-class-ok.t ........ ",
        "Dubious, test returned 255 (wstat 65280, 0xff00)",
        "Failed 3/5 subtests ",
        "",
        "Test Summary Report",
        "-------------------",
        "t/02-public.t        (Wstat: 65280 Tests: 7 Failed: 0)",
        "  Non-zero exit status: 255",
        "  Parse errors: Bad plan.  You planned 11 tests but ran 7.",
        "t/03-export.t        (Wstat: 65280 Tests: 6 Failed: 0)",
        "  Non-zero exit status: 255",
        "  Parse errors: Bad plan.  You planned 14 tests but ran 6.",
        "t/04-class-ok.t      (Wstat: 65280 Tests: 2 Failed: 0)",
        "  Non-zero exit status: 255",
        "  Parse errors: Bad plan.  You planned 5 tests but ran 2.",
        "Files=4, Tests=16,  1 wallclock secs ( 0.03 usr  0.00 sys +  0.36 cusr  0.03 csys =  0.42 CPU)",
        "Result: FAIL",
      ],
      via => "App::cpanminus::reporter 0.17 (1.7043)",
    }

PREREQUISITES

CPAN::cpanminus::reporter::RetainReports and its prerequisites. Data::Dump.

AUTHOR

    James E Keenan
    CPAN Id:  JKEENAN
    jkeenan [at] cpan [dot] org

COPYRIGHT

Copyright (c) 2017 James E Keenan. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

perl(1). CPAN::cpanminus::reporter::RetainReports(3). JSON(3).