}
use strict;
-use Test::More tests => 16;
+use Test::More tests => 35;
use TieOut;
use MakeMaker::Test::Utils;
+use MakeMaker::Test::Setup::BFD;
use ExtUtils::MakeMaker;
perl_lib();
+ok( setup_recurs(), 'setup' );
+END {
+ ok( chdir File::Spec->updir );
+ ok( teardown_recurs(), 'teardown' );
+}
+
ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) ||
diag("chdir failed: $!");
$warnings .= join '', @_;
};
- my $mm = WriteMakefile(
- NAME => 'Big::Dummy',
- VERSION_FROM => 'lib/Big/Dummy.pm',
- MAN3PODS => ' ', # common mistake
- );
+ my $mm;
+
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION_FROM => 'lib/Big/Dummy.pm',
+ MAN3PODS => ' ', # common mistake
+ );
+ };
is( $warnings, <<VERIFY );
-WARNING: MAN3PODS takes a hash reference not a string/number.
+WARNING: MAN3PODS takes a HASH reference not a string/number.
Please inform the author.
VERIFY
- is_deeply( $mm->{MAN3PODS}, {}, 'Wrong argument type corrected' );
$warnings = '';
- $mm = WriteMakefile(
- NAME => 'Big::Dummy',
- VERSION_FROM => 'lib/Big/Dummy.pm',
- AUTHOR => sub {},
- );
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION_FROM => 'lib/Big/Dummy.pm',
+ AUTHOR => sub {},
+ );
+ };
is( $warnings, <<VERIFY );
-WARNING: AUTHOR takes a string/number not a code reference.
+WARNING: AUTHOR takes a string/number not a CODE reference.
Please inform the author.
VERIFY
- is_deeply( $mm->{AUTHOR}, '' );
-
-
# LIBS accepts *both* a string or an array ref. The first cut of
# our verification did not take this into account.
$warnings = '';
is_deeply( $mm->{LIBS}, ['-lwibble', '-lwobble'] );
$warnings = '';
- $mm = WriteMakefile(
- NAME => 'Big::Dummy',
- VERSION_FROM => 'lib/Big/Dummy.pm',
- LIBS => { wibble => "wobble" },
- );
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION_FROM => 'lib/Big/Dummy.pm',
+ LIBS => { wibble => "wobble" },
+ );
+ };
# We'll get warnings about the bogus libs, that's ok.
- like( $warnings, qr{^WARNING: LIBS takes a array reference or string/number not a hash reference}m );
- is_deeply( $mm->{LIBS}, [] );
+ like( $warnings, qr{^WARNING: LIBS takes a ARRAY reference or string/number not a HASH reference}m );
$warnings = '';
is( $mm->{WIBBLE}, 'something' );
is_deeply( $mm->{wump}, { foo => 42 } );
+
+
+ # Test VERSION
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => [1,2,3],
+ );
+ };
+ like( $warnings, qr{^WARNING: VERSION takes a version object or string/number} );
+
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => 1.002_003,
+ );
+ };
+ is( $warnings, '' );
+ is( $mm->{VERSION}, '1.002003' );
+
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => '1.002_003',
+ );
+ };
+ is( $warnings, '' );
+ is( $mm->{VERSION}, '1.002_003' );
+
+
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => bless {}, "Some::Class",
+ );
+ };
+ like( $warnings, '/^WARNING: VERSION takes a version object or string/number not a Some::Class object/' );
+
+
+ SKIP: {
+ skip("Can't test version objects", 8) unless eval { require version };
+ version->import;
+
+ my $version = version->new("1.2.3");
+ $warnings = '';
+ ok eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => $version,
+ );
+ } || diag $@;
+ is( $warnings, '' );
+ isa_ok( $mm->{VERSION}, 'version' );
+ is( $mm->{VERSION}, $version );
+
+ $warnings = '';
+ $version = qv('1.2.3');
+ ok eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => $version,
+ );
+ } || diag $@;
+ is( $warnings, '' );
+ isa_ok( $mm->{VERSION}, 'version' );
+ is( $mm->{VERSION}, $version );
+ }
+
+
+ # DISTNAME
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => '1.00',
+ DISTNAME => "Hooballa",
+ );
+ };
+ is( $warnings, '' );
+ is( $mm->{DISTNAME}, "Hooballa" );
+ is( $mm->{DISTVNAME}, $Is_VMS ? "Hooballa-1_00" : "Hooballa-1.00" );
+
+
+ # DISTVNAME (rt.cpan.org 43217)
+ $warnings = '';
+ eval {
+ $mm = WriteMakefile(
+ NAME => 'Big::Dummy',
+ VERSION => 1.00,
+ DISTVNAME => "Hooballoo",
+ );
+ };
+ is( $warnings, '' );
+ is( $mm->{DISTVNAME}, 'Hooballoo' );
}