Test-Expander/t/Test/Expander/import.t

99 lines
2.8 KiB
Perl

#!/usr/bin/env perl
use v5.14;
use warnings
FATAL => qw(all),
NONFATAL => qw(deprecated exec internal malloc newline once portable redefine recursion uninitialized);
my (@functions, @variables);
BEGIN {
use Const::Fast;
use File::Temp qw(tempdir tempfile);
use Path::Tiny qw(cwd path);
use Test::Output;
use Test::Warn;
use Test2::Tools::Explain;
use Test2::V0;
@functions = (
@{Const::Fast::EXPORT},
@{Test::Files::EXPORT},
@{Test::Output::EXPORT},
@{Test::Warn::EXPORT},
@{Test2::Tools::Explain::EXPORT},
@{Test2::V0::EXPORT},
qw(tempdir tempfile),
qw(cwd path),
qw(BAIL_OUT dies_ok is_deeply lives_ok new_ok require_ok use_ok),
);
@variables = qw($CLASS $METHOD $METHOD_REF $TEMP_DIR $TEMP_FILE);
}
use Scalar::Readonly qw(readonly_off);
use Test::Builder::Tester tests => @functions + @variables + 4;
use Test::Expander -target => 'Test::Expander',
-tempdir => { CLEANUP => 1 },
-tempfile => { UNLINK => 1 };
use Test::Expander::Constants qw($INVALID_VALUE $UNKNOWN_OPTION);
foreach my $function (sort @functions) {
my $title = "$CLASS->can('$function')";
test_out("ok 1 - $title");
can_ok($CLASS, $function);
test_test($title);
}
foreach my $variable (sort @variables) {
my $title = "$CLASS exports '$variable'";
test_out("ok 1 - $title");
ok(eval("defined($variable)"), $title); ## no critic (ProhibitStringyEval)
test_test($title);
}
my $title;
my $expected;
$title = "invalid option value of '-tempdir'";
$expected = $INVALID_VALUE =~ s/%s/.+/gr;
readonly_off($CLASS);
readonly_off($METHOD);
readonly_off($METHOD_REF);
readonly_off($TEMP_DIR);
readonly_off($TEMP_FILE);
test_out("ok 1 - $title");
like(dies { $CLASS->$METHOD(-tempdir => 1) }, qr/$expected/, $title);
test_test($title);
$title = "invalid option value of '-tempfile'";
$expected = $INVALID_VALUE =~ s/%s/.+/gr;
readonly_off($CLASS);
readonly_off($METHOD);
readonly_off($METHOD_REF);
readonly_off($TEMP_DIR);
readonly_off($TEMP_FILE);
test_out("ok 1 - $title");
like(dies { $CLASS->$METHOD(-tempfile => 1) }, qr/$expected/, $title);
test_test($title);
$title = 'unknown option with some value';
$expected = $UNKNOWN_OPTION =~ s/%s/.+/gr;
readonly_off($CLASS);
readonly_off($METHOD);
readonly_off($METHOD_REF);
readonly_off($TEMP_DIR);
readonly_off($TEMP_FILE);
test_out("ok 1 - $title");
like(dies { $CLASS->$METHOD(unknown => 1) }, qr/$expected/, $title);
test_test($title);
$title = 'unknown option without value';
$expected = $UNKNOWN_OPTION =~ s/%s/.+/r =~ s/%s//r;
readonly_off($CLASS);
readonly_off($METHOD);
readonly_off($METHOD_REF);
readonly_off($TEMP_DIR);
readonly_off($TEMP_FILE);
test_out("ok 1 - $title");
like(dies { $CLASS->$METHOD('unknown') }, qr/$expected/, $title);
test_test($title);