]> git.vpit.fr Git - perl/modules/Test-Leaner.git/blobdiff - lib/Test/Leaner.pm
Adjust copyright for our fallback version of _reftype()
[perl/modules/Test-Leaner.git] / lib / Test / Leaner.pm
index b07fbcac25b8e29e9418b09f32bbcaaa3c465a6c..d03741ff2764f42a56b68d2973a0283e69e5a27e 100644 (file)
@@ -10,11 +10,11 @@ Test::Leaner - A slimmer Test::More for when you favor performance over complete
 
 =head1 VERSION
 
-Version 0.02
+Version 0.03
 
 =cut
 
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 =head1 SYNOPSIS
 
@@ -45,6 +45,10 @@ L</pass>, L</fail>, L</ok>, L</is>, L</isnt>, L</like>, L</unlike>, L</cmp_ok> a
 
 =item *
 
+C<isn't> (the sub C<t> in package C<isn>) is not aliased to L</isnt>.
+
+=item *
+
 L</like> and L</unlike> don't special case regular expressions that are passed as C<'/.../'> strings.
 A string regexp argument is always treated as the source of the regexp, making C<like $text, $rx> and C<like $text, qr[$rx]> equivalent to each other and to C<cmp_ok $text, '=~', $rx> (and likewise for C<unlike>).
 
@@ -161,14 +165,13 @@ if ($ENV{PERL_TEST_LEANER_USES_TEST_MORE}) {
  my $leaner_stash = \%Test::Leaner::;
  my $more_stash   = \%Test::More::;
 
- my %valid_imports;
+ my %stubbed;
 
  for (@EXPORT) {
   my $replacement = exists $more_stash->{$_} ? *{$more_stash->{$_}}{CODE}
                                              : undef;
-  if (defined $replacement) {
-   $valid_imports{$_} = 1;
-  } else {
+  unless (defined $replacement) {
+   $stubbed{$_}++;
    $replacement = sub {
     @_ = ("$_ is not implemented in this version of Test::More");
     goto &croak;
@@ -179,18 +182,27 @@ if ($ENV{PERL_TEST_LEANER_USES_TEST_MORE}) {
  }
 
  my $import = sub {
-  shift;
+  my $class = shift;
 
   my @imports = &_handle_import_args;
-  @imports = @EXPORT unless @imports;
+  if (@imports == grep /^!/, @imports) {
+   # All imports are negated, or @imports is empty
+   my %negated;
+   /^!(.*)/ and ++$negated{$1} for @imports;
+   push @imports, grep !$negated{$_}, @EXPORT;
+  }
+
   my @test_more_imports;
   for (@imports) {
-   if ($valid_imports{$_}) {
-    push @test_more_imports, $_;
-   } else {
+   if ($stubbed{$_}) {
     my $pkg = caller;
     no strict 'refs';
     *{$pkg."::$_"} = $leaner_stash->{$_};
+   } elsif (/^!/ or !exists $more_stash->{$_} or exists $leaner_stash->{$_}) {
+    push @test_more_imports, $_;
+   } else {
+    # Croak for symbols in Test::More but not in Test::Leaner
+    Exporter::import($class, $_);
    }
   }
 
@@ -870,7 +882,13 @@ You can find documentation for this module with the perldoc command.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2010 Vincent Pit, all rights reserved.
+Copyright 2010,2011 Vincent Pit, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+Except for the fallback implementation of the internal C<_reftype> function, which has been taken from L<Scalar::Util> and is
+
+Copyright 1997-2007 Graham Barr, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.