This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate perl
[perl5.git] / lib / Attribute / Handlers / t / multi.t
index c327b39..cddab91 100644 (file)
@@ -11,10 +11,10 @@ CHECK { $main::phase++ }
 # (correspondingly "not ok 13") depending on the success of chunk 13
 # of the test code):
 
-sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not "]; }
+sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not ", defined($_[2])?$_[2]:""]; }
 
 END { print "1..$::count\n";
-      print map "$_->[1]ok $_->[0]\n",
+      print map "$_->[1]ok $_->[0] $_->[2]\n",
                sort {$a->[0]<=>$b->[0]}
                        grep $_->[0], @::results }
 
@@ -143,25 +143,44 @@ sub Dummy::DESTROY { $out .= "bye\n" }
 ok( $out eq "begin\nbye\n", 45 );
 
 { my $dummy : Dummy;  $dummy = bless {}, 'Dummy'; }
-ok( $out eq "begin\nbye\nbye\n", 46 );
-
+if($] < 5.008) {
+ok( 1, 46, " # skip lexicals are not runtime prior to 5.8");
+} else {
+ok( $out eq "begin\nbye\nbye\n", 46);
+}
 # are lexical attributes reapplied correctly?
 sub dummy { my $dummy : Dummy; }
 $applied = 0;
 dummy(); dummy();
+if($] < 5.008) {
+ok(1, 47, " # skip does not work with perl prior to 5.8");
+} else {
 ok( $applied == 2, 47 );
-
+}
 # 45-47 again, but for our variables
 $out = "begin\n";
 { our $dummy;          $dummy = bless {}, 'Dummy'; }
 ok( $out eq "begin\n", 48 );
-{ our $dummy : Dummy;  $dummy = bless {}, 'Dummy'; }
+{ no warnings; our $dummy : Dummy;  $dummy = bless {}, 'Dummy'; }
 ok( $out eq "begin\nbye\n", 49 );
 undef $::dummy;
 ok( $out eq "begin\nbye\nbye\n", 50 );
 
 # are lexical attributes reapplied correctly?
-sub dummy_our { our $banjo : Dummy; }
+sub dummy_our { no warnings; our $banjo : Dummy; }
 $applied = 0;
 dummy_our(); dummy_our();
 ok( $applied == 0, 51 );
+
+sub UNIVERSAL::Stooge :ATTR(END) {};
+eval {
+       local $SIG{__WARN__} = sub { die @_ };
+       my $groucho : Stooge;
+};
+my $match = $@ =~ /^Won't be able to apply END handler/; 
+if($] < 5.008) {
+ok(1,52 ,"# Skip, no difference between lexical handlers and normal handlers prior to 5.8");
+} else {
+ok( $match, 52 );
+}
+