File: 01-compile.t

package info (click to toggle)
libfilter-signatures-perl 0.19-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 236 kB
  • sloc: perl: 1,321; makefile: 2
file content (67 lines) | stat: -rw-r--r-- 1,703 bytes parent folder | download | duplicates (2)
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;
}
}