]> git.vpit.fr Git - perl/modules/subs-auto.git/commitdiff
Add prototype tests in t/12-proto.t
authorVincent Pit <vince@profvince.com>
Sat, 30 Aug 2008 20:14:16 +0000 (22:14 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 30 Aug 2008 20:14:16 +0000 (22:14 +0200)
MANIFEST
t/12-proto.t [new file with mode: 0644]

index bbcbcbf9a10d869dd86635cc3efab2ea1974681f..71dafbeed7637a17d1a202da2ad8e9ad2f6d7a69 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -9,6 +9,7 @@ t/00-load.t
 t/05-args.t
 t/10-base.t
 t/11-pkg.t
+t/12-proto.t
 t/90-boilerplate.t
 t/91-pod.t
 t/92-pod-coverage.t
diff --git a/t/12-proto.t b/t/12-proto.t
new file mode 100644 (file)
index 0000000..db7b135
--- /dev/null
@@ -0,0 +1,35 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 7;
+
+my $foo;
+sub foo ($) { $foo = $_[0] };
+
+my $baz;
+eval q|
+ use warnings qw/FATAL redefine prototype/;
+ sub main::baz ($) { $baz = $_[0] }
+|;
+like($@, qr/Prototype\s+mismatch\s*:\s+sub\s+main::baz\s*:\s+none\s+vs\s+\(\$\)/, 'baz appears as prototyped');
+
+use subs::auto;
+
+eval { my @x = (1, 5); foo @x };
+is($@, '', 'foo was compiled ok');
+is($foo, 2, 'foo was called with the right arguments');
+
+my $bar;
+sub bar (\@) { $bar = 0; $bar += $_ for grep defined, @{$_[0]}  }
+
+eval { my @x = (2, 3, 4); bar @x };
+is($@, '', 'bar was compiled ok');
+is($bar, 9, 'bar was called with the right arguments');
+
+eval { baz 5 };
+like($@, qr/^Undefined\s+subroutine\s+&?main::baz/,'baz couldn\'t be compiled');
+is($baz, undef, 'baz can\'t be called because of the prototype mismatch');
+
+no subs::auto;