1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#!perl -w
use strict;
use Test::More tests => 8;
use Data::Dumper;
BEGIN{ $ENV{FORCE_FILTER_SIGNATURES} = 1; };
use vars '$TODO';
$TODO = "Eval-compile and Filter::Simple don't play together";
my $sub = eval <<'PERL';
use Filter::signatures;
use feature 'signatures';
sub ($name, $value) {
return "'$name' is '$value'"
}
PERL
SKIP: {
is ref $sub, 'CODE', "we can compile a simple subroutine"
or skip $@ => 1;
is $sub->("Foo", 'bar'), "'Foo' is 'bar'", "Passing parameters works";
}
$sub = eval <<'PERL';
use Filter::signatures;
use feature 'signatures';
sub ($name, $value, @) {
return "'$name' is '$value'"
}
PERL
SKIP: {
is ref $sub, 'CODE', "we can compile a simple subroutine"
or skip $@ => 2;
{
my @warnings;
local $SIG{__WARN__} = sub { push @warnings, \@_};
is $sub->("Foo", 'bar', 'baz'), "'Foo' is 'bar'", "Passing parameters works";
is_deeply \@warnings, [], "No warnings get raised during call"
or diag Dumper \@warnings;
}
}
# Test our synopsis
$sub = eval <<'PERL';
use Filter::signatures;
no warnings 'experimental::signatures'; # does not raise an error
use feature 'signatures'; # this now works on <5.16 as well
sub ( $name ) {
"Hello $name";
}
PERL
SKIP: {
is ref $sub, 'CODE', "we can compile a simple subroutine"
or skip $@ => 2;
{
my @warnings;
local $SIG{__WARN__} = sub { push @warnings, \@_};
is $sub->('world'), "Hello world", "Passing parameters works";
is_deeply \@warnings, [], "No warnings get raised during call"
or diag Dumper \@warnings;
}
}
|