Blame t/metadata.t

Packit 6539e1
# -*- mode: cperl; tab-width: 8; indent-tabs-mode: nil; basic-offset: 2 -*-
Packit 6539e1
# vim:ts=8:sw=2:et:sta:sts=2
Packit 6539e1
Packit 6539e1
use strict;
Packit 6539e1
use warnings;
Packit 6539e1
use Test::More 0.82;
Packit 6539e1
use IO::File;
Packit 6539e1
use File::Spec;
Packit 6539e1
use File::Temp;
Packit 6539e1
use File::Basename;
Packit 6539e1
use Cwd ();
Packit 6539e1
use File::Path;
Packit 6539e1
Packit 6539e1
plan tests => 70;
Packit 6539e1
Packit 6539e1
require_ok('Module::Metadata');
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
    # class method C<find_module_by_name>
Packit 6539e1
    my $module = Module::Metadata->find_module_by_name(
Packit 6539e1
                   'Module::Metadata' );
Packit 6539e1
    ok( -e $module, 'find_module_by_name() succeeds' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
#########################
Packit 6539e1
Packit 6539e1
BEGIN {
Packit 6539e1
  my $cwd = File::Spec->rel2abs(Cwd::cwd);
Packit 6539e1
  sub original_cwd { return $cwd }
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
# Set up a temp directory
Packit 6539e1
sub tmpdir {
Packit 6539e1
  my (@args) = @_;
Packit 6539e1
  my $dir = $ENV{PERL_CORE} ? original_cwd : File::Spec->tmpdir;
Packit 6539e1
  return File::Temp::tempdir('MMD-XXXXXXXX', CLEANUP => 0, DIR => $dir, @args);
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
my $tmp;
Packit 6539e1
BEGIN { $tmp = tmpdir; note "using temp dir $tmp"; }
Packit 6539e1
Packit 6539e1
END {
Packit 6539e1
  die "tests failed; leaving temp dir $tmp behind"
Packit 6539e1
    if $ENV{AUTHOR_TESTING} and not Test::Builder->new->is_passing;
Packit 6539e1
  note "removing temp dir $tmp";
Packit 6539e1
  chdir original_cwd;
Packit 6539e1
  File::Path::rmtree($tmp);
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
# generates a new distribution:
Packit 6539e1
# files => { relative filename => $content ... }
Packit 6539e1
# returns the name of the distribution (not including version),
Packit 6539e1
# and the absolute path name to the dist.
Packit 6539e1
{
Packit 6539e1
  my $test_num = 0;
Packit 6539e1
  sub new_dist {
Packit 6539e1
    my %opts = @_;
Packit 6539e1
Packit 6539e1
    my $distname = 'Simple' . $test_num++;
Packit 6539e1
    my $distdir = File::Spec->catdir($tmp, $distname);
Packit 6539e1
    note "using dist $distname in $distdir";
Packit 6539e1
Packit 6539e1
    File::Path::mkpath($distdir) or die "failed to create '$distdir'";
Packit 6539e1
Packit 6539e1
    foreach my $rel_filename (keys %{$opts{files}})
Packit 6539e1
    {
Packit 6539e1
      my $abs_filename = File::Spec->catfile($distdir, $rel_filename);
Packit 6539e1
      my $dirname = File::Basename::dirname($abs_filename);
Packit 6539e1
      unless (-d $dirname) {
Packit 6539e1
        File::Path::mkpath($dirname) or die "Can't create '$dirname'";
Packit 6539e1
      }
Packit 6539e1
Packit 6539e1
      note "creating $abs_filename";
Packit 6539e1
      my $fh = IO::File->new(">$abs_filename") or die "Can't write '$abs_filename'\n";
Packit 6539e1
      print $fh $opts{files}{$rel_filename};
Packit 6539e1
      close $fh;
Packit 6539e1
    }
Packit 6539e1
Packit 6539e1
    chdir $distdir;
Packit 6539e1
    return ($distname, $distdir);
Packit 6539e1
  }
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # fail on invalid module name
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_module(
Packit 6539e1
                  'Foo::Bar', inc => [] );
Packit 6539e1
  ok( !defined( $pm_info ), 'fail if can\'t find module by module name' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # fail on invalid filename
Packit 6539e1
  my $file = File::Spec->catfile( 'Foo', 'Bar.pm' );
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file( $file, inc => [] );
Packit 6539e1
  ok( !defined( $pm_info ), 'fail if can\'t find module by file name' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => "package Simple;\n" });
Packit 6539e1
Packit 6539e1
  # construct from module filename
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file( $file );
Packit 6539e1
  ok( defined( $pm_info ), 'new_from_file() succeeds' );
Packit 6539e1
Packit 6539e1
  # construct from filehandle
Packit 6539e1
  my $handle = IO::File->new($file);
Packit 6539e1
  $pm_info = Module::Metadata->new_from_handle( $handle, $file );
Packit 6539e1
  ok( defined( $pm_info ), 'new_from_handle() succeeds' );
Packit 6539e1
  $pm_info = Module::Metadata->new_from_handle( $handle );
Packit 6539e1
  is( $pm_info, undef, "new_from_handle() without filename returns undef" );
Packit 6539e1
  close($handle);
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # construct from module name, using custom include path
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_module(
Packit 6539e1
               'Simple', inc => [ 'lib', @INC ] );
Packit 6539e1
  ok( defined( $pm_info ), 'new_from_module() succeeds' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # Find each package only once
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = '1.23';
Packit 6539e1
package Error::Simple;
Packit 6539e1
$VERSION = '2.34';
Packit 6539e1
package Simple;
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file( $file );
Packit 6539e1
Packit 6539e1
  my @packages = $pm_info->packages_inside;
Packit 6539e1
  is( @packages, 2, 'record only one occurence of each package' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # Module 'Simple.pm' does not contain package 'Simple';
Packit 6539e1
  # constructor should not complain, no default module name or version
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple::Not;
Packit 6539e1
$VERSION = '1.23';
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file( $file );
Packit 6539e1
Packit 6539e1
  is( $pm_info->name, undef, 'no default package' );
Packit 6539e1
  is( $pm_info->version, undef, 'no version w/o default package' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
# parse $VERSION lines scripts for package main
Packit 6539e1
my @scripts = (
Packit 6539e1
  <<'---', # package main declared
Packit 6539e1
#!perl -w
Packit 6539e1
package main;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
  <<'---', # on first non-comment line, non declared package main
Packit 6539e1
#!perl -w
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
  <<'---', # after non-comment line
Packit 6539e1
#!perl -w
Packit 6539e1
use strict;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
  <<'---', # 1st declared package
Packit 6539e1
#!perl -w
Packit 6539e1
package main;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
package _private;
Packit 6539e1
$VERSION = '999';
Packit 6539e1
---
Packit 6539e1
  <<'---', # 2nd declared package
Packit 6539e1
#!perl -w
Packit 6539e1
package _private;
Packit 6539e1
$VERSION = '999';
Packit 6539e1
package main;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
  <<'---', # split package
Packit 6539e1
#!perl -w
Packit 6539e1
package main;
Packit 6539e1
package _private;
Packit 6539e1
$VERSION = '999';
Packit 6539e1
package main;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
  <<'---', # define 'main' version from other package
Packit 6539e1
package _private;
Packit 6539e1
$::VERSION = 0.01;
Packit 6539e1
$VERSION = '999';
Packit 6539e1
---
Packit 6539e1
  <<'---', # define 'main' version from other package
Packit 6539e1
package _private;
Packit 6539e1
$VERSION = '999';
Packit 6539e1
$::VERSION = 0.01;
Packit 6539e1
---
Packit 6539e1
);
Packit 6539e1
Packit 6539e1
my ( $i, $n ) = ( 1, scalar( @scripts ) );
Packit 6539e1
foreach my $script ( @scripts ) {
Packit 6539e1
  note '-------';
Packit 6539e1
  my $errs;
Packit 6539e1
  my $file = File::Spec->catfile('bin', 'simple.plx');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => $script } );
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file( $file );
Packit 6539e1
Packit 6539e1
  is( $pm_info->name, 'main', 'name for script is always main');
Packit 6539e1
  is( $pm_info->version, '0.01', "correct script version ($i of $n)" ) or $errs++;
Packit 6539e1
  $i++;
Packit 6539e1
Packit 6539e1
  diag 'parsed module: ', explain($pm_info) if !$ENV{PERL_CORE} && $errs;
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # examine properties of a module: name, pod, etc
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
package Simple::Ex;
Packit 6539e1
$VERSION = '0.02';
Packit 6539e1
Packit 6539e1
=head1 NAME
Packit 6539e1
Packit 6539e1
Simple - It's easy.
Packit 6539e1
Packit 6539e1
=head1 AUTHOR
Packit 6539e1
Packit 6539e1
Simple Simon
Packit 6539e1
Packit 6539e1
You can find me on the IRC channel
Packit 6539e1
#simon on irc.perl.org.
Packit 6539e1
Packit 6539e1
=cut
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_module(
Packit 6539e1
             'Simple', inc => [ 'lib', @INC ] );
Packit 6539e1
Packit 6539e1
  is( $pm_info->name, 'Simple', 'found default package' );
Packit 6539e1
  is( $pm_info->version, '0.01', 'version for default package' );
Packit 6539e1
Packit 6539e1
  # got correct version for secondary package
Packit 6539e1
  is( $pm_info->version( 'Simple::Ex' ), '0.02',
Packit 6539e1
      'version for secondary package' );
Packit 6539e1
Packit 6539e1
  my $filename = $pm_info->filename;
Packit 6539e1
  ok( defined( $filename ) && -e $filename,
Packit 6539e1
      'filename() returns valid path to module file' );
Packit 6539e1
Packit 6539e1
  my @packages = $pm_info->packages_inside;
Packit 6539e1
  is( @packages, 2, 'found correct number of packages' );
Packit 6539e1
  is( $packages[0], 'Simple', 'packages stored in order found' );
Packit 6539e1
Packit 6539e1
  # we can detect presence of pod regardless of whether we are collecting it
Packit 6539e1
  ok( $pm_info->contains_pod, 'contains_pod() succeeds' );
Packit 6539e1
Packit 6539e1
  my @pod = $pm_info->pod_inside;
Packit 6539e1
  is_deeply( \@pod, [qw(NAME AUTHOR)], 'found all pod sections' );
Packit 6539e1
Packit 6539e1
  is( $pm_info->pod('NONE') , undef,
Packit 6539e1
      'return undef() if pod section not present' );
Packit 6539e1
Packit 6539e1
  is( $pm_info->pod('NAME'), undef,
Packit 6539e1
      'return undef() if pod section not collected' );
Packit 6539e1
Packit 6539e1
Packit 6539e1
  # collect_pod
Packit 6539e1
  $pm_info = Module::Metadata->new_from_module(
Packit 6539e1
               'Simple', inc => [ 'lib', @INC ], collect_pod => 1 );
Packit 6539e1
Packit 6539e1
  my %pod;
Packit 6539e1
  for my $section (qw(NAME AUTHOR)) {
Packit 6539e1
    my $content = $pm_info->pod( $section );
Packit 6539e1
    if ( $content ) {
Packit 6539e1
      $content =~ s/^\s+//;
Packit 6539e1
      $content =~ s/\s+$//;
Packit 6539e1
    }
Packit 6539e1
    $pod{$section} = $content;
Packit 6539e1
  }
Packit 6539e1
  my %expected = (
Packit 6539e1
    NAME   => q|Simple - It's easy.|,
Packit 6539e1
    AUTHOR => <<'EXPECTED'
Packit 6539e1
Simple Simon
Packit 6539e1
Packit 6539e1
You can find me on the IRC channel
Packit 6539e1
#simon on irc.perl.org.
Packit 6539e1
EXPECTED
Packit 6539e1
  );
Packit 6539e1
  for my $text (values %expected) {
Packit 6539e1
    $text =~ s/^\s+//;
Packit 6539e1
    $text =~ s/\s+$//;
Packit 6539e1
  }
Packit 6539e1
  is( $pod{NAME},   $expected{NAME},   'collected NAME pod section' );
Packit 6539e1
  is( $pod{AUTHOR}, $expected{AUTHOR}, 'collected AUTHOR pod section' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # test things that look like POD, but aren't
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
Packit 6539e1
=YES THIS STARTS POD
Packit 6539e1
Packit 6539e1
our $VERSION = '999';
Packit 6539e1
Packit 6539e1
=cute
Packit 6539e1
Packit 6539e1
our $VERSION = '666';
Packit 6539e1
Packit 6539e1
=cut
Packit 6539e1
Packit 6539e1
*foo
Packit 6539e1
=*no_this_does_not_start_pod;
Packit 6539e1
Packit 6539e1
our $VERSION = '1.23';
Packit 6539e1
Packit 6539e1
---
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, 'Simple', 'found default package' );
Packit 6539e1
  is( $pm_info->version, '1.23', 'version for default package' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
my $tmpdir = GeneratePackage::tmpdir();
Packit 6539e1
my $undef;
Packit 6539e1
my $test_num = 0;
Packit 6539e1
use lib 't/lib';
Packit 6539e1
use GeneratePackage;
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # and now a real pod file
Packit 6539e1
  # (this test case is ready to be rolled into a corpus loop, later)
Packit 6539e1
  my $test_case = {
Packit 6539e1
    name => 'file only contains pod',
Packit 6539e1
    filename => 'Simple/Documentation.pod',
Packit 6539e1
    code => <<'---',
Packit 6539e1
# PODNAME: Simple::Documentation
Packit 6539e1
# ABSTRACT: My documentation
Packit 6539e1
Packit 6539e1
=pod
Packit 6539e1
Packit 6539e1
Hello, this is pod.
Packit 6539e1
Packit 6539e1
=cut
Packit 6539e1
---
Packit 6539e1
    module => '', # TODO: should probably be $undef actually
Packit 6539e1
    all_versions => { },
Packit 6539e1
  };
Packit 6539e1
Packit 6539e1
  note $test_case->{name};
Packit 6539e1
  my $code = $test_case->{code};
Packit 6539e1
  my $expected_name = $test_case->{module};
Packit 6539e1
  local $TODO = $test_case->{TODO};
Packit 6539e1
Packit 6539e1
  my $errs;
Packit 6539e1
Packit 6539e1
  my ($vol, $dir, $basename) = File::Spec->splitpath(File::Spec->catfile($tmpdir, "Simple${test_num}", ($test_case->{filename} || 'Simple.pm')));
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file(generate_file($dir, $basename, $code));
Packit 6539e1
Packit 6539e1
  my $got_name = $pm_info->name;
Packit 6539e1
  is(
Packit 6539e1
    $got_name,
Packit 6539e1
    $expected_name,
Packit 6539e1
    "case '$test_case->{name}': module name matches",
Packit 6539e1
  )
Packit 6539e1
  or $errs++;
Packit 6539e1
Packit 6539e1
  diag 'parsed module: ', explain($pm_info) if !$ENV{PERL_CORE} && $errs;
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # Make sure processing stops after __DATA__
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
__DATA__
Packit 6539e1
*UNIVERSAL::VERSION = sub {
Packit 6539e1
  foo();
Packit 6539e1
};
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, 'Simple', 'found default package' );
Packit 6539e1
  is( $pm_info->version, '0.01', 'version for default package' );
Packit 6539e1
  my @packages = $pm_info->packages_inside;
Packit 6539e1
  is_deeply(\@packages, ['Simple'], 'packages inside');
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  # Make sure we handle version.pm $VERSIONs well
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = version->new('0.60.' . (qw$Revision: 128 $)[1]);
Packit 6539e1
package Simple::Simon;
Packit 6539e1
$VERSION = version->new('0.61.' . (qw$Revision: 129 $)[1]);
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, 'Simple', 'found default package' );
Packit 6539e1
  is( $pm_info->version, '0.60.128', 'version for default package' );
Packit 6539e1
  my @packages = $pm_info->packages_inside;
Packit 6539e1
  is_deeply([sort @packages], ['Simple', 'Simple::Simon'], 'packages inside');
Packit 6539e1
  is( $pm_info->version('Simple::Simon'), '0.61.129', 'version for embedded package' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
# check that package_versions_from_directory works
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
package Simple::Ex;
Packit 6539e1
$VERSION = '0.02';
Packit 6539e1
{
Packit 6539e1
  package main; # should ignore this
Packit 6539e1
}
Packit 6539e1
{
Packit 6539e1
  package DB; # should ignore this
Packit 6539e1
}
Packit 6539e1
{
Packit 6539e1
  package Simple::_private; # should ignore this
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
=head1 NAME
Packit 6539e1
Packit 6539e1
Simple - It's easy.
Packit 6539e1
Packit 6539e1
=head1 AUTHOR
Packit 6539e1
Packit 6539e1
Simple Simon
Packit 6539e1
Packit 6539e1
=cut
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $exp_pvfd = {
Packit 6539e1
    'Simple' => {
Packit 6539e1
      'file' => 'Simple.pm',
Packit 6539e1
      'version' => '0.01'
Packit 6539e1
    },
Packit 6539e1
    'Simple::Ex' => {
Packit 6539e1
      'file' => 'Simple.pm',
Packit 6539e1
      'version' => '0.02'
Packit 6539e1
    }
Packit 6539e1
  };
Packit 6539e1
Packit 6539e1
  my $got_pvfd = Module::Metadata->package_versions_from_directory('lib');
Packit 6539e1
Packit 6539e1
  is_deeply( $got_pvfd, $exp_pvfd, "package_version_from_directory()" )
Packit 6539e1
    or diag explain $got_pvfd;
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $got_provides = Module::Metadata->provides(dir => 'lib', version => 2);
Packit 6539e1
  my $exp_provides = {
Packit 6539e1
    'Simple' => {
Packit 6539e1
      'file' => 'lib/Simple.pm',
Packit 6539e1
      'version' => '0.01'
Packit 6539e1
    },
Packit 6539e1
    'Simple::Ex' => {
Packit 6539e1
      'file' => 'lib/Simple.pm',
Packit 6539e1
      'version' => '0.02'
Packit 6539e1
    }
Packit 6539e1
  };
Packit 6539e1
Packit 6539e1
  is_deeply( $got_provides, $exp_provides, "provides()" )
Packit 6539e1
    or diag explain $got_provides;
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $got_provides = Module::Metadata->provides(dir => 'lib', prefix => 'other', version => 1.4);
Packit 6539e1
  my $exp_provides = {
Packit 6539e1
    'Simple' => {
Packit 6539e1
      'file' => 'other/Simple.pm',
Packit 6539e1
      'version' => '0.01'
Packit 6539e1
    },
Packit 6539e1
    'Simple::Ex' => {
Packit 6539e1
      'file' => 'other/Simple.pm',
Packit 6539e1
      'version' => '0.02'
Packit 6539e1
    }
Packit 6539e1
  };
Packit 6539e1
Packit 6539e1
  is_deeply( $got_provides, $exp_provides, "provides()" )
Packit 6539e1
    or diag explain $got_provides;
Packit 6539e1
}
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
# Check package_versions_from_directory with regard to case-sensitivity
Packit 6539e1
{
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, undef, 'no default package' );
Packit 6539e1
  is( $pm_info->version, undef, 'version for default package' );
Packit 6539e1
  is( $pm_info->version('simple'), '0.01', 'version for lower-case package' );
Packit 6539e1
  is( $pm_info->version('Simple'), undef, 'version for capitalized package' );
Packit 6539e1
  ok( $pm_info->is_indexable(), 'an indexable package is found' );
Packit 6539e1
  ok( $pm_info->is_indexable('simple'), 'the simple package is indexable' );
Packit 6539e1
  ok( !$pm_info->is_indexable('Simple'), 'the Simple package would not be indexed' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
package Simple;
Packit 6539e1
$VERSION = '0.02';
Packit 6539e1
package SiMpLe;
Packit 6539e1
$VERSION = '0.03';
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, 'Simple', 'found default package' );
Packit 6539e1
  is( $pm_info->version, '0.02', 'version for default package' );
Packit 6539e1
  is( $pm_info->version('simple'), '0.01', 'version for lower-case package' );
Packit 6539e1
  is( $pm_info->version('Simple'), '0.02', 'version for capitalized package' );
Packit 6539e1
  is( $pm_info->version('SiMpLe'), '0.03', 'version for mixed-case package' );
Packit 6539e1
  ok( $pm_info->is_indexable('simple'), 'the simple package is indexable' );
Packit 6539e1
  ok( $pm_info->is_indexable('Simple'), 'the Simple package is indexable' );
Packit 6539e1
}
Packit 6539e1
Packit 6539e1
{
Packit 6539e1
  my $file = File::Spec->catfile('lib', 'Simple.pm');
Packit 6539e1
  my ($dist_name, $dist_dir) = new_dist(files => { $file => <<'---' } );
Packit 6539e1
package ## hide from PAUSE
Packit 6539e1
   simple;
Packit 6539e1
$VERSION = '0.01';
Packit 6539e1
---
Packit 6539e1
Packit 6539e1
  my $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
Packit 6539e1
  is( $pm_info->name, undef, 'no package names found' );
Packit 6539e1
  ok( !$pm_info->is_indexable('simple'), 'the simple package would not be indexed' );
Packit 6539e1
  ok( !$pm_info->is_indexable('Simple'), 'the Simple package would not be indexed' );
Packit 6539e1
  ok( !$pm_info->is_indexable(), 'no indexable package is found' );
Packit 6539e1
}