The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

require 5;
use strict;
use Test;
my @modules;

BEGIN { 
  @modules =
  # Modules that have a $VERSION each, and have been in core for ages
  qw(
    Fcntl File::Basename File::Copy File::Path FileHandle FindBin
    Getopt::Long IO::File POSIX Text::Tabs
  );
  my $testcount = 2  +  3 * @modules;
  plan tests => $testcount;
  print "# ~ ~ ~ Expecting $testcount tests ~ ~ ~\n";
}

use Module::Versions::Report ();


ok 1;
foreach my $m (@modules) {
  print "# requiring $m...\n";
  eval "require $m;";
  die "Can't require $m: $@\nAborting" if $@;
  ok 1;
}

my $out = Module::Versions::Report::report();

{ my $o = $out; $o =~ s/^/# /mg; print "#\n#\n# Output:\n$o#\n"; }

foreach my $m (@modules) {
  my $mq = quotemeta($m);
  my $mv = quotemeta(do { no strict 'refs'; ${"$m\::VERSION"} || 'WHA' } );
  if($out =~ m/$mq/) {
    ok 1;
  } else {
    ok 0;
    print "# Can't find $mq in output\n";
  }

  if($out =~ m/$mv/) {
    ok 1;
  } else {
    ok 0;
    print "# Can't find $mv in output\n";
  }

}

print "# Byebye!\n";
ok 1;