(As posted to Perl Monks, but probably a good question for this list as well)

As I've been developing CPAN::Reporter, I've been thinking about what
information I wished I had when examining failure reports on CPAN
Testers. Test::Reporter already includes the results of "perl -V". As
part of CPAN::Reporter, I include a list of prerequisites specified
and the module versions loaded (and I believe that CPANPLUS does this
as well).

Now I'm considering what else might be useful. From an initial small
list I had, I've brainstormed a longer list of additional things that
might be useful to include. For example:

Toolchain module versions

It seemed like it might be useful to know what versions of the module
toolchain are in use. These aren't listed in prerequisites and could
be a potential source of test problems (particularly false negatives).

   * CPAN
   * CPANPLUS -- though not really relevant for CPAN::Reporter
   * ExtUtils::MakeMaker
   * Module::Build, along with ExtUtils::CBuilder and ExtUtils::ParseXS

Environment variables

Many test programs change behavior based on environment variables. In
addition, it seemed to me that some environment variables might answer
other questions about the operating environment at the time of the
failure.

   * qr/PERL/ -- anything specific to Perl and kind enough to flag it
in the name of the variable
   * PATH
   * SHELL
   * TERM
   * AUTOMATED_TESTING -- used by many authors to toggle tests for
non-interactive situations
   * AUTHOR_TESTING -- I use this for pod/coverage tests, though I
probably should have called it PERL_AUTHOR_TESTING
   * INCLUDE -- win32 gcc path to header files
   * LIB -- win32 gcc path to library files
   * LD_LIBRARY_PATH -- GNU/linux path to library files

Other stuff

This is more of a catch-all, but it seemed like many of these might be
useful to know when investigating a test failure report.

   * perl executable name -- $^X -- helpful for detecting
spaces/non-standard locations
   * UID/EUID and GID/EGID -- $<, $>, $(, $) -- running as root or as
a normal user?
   * umask -- affects files created during tests
   * Win32::GetOSVersion() -- only for win32, of course, but would
give more detail than just "MSWin32" from $^O (e.g. Win98? Vista?)

Program versions

This is a much more speculative idea, as there is no standard way to
ask for a version for an external program. It might or might not
really matter except in very unusual XS cases.

   * compiler
   * $Config{make}

Feedback needed

I'm interested in what people think of these lists. Which of these
seem useful? Which are overkill? Are there things missing that you'd
really like to have in a test report. Which would you prioritize?

Regards,
David Golden

Reply via email to