1N/A#!/usr/bin/perl -w
1N/A
1N/Ause strict;
1N/Ause Test::More tests => 10;
1N/A
1N/Ause_ok('base');
1N/A
1N/A
1N/Apackage No::Version;
1N/A
1N/Ause vars qw($Foo);
1N/Asub VERSION { 42 }
1N/A
1N/Apackage Test::Version;
1N/A
1N/Ause base qw(No::Version);
1N/A::ok( $No::Version::VERSION =~ /set by base\.pm/, '$VERSION bug' );
1N/A
1N/A# Test Inverse of $VERSION bug base.pm should not clobber existing $VERSION
1N/Apackage Has::Version;
1N/A
1N/ABEGIN { $Has::Version::VERSION = '42' };
1N/A
1N/Apackage Test::Version2;
1N/A
1N/Ause base qw(Has::Version);
1N/A::is( $Has::Version::VERSION, 42 );
1N/A
1N/Apackage main;
1N/A
1N/Amy $eval1 = q{
1N/A {
1N/A package Eval1;
1N/A {
1N/A package Eval2;
1N/A use base 'Eval1';
1N/A $Eval2::VERSION = "1.02";
1N/A }
1N/A $Eval1::VERSION = "1.01";
1N/A }
1N/A};
1N/A
1N/Aeval $eval1;
1N/Ais( $@, '' );
1N/A
1N/Ais( $Eval1::VERSION, 1.01 );
1N/A
1N/Ais( $Eval2::VERSION, 1.02 );
1N/A
1N/A
1N/Aeval q{use base 'reallyReAlLyNotexists'};
1N/Alike( $@, qr/^Base class package "reallyReAlLyNotexists" is empty./,
1N/A 'base with empty package');
1N/A
1N/Aeval q{use base 'reallyReAlLyNotexists'};
1N/Alike( $@, qr/^Base class package "reallyReAlLyNotexists" is empty./,
1N/A ' still empty on 2nd load');
1N/A
1N/ABEGIN { $Has::Version_0::VERSION = 0 }
1N/A
1N/Apackage Test::Version3;
1N/A
1N/Ause base qw(Has::Version_0);
1N/A::is( $Has::Version_0::VERSION, 0, '$VERSION==0 preserved' );
1N/A
1N/A
1N/Apackage Test::SIGDIE;
1N/A
1N/A{
1N/A local $SIG{__DIE__} = sub {
1N/A ::fail('sigdie not caught, this test should not run')
1N/A };
1N/A eval {
1N/A 'base'->import(qw(Huh::Boo));
1N/A };
1N/A
1N/A ::like($@, qr/^Base class package "Huh::Boo" is empty/,
1N/A 'Base class empty error message');
1N/A
1N/A}