```{index} single: Test2::Tools::Exports ``` # Test2::Tools::Exports Tools for validating exporters. ## DESCRIPTION These are tools for checking that symbols have been imported into your namespace. ## SYNOPSIS ```perl use Test2::Tools::Exports use Data::Dumper; imported_ok qw/Dumper/; not_imported_ok qw/dumper/; ``` ## EXPORTS All subs are exported by default. - imported\_ok(@SYMBOLS) Check that the specified symbols exist in the current package. This will not find inherited subs. This will only find symbols in the current package's symbol table. This **WILL NOT** confirm that the symbols were defined outside of the package itself. ```perl 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(@SYMBOLS) Check that the specified symbols do not exist in the current package. This will not find inherited subs. This will only look at symbols in the current package's symbol table. ```perl 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. ## CAVEATS 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: ```perl 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. ```perl use Test2::Tools::Exports; use vars qw/$foo/; use Some::Module qw/$bar/; ## Always works imported_ok(qw/$foo $bar/); ``` ## SOURCE The source code repository for Test2-Suite can be found at `https://github.com/Test-More/test-more/`. ## MAINTAINERS - Chad Granum ## AUTHORS - Chad Granum ## COPYRIGHT Copyright Chad Granum . 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/`