From 6615f365c3cea887645a1cdc186b7a7f7e9fe93e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 19 Aug 2012 06:18:00 -0500 Subject: more tests --- t/defaults.t | 13 +++++++++++++ t/name.t | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 t/name.t diff --git a/t/defaults.t b/t/defaults.t index 0780f50..7f710b6 100644 --- a/t/defaults.t +++ b/t/defaults.t @@ -32,4 +32,17 @@ is(bar(7), "ran sub, got 19"); like($warning, qr/Use of uninitialized value \$baz in addition \(\+\)/); } +fun baz ($a, $b = our $FOO) { + return "$a $b"; +} + +{ + no warnings 'misc'; # 'not imported' warning because we use $FOO later + eval '$FOO'; + like($@, qr/Global symbol "\$FOO" requires explicit package name/, "doesn't leak scope"); +} + +our $FOO = "abc"; +is(baz("123"), "123 abc"); + done_testing; diff --git a/t/name.t b/t/name.t new file mode 100644 index 0000000..74195fe --- /dev/null +++ b/t/name.t @@ -0,0 +1,47 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Carp; + +my $file = __FILE__; +my $line = __LINE__; + +{ + package Foo; + use Fun; + fun foo ($x, $y) { + Carp::confess "$x $y"; + } + + eval { + foo("abc", "123"); + }; + + my $line_confess = $line + 6; + my $line_foo = $line + 10; + + ::like($@, qr/^abc 123 at $file line $line_confess\.\n\tFoo::foo\('abc', 123\) called at $file line $line_foo/); +} + +SKIP: { skip "Sub::Name required", 1 unless eval { require Sub::Name }; + +{ + package Bar; + use Fun; + *bar = Sub::Name::subname(bar => fun ($a, $b) { Carp::confess($a + $b) }); + + eval { + bar(4, 5); + }; + + my $line_confess = $line + 24; + my $line_bar = $line + 27; + + ::like($@, qr/^9 at $file line $line_confess\.\n\tBar::bar\(4, 5\) called at $file line $line_bar/); +} + +} + +done_testing; -- cgit v1.2.3