Linux sagir-us1.hostever.us 5.14.0-570.51.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 8 09:41:34 EDT 2025 x86_64
LiteSpeed
Server IP : 104.247.108.91 & Your IP : 216.73.216.105
Domains : 74 Domain
User : georgeto
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
perl-Sub-Exporter /
t /
Delete
Unzip
Name
Size
Permission
Date
Action
lib
[ DIR ]
drwxr-xr-x
2025-02-25 04:07
00-compile.t
987
B
-rw-r--r--
2013-10-18 15:10
000-report-versions-tiny.t
2.56
KB
-rw-r--r--
2013-10-18 15:10
col-init.t
1.13
KB
-rw-r--r--
2022-02-11 18:11
collection.t
2.83
KB
-rw-r--r--
2022-02-11 18:11
expand-group.t
5.27
KB
-rw-r--r--
2022-02-11 18:11
faux-export.t
2.97
KB
-rw-r--r--
2022-02-11 18:11
gen-callable.t
574
B
-rw-r--r--
2022-02-11 18:11
group-generator.t
3.69
KB
-rw-r--r--
2022-02-11 18:11
inherited.t
613
B
-rw-r--r--
2022-02-11 18:11
into-level.t
3.06
KB
-rw-r--r--
2022-02-11 18:11
real-export-groupgen.t
1.86
KB
-rw-r--r--
2022-02-11 18:11
real-export-href.t
4.12
KB
-rw-r--r--
2022-02-11 18:11
real-export-setup.t
3.6
KB
-rw-r--r--
2022-02-11 18:11
util-curry.t
1.69
KB
-rw-r--r--
2022-02-11 18:11
util-currychain.t
1.68
KB
-rw-r--r--
2022-02-11 18:11
util-like.t
3.03
KB
-rw-r--r--
2022-02-11 18:11
util-merge.t
1.71
KB
-rw-r--r--
2022-02-11 18:11
util-mixin.t
2.73
KB
-rw-r--r--
2022-02-11 18:11
util-namemap.t
568
B
-rw-r--r--
2022-02-11 18:11
valid-config.t
1.27
KB
-rw-r--r--
2022-02-11 18:11
Save
Rename
#!/usr/bin/perl -T use strict; use warnings; =head1 TEST PURPOSE These tests exercise the handling of collections in the exporter option lists. =cut use Test::More tests => 8; use Data::OptList qw(mkopt_hash); BEGIN { use_ok('Sub::Exporter'); } sub is_defined { my ($class, $value, $arg) = @_; return defined $value; } my $config = { exports => [ qw(circsaw drill handsaw nailgun), hammer => sub { sub { print "BANG BANG BANG\n" } }, ], groups => { default => [ 'handsaw', 'hammer' => { claw => 1 }, ], cutters => [ qw(circsaw handsaw), circsaw => { as => 'buzzsaw' } ], }, collectors => [ 'defaults', brand_preference => sub { 0 }, model_preference => sub { 1 }, sets_own_value => sub { $_[0] = { foo => 10 } }, definedp => \'is_defined', ] }; $config->{$_} = mkopt_hash($config->{$_}) for qw(exports collectors); { my $collection = Sub::Exporter::_collect_collections( $config, [ [ circsaw => undef ], [ defaults => { foo => 1, bar => 2 } ] ], 'main', ); is_deeply( $collection, { defaults => { foo => 1, bar => 2 } }, "collection returned properly from collector", ); } { my $collection = Sub::Exporter::_collect_collections( $config, [ [ sets_own_value => undef ] ], 'main', ); is_deeply( $collection, { sets_own_value => { foo => 10} }, "a collector can alter the stack to change its own value", ); } { my $arg = [ [ defaults => [ 1 ] ], [ defaults => { foo => 1, bar => 2 } ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main'); }; like( $@, qr/collection \S+ provided multiple/, "can't provide multiple collection values", ); } { # because the brand_preference validator always fails, this should die my $arg = [ [ brand_preference => [ 1, 2, 3 ] ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main') }; like( $@, qr/brand_preference failed validation/, "collector validator prevents bad export" ); } { # the definedp collector should require a defined value; this should be ok my $arg = [ [ definedp => {} ] ]; my $collection = Sub::Exporter::_collect_collections($config, $arg, 'main'); is_deeply( $collection, { definedp => {} }, "collector validator allows collection" ); } { # the definedp collector should require a defined value; this should die my $arg = [ [ definedp => undef ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main') }; like( $@, qr/definedp failed validation/, "collector validator prevents bad export" ); } { my $arg = [ [ model_preference => [ 1, 2, 3 ] ] ]; my $collection = Sub::Exporter::_collect_collections($config, $arg, 'main'); is_deeply( $collection, { model_preference => [ 1, 2, 3 ] }, "true-returning validator allows collection", ); }