first commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#!/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);
|
||||
Reference in New Issue
Block a user