use strict;
use warnings;
use lib 't/lib';
use Test::More;
require Module::Requires;
eval {
Module::Requires->import(
'ClassA' => {
import => [qw/ foo bar baz /],
}
);
};
like($@, qr/ClassA is unloaded because -autoload an option is lacking./);
ok(!ClassA->can('package'));
eval {
Module::Requires->import(
'ClassA' => {
import => [qw/ foo bar baz /],
},
'ClassC' => {
import => [qw/ foo bar baz /],
}
);
};
like($@, qr/ClassA is unloaded because -autoload an option is lacking.\nClassC is unloaded because -autoload an option is lacking./);
ok(!ClassA->can('package'));
ok(!ClassC->can('package'));
eval {
Module::Requires->import(
'-autoload',
'ClassA' => {
import => [qw/ foo bar baz /],
}
);
};
is($@, '');
is(ClassA->params, 'ClassA, foo, bar, baz');
Module::Requires->import(
'-autoload',
'ClassI' => { import => [] },
);
eval {
export();
};
like($@, qr/Undefined subroutine &main::export called/);
Module::Requires->import(
'-autoload',
'ClassI' => { import => [qw/ testa testb /] },
);
is(testa(), 'OK');
is(testb(), 'OK');
eval {
export();
};
like($@, qr/Undefined subroutine &main::export called/);
Module::Requires->import(
'-autoload',
'ClassI',
);
is(export(), 'OK');
done_testing;