Test2::Tools::Exports(3) | User Contributed Perl Documentation | Test2::Tools::Exports(3) |
Test2::Tools::Exports - Tools for validating exporters.
These are tools for checking that symbols have been imported into your namespace.
use Test2::Tools::Exports use Data::Dumper; imported_ok qw/Dumper/; not_imported_ok qw/dumper/;
All subs are exported by default.
imported_ok( '$scalar', '@array', '%hash', '&sub', 'also_a_sub' );
@SYMBOLS can contain any number of symbols. Each item in the array must be a string. The string should be the name of a symbol. If a sigil is present then it will search for that specified type, if no sigil is specified it will be used as a sub name.
not_imported_ok( '$scalar', '@array', '%hash', '&sub', 'also_a_sub' );
@SYMBOLS can contain any number of symbols. Each item in the array must be a string. The string should be the name of a symbol. If a sigil is present, then it will search for that specified type. If no sigil is specified, it will be used as a sub name.
Before Perl 5.10, it is very difficult to distinguish between a package scalar that is undeclared vs declared and undefined. Currently "imported_ok" and "not_imported_ok" cannot see package scalars declared using "our $var" unless the variable has been assigned a defined value.
This will pass on recent perls, but fail on perls older than 5.10:
use Test2::Tools::Exports; our $foo; # Fails on perl onlder than 5.10 imported_ok(qw/$foo/);
If $foo is imported from another module, or imported using "use vars qw/$foo/;" then it will work on all supported perl versions.
use Test2::Tools::Exports; use vars qw/$foo/; use Some::Module qw/$bar/; # Always works imported_ok(qw/$foo $bar/);
The source code repository for Test2-Suite can be found at https://github.com/Test-More/Test2-Suite/.
Copyright 2018 Chad Granum <exodist@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://dev.perl.org/licenses/
2020-10-22 | perl v5.34.0 |