Release commit for 0.006022
[p5sagit/Devel-Declare.git] / t / quote.t
1 use strict;
2 use warnings;
3 use Test::More tests => 15;
4
5 use Devel::Declare 'method' => sub {};
6 use File::Spec;
7
8 sub test_eval;
9
10 QUOTE: {
11     test_eval 'qq/method/';
12     test_eval 'q/method/';
13     test_eval "'method'";
14     test_eval '"method"';
15     test_eval 'qw/method/';
16     test_eval '<<method;
17 tum ti tum
18 method';
19     test_eval 'my $x = { method => 42 }';
20 }
21
22 SYSTEM: {
23     test_eval 'sub {`method`}'; # compiled to prevent calling arbitrary exe!
24     test_eval 'sub { qx{method} }';
25 }
26
27 REGEX: {
28     local $_=''; # the passing results will act on $_
29     test_eval 'qr/method/';
30     test_eval '/method/';
31     test_eval 's/method//';
32     test_eval 'tr/method/METHOD/';
33 }
34
35 FILE: {
36     test_eval q{ no warnings 'reserved'; open method, '<', File::Spec->devnull };
37     test_eval '<method>';
38 }
39
40 sub test_eval {
41     my $what = shift;
42     eval $what;
43     ok !$@, "$what" or d($@);
44 }
45 {
46   my %seen;
47   sub d { # diag the error the first time we get it
48     my $err = shift;
49     $err =~s/ at .*$//;
50     $seen{$err}++ or diag $err;
51   }
52 }