diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2013-10-28 18:09:08 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2013-10-28 18:09:08 +0000 |
commit | 1f3ec55911f841590a62ed06becc2bd9131a5fc4 (patch) | |
tree | c5cc7c17e75fff9f97efbd575d464cb9da4f60e9 /t | |
download | Sub-Exporter-Progressive-tarball-master.tar.gz |
Sub-Exporter-Progressive-0.001011HEADSub-Exporter-Progressive-0.001011master
Diffstat (limited to 't')
-rw-r--r-- | t/all.t | 22 | ||||
-rw-r--r-- | t/basic.t | 13 | ||||
-rw-r--r-- | t/default.t | 13 | ||||
-rw-r--r-- | t/lib/A/Junk.pm | 15 | ||||
-rw-r--r-- | t/lib/A/JunkAll.pm | 13 | ||||
-rw-r--r-- | t/sex.t | 18 | ||||
-rw-r--r-- | t/tags.t | 69 | ||||
-rw-r--r-- | t/version-check.t | 42 |
8 files changed, 205 insertions, 0 deletions
@@ -0,0 +1,22 @@ + +use strict; +use warnings; + +use Test::More; +use List::Util 'first'; +use lib 't/lib'; +use A::JunkAll; + +ok(main->can('junk1'), 'sub exported'); +ok(main->can('junk2'), 'sub exported'); +ok(! $INC{'Sub/Exporter.pm'}, 'Sub::Exporter not loaded'); + +package Other; +use Test::More; +use A::JunkAll ':all'; + +ok(main->can('junk1'), 'sub exported'); +ok(main->can('junk2'), 'sub exported'); +ok(! $INC{'Sub/Exporter.pm'}, 'Sub::Exporter not loaded'); + +done_testing; diff --git a/t/basic.t b/t/basic.t new file mode 100644 index 0000000..5a841d1 --- /dev/null +++ b/t/basic.t @@ -0,0 +1,13 @@ + +use strict; +use warnings; + +use Test::More; +use List::Util 'first'; +use lib 't/lib'; +use A::Junk 'junk1'; + +ok(main->can('junk1'), 'requested sub exported'); +ok(! $INC{'Sub/Exporter.pm'}, 'Sub::Exporter not loaded'); + +done_testing; diff --git a/t/default.t b/t/default.t new file mode 100644 index 0000000..f7eb327 --- /dev/null +++ b/t/default.t @@ -0,0 +1,13 @@ + +use strict; +use warnings; + +use Test::More; +use List::Util 'first'; +use lib 't/lib'; +use A::Junk; + +ok(main->can('junk2'), 'sub exported'); +ok(! $INC{'Sub/Exporter.pm'}, 'Sub::Exporter not loaded'); + +done_testing; diff --git a/t/lib/A/Junk.pm b/t/lib/A/Junk.pm new file mode 100644 index 0000000..a5eab20 --- /dev/null +++ b/t/lib/A/Junk.pm @@ -0,0 +1,15 @@ +package A::Junk; + +use Sub::Exporter::Progressive -setup => { + exports => [qw(junk1 junk2 junk3)], + groups => { + default => ['junk2'], + other => ['junk3'], + }, +}; + +sub junk1 { 1 } +sub junk2 { 1 } +sub junk3 { 1 } + +1; diff --git a/t/lib/A/JunkAll.pm b/t/lib/A/JunkAll.pm new file mode 100644 index 0000000..d3e6123 --- /dev/null +++ b/t/lib/A/JunkAll.pm @@ -0,0 +1,13 @@ +package A::JunkAll; + +use Sub::Exporter::Progressive -setup => { + exports => [qw(junk1 junk2)], + groups => { + default => [ -all ], + }, +}; + +sub junk1 { 1 } +sub junk2 { 1 } + +1; @@ -0,0 +1,18 @@ + +use strict; +use warnings; + +use Test::More; +BEGIN { + plan skip_all => 'Sub::Exporter not installed' + unless eval { require Sub::Exporter }; +} + +use List::Util 'first'; +use lib 't/lib'; +use A::Junk 'junk1' => { -as => 'junk' }; + +ok(main->can('junk'), 'sub renamed with Sub::Exporter'); +ok($INC{'Sub/Exporter.pm'}, 'Sub::Exporter loaded'); + +done_testing; diff --git a/t/tags.t b/t/tags.t new file mode 100644 index 0000000..90f20ca --- /dev/null +++ b/t/tags.t @@ -0,0 +1,69 @@ +use strict; +use warnings; + +use Test::More; +use List::Util 'first'; +use Carp; +use lib 't/lib'; +use A::Junk ':other'; + +BEGIN { + unshift @INC, sub { croak 'Shouldn\'t load Sub::Exporter' if $_[1] eq 'Sub/Exporter.pm' }; +} + +ok(!main->can('junk1'), 'junk1 not exported'); +ok(!main->can('junk2'), 'junk2 not exported'); +ok(main->can('junk3'), 'junk3 exported'); +ok(! $INC{'Sub/Exporter.pm'}, 'Sub::Exporter not loaded'); + +BEGIN { + package Local::Exporter; + use Sub::Exporter::Progressive -setup => { + exports => [qw/ foo bar baz /], + groups => { + default => [qw/ foo /], + bb => [qw/ bar baz /], + }, + }; + use constant foo => 1; + use constant bar => 2; + use constant baz => 3; + + $INC{'Local/Exporter.pm'} = __FILE__; +}; + +my $i = 0; +sub check_tag { + my ($tag, $should, $shouldnt) = @_; + my $pkg = 'Local::Importer' . ++$i; + + ok(eval qq{ + package $pkg; + use Local::Exporter qw( $tag ); + 1; + }, "'$tag' tag: $pkg compiled") or diag $@; + + ok( $pkg->can($_), "'$tag' tag: $pkg\->can(\"$_\")") for @$should; + ok(!$pkg->can($_), "'$tag' tag: $pkg\->can't(\"$_\")") for @$shouldnt; +} + +check_tag(':default', [qw/foo/], [qw/bar baz/]); +check_tag('-default', [qw/foo/], [qw/bar baz/]); +check_tag(':default bar', [qw/foo bar/], [qw/baz/]); +check_tag('-default bar', [qw/foo bar/], [qw/baz/]); +check_tag(':bb', [qw/bar baz/], [qw/foo/]); +check_tag('-bb', [qw/bar baz/], [qw/foo/]); +check_tag(':all', [qw/foo bar baz/], []); +check_tag('-all', [qw/foo bar baz/], []); + +SKIP: { + skip "Your version of Exporter (@{[ Exporter->VERSION ]}) supports " + .'tags only as the first argument to import()', 1 + unless eval { Exporter->VERSION('5.58') }; + + check_tag('bar :default', [qw/foo bar/], [qw/baz/]); + check_tag('bar -default', [qw/foo bar/], [qw/baz/]); +} + +done_testing; + diff --git a/t/version-check.t b/t/version-check.t new file mode 100644 index 0000000..5fe1062 --- /dev/null +++ b/t/version-check.t @@ -0,0 +1,42 @@ + +use strict; +use warnings; +use Test::More; + +BEGIN { + package AAA; + our $VERSION = 2; + use Sub::Exporter::Progressive -setup => { + exports => ['aaa'], + }; + sub aaa { 'aaa' }; + $INC{'AAA.pm'} = __FILE__; +}; + +ok(eval('use AAA 1; 1'), 'perl built-in module version check'); + +{ + local $@; + ok(!eval('use AAA 3; 1'), 'perl built-in module version check'); + like( + $@, + qr/^AAA version 3 required/, + 'perl built-in module version check error message', + ); +} + +{ + local $@; + ok( + !eval('use AAA aaa => 1; 1'), + 'Exporter.pm-style version check', + ); + like( + $@, + qr{^cannot export symbols with a leading digit: '1'}, + 'Sub::Exporter::Progressive error message', + ); +} + +done_testing; + |