summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/t/use_ok.t
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Test-Simple/t/use_ok.t')
-rw-r--r--cpan/Test-Simple/t/use_ok.t103
1 files changed, 103 insertions, 0 deletions
diff --git a/cpan/Test-Simple/t/use_ok.t b/cpan/Test-Simple/t/use_ok.t
new file mode 100644
index 0000000000..9e858bc75e
--- /dev/null
+++ b/cpan/Test-Simple/t/use_ok.t
@@ -0,0 +1,103 @@
+#!/usr/bin/perl -w
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+use Test::More;
+
+note "Basic use_ok"; {
+ package Foo::one;
+ ::use_ok("Symbol");
+ ::ok( defined &gensym, 'use_ok() no args exports defaults' );
+}
+
+
+note "With one arg"; {
+ package Foo::two;
+ ::use_ok("Symbol", qw(qualify));
+ ::ok( !defined &gensym, ' one arg, defaults overridden' );
+ ::ok( defined &qualify, ' right function exported' );
+}
+
+
+note "Multiple args"; {
+ package Foo::three;
+ ::use_ok("Symbol", qw(gensym ungensym));
+ ::ok( defined &gensym && defined &ungensym, ' multiple args' );
+}
+
+
+note "Defining constants"; {
+ package Foo::four;
+ my $warn; local $SIG{__WARN__} = sub { $warn .= shift; };
+ ::use_ok("constant", qw(foo bar));
+ ::ok( defined &foo, 'constant' );
+ ::is( $warn, undef, 'no warning');
+}
+
+
+note "use Module VERSION"; {
+ package Foo::five;
+ ::use_ok("Symbol", 1.02);
+}
+
+
+note "use Module VERSION does not call import"; {
+ package Foo::six;
+ ::use_ok("NoExporter", 1.02);
+}
+
+
+{
+ package Foo::seven;
+ local $SIG{__WARN__} = sub {
+ # Old perls will warn on X.YY_ZZ style versions. Not our problem
+ warn @_ unless $_[0] =~ /^Argument "\d+\.\d+_\d+" isn't numeric/;
+ };
+ ::use_ok("Test::More", 0.47);
+}
+
+
+note "Signals are preserved"; {
+ package Foo::eight;
+ local $SIG{__DIE__};
+ ::use_ok("SigDie");
+ ::ok(defined $SIG{__DIE__}, ' SIG{__DIE__} preserved');
+}
+
+
+note "Line numbers preserved"; {
+ my $package = "that_cares_about_line_numbers";
+
+ # Store the output of caller.
+ my @caller;
+ {
+ package that_cares_about_line_numbers;
+
+ sub import {
+ @caller = caller;
+ return;
+ }
+
+ $INC{"$package.pm"} = 1; # fool use into thinking it's already loaded
+ }
+
+ ::use_ok($package);
+ my $line = __LINE__-1;
+ ::is( $caller[0], __PACKAGE__, "caller package preserved" );
+ ::is( $caller[1], __FILE__, " file" );
+ ::is( $caller[2], $line, " line" );
+}
+
+
+note "not confused by functions vs class names"; {
+ $INC{"ok.pm"} = 1;
+ use_ok("ok"); # ok is a function inside Test::More
+
+ $INC{"Foo/bar.pm"} = 1;
+ sub Foo::bar { 42 }
+ use_ok("Foo::bar"); # Confusing a class name with a function name
+}
+
+done_testing;