Provided by: libtest-diaginc-perl_0.008-2_all bug


       Test::DiagINC - List modules and versions loaded if tests fail


       version 0.008


           # preferably load before anything else
           use if $ENV{AUTOMATED_TESTING}, 'Test::DiagINC';
           use Test::More;


       Assuming you shipped your module to CPAN with working tests, test failures from CPAN
       Testers <> might be due to platform issues, Perl version issues
       or problems with dependencies.  This module helps you diagnose deep dependency problems by
       showing you exactly what modules and versions were loaded during a test run.

       When this module is loaded, it sets up an "END" block that will take action if the program
       is about to exit with a non-zero exit code or if $test_builder->is_passing is false by the
       time the "END" block is reached.  If that happens, this module prints out the names and
       version numbers of non-local modules appearing in %INC at the end of the test.

       For example:

           $ perl -MTest::DiagINC -MTest::More -e 'fail("meh"); done_testing'
           not ok 1 - meh
           #   Failed test 'meh'
           #   at -e line 1.
           # Looks like you failed 1 test of 1.
           # Listing modules and versions from %INC
           #   5.018002 Config
           #       5.68 Exporter
           #       5.68 Exporter::Heavy
           #       1.07 PerlIO
           #       0.98 Test::Builder
           #       0.98 Test::Builder::Module
           #      0.003 Test::DiagINC
           #       0.98 Test::More
           #       1.22 overload
           #       0.02 overloading
           #       1.07 strict
           #       1.03 vars
           #       1.18 warnings
           #       1.02 warnings::register

       This module deliberately does not load any other modules during runtime, instead delaying
       all loads until it needs to generate a failure report in its "END" block. The only
       exception is loading strict and warnings for self-check if and only if "RELEASE_TESTING"
       is true. Therefore an empty invocation will look like this:

           $ perl -MTest::DiagINC -e 'exit(1)'
           # Listing modules from %INC
           #  0.003 Test::DiagINC

       NOTE:  Because this module uses an "END" block, it is a good idea to load it as early as
       possible, so the "END" block it installs will execute as late as possible (see perlmod for
       details on how this works). While this module does employ some cleverness to work around
       load order, it is still a heuristic and is no substitute to loading this module early. A
       notable side-effect is when a module is loaded in an "END" block executing after the one
       installed by this library: such modules will be "invisible" to us and will not be reported
       as part of the diagnostic report.

       Modules that appear to be sourced from below the current directory when "Test::DiagINC"
       was loaded will be excluded from the report (e.g. excludes local modules from "./",
       "lib/", "t/lib", and so on).

       The heuristic of searching %INC for loaded modules may fail if the module path loaded does
       not map to a package within the module file.

       If "Test::More" is loaded, the output will go via the "diag" function.  Otherwise, it will
       just be sent to STDERR.


   Bugs / Feature Requests
       Please report any bugs or feature requests through the issue tracker at
       <>.  You will be notified automatically of
       any progress on your issue.

   Source Code
       This is open source software.  The code repository is available for public review and
       contribution under the terms of the license.


         git clone


       David Golden <>


       ·   Peter Rabbitson <>

       ·   Roy Ivy III <>


       This software is Copyright (c) 2014 by David Golden.

       This is free software, licensed under:

         The Apache License, Version 2.0, January 2004