File: year_imports.t

package info (click to toggle)
libmodern-perl-perl 1.20140107-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 120 kB
  • ctags: 5
  • sloc: perl: 331; makefile: 2
file content (142 lines) | stat: -rw-r--r-- 4,700 bytes parent folder | download
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#! perl

use Test::More 0.98;

use Modern::Perl ();

$SIG{__WARN__} = sub
{
    return if $_[0] =~ /Number found where operator expected/;
    return if $_[0] =~ /Do you need to predeclare/;
    return if $_[0] =~ /future reserved word/;
    return if $_[0] =~ /given is experimental/;
    warn shift
};

eval 'sub { given (0) {} }';
isnt $@, '', 'use Modern::Perl () does not enable switch';
eval 'sub { say 0 }';
isnt $@, '', 'use Modern::Perl () does not enable say';
eval 'state $x;';
isnt $@, '', 'use Modern::Perl () does not enable state';
is uc "\xdf", "\xdf", 'Modern::Perl () does not enable unicode_strings';
eval 'sub { return __SUB__ }';
is $@, '', q|use Modern::Perl '2013' does not enable current_sub|;
my $warning = '';
{
    local $SIG{__WARN__} = sub { $warning = shift };
    eval 'fc("tschüß") eq fc("TSCHÜSS")';
    isnt $@, '', q|use Modern::Perl () does not enable fc|;
}

{
    use Modern::Perl '2009';
    eval 'sub { given (0) {} }';
    is $@, '', q|use Modern::Perl '2009' enables switch|;
    eval 'sub { say 0 }';
    is $@, '', q|use Modern::Perl '2009' enables say|;
    eval 'state $x';
    is $@, '', q|use Modern::Perl '2009' enables state|;
    is uc "\xdf", "\xdf", 'but not unicode_strings';
}

{
    use Modern::Perl '2010';
    eval 'sub { given (0) {} }';
    is $@, '', q|use Modern::Perl '2010' enables switch|;
    eval 'sub { say 0 }';
    is $@, '', q|use Modern::Perl '2010' enables say|;
    eval 'state $x';
    is $@, '', q|use Modern::Perl '2010' enables state|;
    is uc "\xdf", "\xdf", 'but not unicode_strings';
}

if ($] >= 5.012)
{
    eval q{
        use Modern::Perl '2011';
        eval 'sub { given (0) {} }';
        is $@, '', q|use Modern::Perl '2011' enables switch|;
        eval 'sub { say 0 }';
        is $@, '', q|use Modern::Perl '2011' enables say|;
        eval 'state $x';
        is $@, '', q|use Modern::Perl '2011' enables state|;
        is uc "\xdf", "SS", '2011 enables unicode_strings';
    };
}

if ($] >= 5.014)
{
    eval q{
        use Modern::Perl '2012';
        eval 'sub { given (0) {} }';
        is $@, '', q|use Modern::Perl '2012' enables switch|;
        eval 'sub { say 0 }';
        is $@, '', q|use Modern::Perl '2012' enables say|;
        eval 'state $x';
        is $@, '', q|use Modern::Perl '2012' enables state|;
        is uc "\xdf", "SS", '2012 enables unicode_strings';
    };
}

if ($] >= 5.016)
{
    eval q{
        use Modern::Perl '2013';
        eval 'sub { given (0) {} }';
        is $@, '', q|use Modern::Perl '2013' enables switch|;
        eval 'sub { say 0 }';
        is $@, '', q|use Modern::Perl '2013' enables say|;
        eval 'state $x';
        is $@, '', q|use Modern::Perl '2013' enables state|;
        is uc "\xdf", "SS", '2013 enables unicode_strings';
        eval 'sub { return __SUB__ }';
        is $@, '', q|use Modern::Perl '2013' enables current_sub|;
        my $warning = '';
        local $SIG{__WARN__} = sub { $warning = shift };
        eval '$[ = 10';
        like $warning, qr/Use of assignment to \$\[ is deprecated/,
            q|use Modern::Perl '2013' disables array_base|;
        eval 'fc("tschüß") eq fc("TSCHÜSS")';
        is $@, '', q|use Modern::Perl '2013' enables fc|;
        eval 'my sub foo {}';
        isnt $@, '', q|use Modern::Perl '2013' should not enable lexical subs|;
    };
    is $@, '', 'this block should succeed';
}

if ($] >= 5.018)
{
    eval q{
        use Modern::Perl '2014';
        eval 'sub { given (0) {} }';
        is $@, '', q|use Modern::Perl '2014' enables switch|;
        eval 'sub { say 0 }';
        is $@, '', q|use Modern::Perl '2014' enables say|;
        eval 'state $x';
        is $@, '', q|use Modern::Perl '2014' enables state|;
        is uc "\xdf", "SS", '2014 enables unicode_strings';
        eval 'sub { return __SUB__ }';
        is $@, '', q|use Modern::Perl '2014' enables current_sub|;
        my $warning = '';
        local $SIG{__WARN__} = sub { $warning = shift };
        eval '$[ = 10';
        like $warning, qr/Use of assignment to \$\[ is deprecated/,
            q|use Modern::Perl '2014' disables array_base|;
        eval 'fc("tschüß") eq fc("TSCHÜSS")';
        is $@, '', q|use Modern::Perl '2014' enables fc|;
        eval 'my sub foo {}';
        isnt $@, '', q|use Modern::Perl '2014' does not enable lexical subs|;
    };
    is $@, '', 'this block should succeed';
}

eval 'sub { given (0) {} }';
isnt $@, "", 'switch feature does not leak out';
eval 'sub { say 0 }';
isnt $@, '', 'say feature does not leak out';
eval 'state $x';
isnt $@, '', 'state feature does not leak out';
is uc "\xdf", "\xdf", 'unicode_strings feature does not leak out';

done_testing;