Skip some distros with known test issues
[gitmo/Moose.git] / t / immutable / default_values.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Fatal;
8
9 {
10
11     package Foo;
12     use Moose;
13
14     has 'foo' => ( is => 'rw', default => q{'} );
15     has 'bar' => ( is => 'rw', default => q{\\} );
16     has 'baz' => ( is => 'rw', default => q{"} );
17     has 'buz' => ( is => 'rw', default => q{"'\\} );
18     has 'faz' => ( is => 'rw', default => qq{\0} );
19
20     ::is( ::exception {  __PACKAGE__->meta->make_immutable }, undef, 'no errors making a package immutable when it has default values that could break quoting' );
21 }
22
23 my $foo = Foo->new;
24 is( $foo->foo, q{'},
25     'default value for foo attr' );
26 is( $foo->bar, q{\\},
27     'default value for bar attr' );
28 is( $foo->baz, q{"},
29     'default value for baz attr' );
30 is( $foo->buz, q{"'\\},
31     'default value for buz attr' );
32 is( $foo->faz, qq{\0},
33     'default value for faz attr' );
34
35
36 # Lazy attrs were never broken, but it doesn't hurt to test that they
37 # won't be broken by any future changes.
38 # Also make sure that attributes stay lazy even after being immutable
39
40 {
41
42     package Bar;
43     use Moose;
44
45     has 'foo' => ( is => 'rw', default => q{'}, lazy => 1 );
46     has 'bar' => ( is => 'rw', default => q{\\}, lazy => 1 );
47     has 'baz' => ( is => 'rw', default => q{"}, lazy => 1 );
48     has 'buz' => ( is => 'rw', default => q{"'\\}, lazy => 1 );
49     has 'faz' => ( is => 'rw', default => qq{\0}, lazy => 1 );
50
51     {
52         my $bar = Bar->new;
53         ::ok(!$bar->meta->get_attribute($_)->has_value($bar),
54              "Attribute $_ has no value")
55             for qw(foo bar baz buz faz);
56     }
57
58     ::is( ::exception {  __PACKAGE__->meta->make_immutable }, undef, 'no errors making a package immutable when it has lazy default values that could break quoting' );
59
60     {
61         my $bar = Bar->new;
62         ::ok(!$bar->meta->get_attribute($_)->has_value($bar),
63              "Attribute $_ has no value (immutable)")
64             for(qw(foo bar baz buz faz));
65     }
66
67 }
68
69 my $bar = Bar->new;
70 is( $bar->foo, q{'},
71     'default value for foo attr' );
72 is( $bar->bar, q{\\},
73     'default value for bar attr' );
74 is( $bar->baz, q{"},
75     'default value for baz attr' );
76 is( $bar->buz, q{"'\\},
77     'default value for buz attr' );
78 is( $bar->faz, qq{\0},
79     'default value for faz attr' );
80
81 done_testing;