Hello community,
here is the log from the commit of package perl-Test-Without-Module for
openSUSE:Factory checked in at 2015-04-15 16:27:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test-Without-Module (Old)
and /work/SRC/openSUSE:Factory/.perl-Test-Without-Module.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Test-Without-Module"
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Test-Without-Module/perl-Test-Without-Module.changes
2013-08-06 12:41:08.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Test-Without-Module.new/perl-Test-Without-Module.changes
2015-04-15 16:27:21.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Apr 14 19:28:49 UTC 2015 - [email protected]
+
+- updated to 0.18
+ see /usr/share/doc/packages/perl-Test-Without-Module/Changes
+
+-------------------------------------------------------------------
Old:
----
Test-Without-Module-0.17.tar.gz
New:
----
Test-Without-Module-0.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Test-Without-Module.spec ++++++
--- /var/tmp/diff_new_pack.d9uvaV/_old 2015-04-15 16:27:21.000000000 +0200
+++ /var/tmp/diff_new_pack.d9uvaV/_new 2015-04-15 16:27:21.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Test-Without-Module
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: perl-Test-Without-Module
-Version: 0.17
+Version: 0.18
Release: 0
%define cpan_name Test-Without-Module
Summary: Test fallback behaviour in absence of modules
@@ -29,9 +29,6 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
-#BuildRequires: perl(My::Module)
-#BuildRequires: perl(Test::Pod)
-#BuildRequires: perl(Test::Without::Module)
%{perl_requires}
%description
@@ -57,6 +54,6 @@
%files -f %{name}.files
%defattr(-,root,root,755)
-%doc Changes MANIFEST.skip README
+%doc Changes README
%changelog
++++++ Test-Without-Module-0.17.tar.gz -> Test-Without-Module-0.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/Changes
new/Test-Without-Module-0.18/Changes
--- old/Test-Without-Module-0.17/Changes 2009-01-18 15:19:25.000000000
+0100
+++ new/Test-Without-Module-0.18/Changes 2014-08-30 15:28:56.000000000
+0200
@@ -3,7 +3,12 @@
Todo:
- Add way to allow only core modules (suggested by SREZIC)
-0.17 xxxxxxxx
+0.18 20140830
+ - Eliminate segfault on Perl 5.8 (by Graham Knop, Karen Etheridge, RT 98207)
+ - Only add the @INC hook once (by Graham Knop, RT #91857)
+ - Updated documentation
+
+0.17 20090118
- Made license explicit in the metadata (for those versions
of EU:MM that support it)
! Changed module comparison from using a regular expression
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/MANIFEST
new/Test-Without-Module-0.18/MANIFEST
--- old/Test-Without-Module-0.17/MANIFEST 2009-01-18 15:23:22.000000000
+0100
+++ new/Test-Without-Module-0.18/MANIFEST 2014-08-30 15:32:08.000000000
+0200
@@ -1,17 +1,20 @@
Changes
+lib/Test/Without/Module.pm
Makefile.PL
MANIFEST
-MANIFEST.skip
+MANIFEST.SKIP
+META.json
+META.yml
README
-lib/Test/Without/Module.pm
t/01-api.t
t/02-block-use-module.t
t/03-block-require-module.t
t/04-import-export.t
-t/embedded-Test-Without-Module.t
+t/05-redefine.t
t/99-manifest.t
t/99-pod.t
t/99-todo.t
t/99-unix-text.t
t/99-versions.t
-META.yml Module meta-data (added by MakeMaker)
+t/embedded-Test-Without-Module.t
+Texts/article.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/MANIFEST.SKIP
new/Test-Without-Module-0.18/MANIFEST.SKIP
--- old/Test-Without-Module-0.17/MANIFEST.SKIP 1970-01-01 01:00:00.000000000
+0100
+++ new/Test-Without-Module-0.18/MANIFEST.SKIP 2014-08-30 15:28:56.000000000
+0200
@@ -0,0 +1,14 @@
+^.cvsignore
+^.lwpcookies
+^.releaserc
+^blib/
+^Test-Without-Module-.*
+CVS/
+^pm_to_blib
+.tar.gz$
+.old$
+^Makefile$
+^Releases/
+^MANIFEST.bak$
+^MYMETA.*
+^.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/MANIFEST.skip
new/Test-Without-Module-0.18/MANIFEST.skip
--- old/Test-Without-Module-0.17/MANIFEST.skip 2003-03-09 13:27:38.000000000
+0100
+++ new/Test-Without-Module-0.18/MANIFEST.skip 1970-01-01 01:00:00.000000000
+0100
@@ -1,12 +0,0 @@
-^.cvsignore
-^.lwpcookies
-^.releaserc
-^blib/
-^Test-Without-Module-.*
-CVS/
-^pm_to_blib
-.tar.gz$
-.old$
-^Makefile$
-^Releases/
-^Texts/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/META.json
new/Test-Without-Module-0.18/META.json
--- old/Test-Without-Module-0.17/META.json 1970-01-01 01:00:00.000000000
+0100
+++ new/Test-Without-Module-0.18/META.json 2014-08-30 15:32:37.000000000
+0200
@@ -0,0 +1,46 @@
+{
+ "abstract" : "Test fallback behaviour in absence of modules",
+ "author" : [
+ "Max Maischein <[email protected]>"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter
version 2.120921",
+ "license" : [
+ "perl_5"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "Test-Without-Module",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "File::Find" : "0",
+ "File::Spec" : "0",
+ "Test::More" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {}
+ }
+ },
+ "release_status" : "stable",
+ "resources" : {
+ "repository" : {
+ "url" : "http://github.com/Corion/test-without-module"
+ }
+ },
+ "version" : "0.18"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/META.yml
new/Test-Without-Module-0.18/META.yml
--- old/Test-Without-Module-0.17/META.yml 2009-01-18 15:23:22.000000000
+0100
+++ new/Test-Without-Module-0.18/META.yml 2014-08-30 15:32:37.000000000
+0200
@@ -1,13 +1,25 @@
---- #YAML:1.0
-name: Test-Without-Module
-version: 0.17
-abstract: Test fallback behaviour in absence of modules
-license: perl
-author:
- - Max Maischein <[email protected]>
-generated_by: ExtUtils::MakeMaker version 6.42
-distribution_type: module
-requires:
+---
+abstract: 'Test fallback behaviour in absence of modules'
+author:
+ - 'Max Maischein <[email protected]>'
+build_requires:
+ File::Find: 0
+ File::Spec: 0
+ Test::More: 0
+configure_requires:
+ ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version
2.120921'
+license: perl
meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.3.html
- version: 1.3
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: Test-Without-Module
+no_index:
+ directory:
+ - t
+ - inc
+requires: {}
+resources:
+ repository: http://github.com/Corion/test-without-module
+version: 0.18
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/Makefile.PL
new/Test-Without-Module-0.18/Makefile.PL
--- old/Test-Without-Module-0.17/Makefile.PL 2008-10-26 20:42:28.000000000
+0100
+++ new/Test-Without-Module-0.18/Makefile.PL 2014-08-30 15:28:56.000000000
+0200
@@ -1,7 +1,7 @@
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
-WriteMakefile(
+WriteMakefile1(
'NAME' => 'Test::Without::Module',
'VERSION_FROM' => 'lib/Test/Without/Module.pm', # finds $VERSION
'PREREQ_PM' => {
@@ -12,9 +12,44 @@
(ABSTRACT_FROM => 'lib/Test/Without/Module.pm', # retrieve abstract from
module
AUTHOR => 'Max Maischein <[email protected]>') : ()),
+ META_MERGE => {
+ resources => {
+ repository => 'http://github.com/Corion/test-without-module',
+ },
+ },
+ BUILD_REQUIRES => {
+ # Fairly long in core
+ 'File::Find' => 0,
+ 'File::Spec' => 0,
+ 'Test::More' => 0,
+ },
+
# Make the version metadata explicit
($ExtUtils::MakeMaker::VERSION >= 6.3002 ?
('LICENSE' => 'perl', ) : ()),
);
+sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by
eumm-upgrade.
+ my %params=@_;
+ my $eumm_version=$ExtUtils::MakeMaker::VERSION;
+ $eumm_version=eval $eumm_version;
+ die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
+ die "License not specified" if not exists $params{LICENSE};
+ if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
+ #EUMM 6.5502 has problems with BUILD_REQUIRES
+ $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} ,
%{$params{BUILD_REQUIRES}} };
+ delete $params{BUILD_REQUIRES};
+ }
+ delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
+ delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
+ delete $params{META_MERGE} if $eumm_version < 6.46;
+ delete $params{META_ADD} if $eumm_version < 6.46;
+ delete $params{LICENSE} if $eumm_version < 6.31;
+ delete $params{AUTHOR} if $] < 5.005;
+ delete $params{ABSTRACT_FROM} if $] < 5.005;
+ delete $params{BINARY_LOCATION} if $] < 5.005;
+
+ WriteMakefile(%params);
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/Texts/article.txt
new/Test-Without-Module-0.18/Texts/article.txt
--- old/Test-Without-Module-0.17/Texts/article.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/Test-Without-Module-0.18/Texts/article.txt 2003-03-09
13:27:38.000000000 +0100
@@ -0,0 +1,269 @@
+Title: Preventing a module from loading
+
+<p>I like modules that provide a dynamic fallback and degrade gracefully
+if some prerequisites are not available instead of requiring modules
+when they can do well without them.</p>
+
+<p>But there is a problem - on my development machine, I have all these
+optional modules installed, but I want to test the behaviour of my
+code without the optional modules. So I want to set up tests where
+the optional modules seem not available. My preferred syntax for this is
+a pragma-like syntax :</p>
+
+<code>
+use Test::Without::Modules qw( HTML::Template );
+use Test::Without::Modules qr/^POE::/;
+</code>
+
+<p>So, most of the magic will have to be installed in a sub called "import()"
+within my (to be written) module.</p>
+
+<p>When you want to muck around with module loading, the only way in Perl
+seems to be to add a code reference into @INC. That code reference
+either returns a filehandle, from which the text will be loaded,
+or undef, which means that the next entry in @INC will be tried.</p>
+<p>
+Things that didn't work :</p>
+
+<code>
+BEGIN { @SAVED_INC = @INC; };
+sub import {
+ @INC = sub {
+ # return undef if it's a blocked module
+ # Look if the module is in @SAVED_INC
+ # Return a filehandle to it
+ };
+};
+</code>
+
+<p>This first variant worked quite well, until I came up to
[cpan://Digest::MD5],
+which wants to load XS code. And the XS code loader looks through @INC,
+it dosen't respect coderefs in @INC, and thus, the loading of Digest::MD5
fails.
+Or rather, Digest::MD5 has a fallback to [cpan://Digest::Perl::MD5], which
+I didn't have installed. So this way will not work as soon as we use any
+module which uses XS code.</p>
+
+<p>So I had to keep all existing directories in @INC, but there was no way to
prevent
+Perl to look through the rest of @INC if my handler returned undef for a
blocked module :
+</p>
+<code>
+BEGIN { @SAVED_INC = @INC; };
+sub import {
+ @INC = sub {
+ # return undef if it's a blocked module
+ };
+};
+</code>
+
+<p>[demerphq] then suggested that I forget about a handler in @INC and muck
instead with
+%INC and a custom import method, that would die whenever that module was
imported
+into a new namespace.</p>
+
+<code>
+sub import {
+ $INC{$module} = 1;
+ *{$module."::import"} = sub {
+ die 'ugh';
+ };
+};
+</code>
+
+<p>But this version didn't work, because one could still require the module,
and most
+checks whether a module is available rely on the meme </p>
+<code>
+ eval { require Optional::Module };
+ if ($@) {
+ # module is not available
+ };
+</code>
+<p>
+But this put me on the right track, I would simply create a faked module on
the fly,
+and return this faked module whenever I want to prevent a module from loading.
I don't
+need to handle the case that a module is allowed, as the rest of @INC will
take care
+of that.</p>
+<code>
+sub import {
+ unshift @INC, sub {
+ # return dummy module filehandle if it's a blocked module
+ };
+};
+</code>
+<p>There are now some technical pitfalls. First, [cpan://IO::String] does not
work in
+an @INC-handler, seemingly Perl wants a real filehandle (or at least,
[cpan://Acme::Intraweb]
+and [cpan://PAR] do it that way as well), so I have to create a tempfile for
every faked module.
+That's not a real concern as my module is intended for testing anyway -
efficiency is
+of no importance.</p>
+<p>Second, what if a module has already been loaded? Then Perl won't go
through @INC at all.
+So we have to scrub %INC as well and clean it of the unwanted modules, in case
they
+have already been loaded.</p>
+<p>After these tries, the algorithm to prevent a module from loading now looks
like the following :</p>
+<code>
+use vars qw( %forbidden );
+sub import {
+ my ($self,@forbidden_modules) = @_;
+ scrub $module
+ for @forbidden_modules;
+ unshift @INC, sub {
+ my (undef,$filename,undef) = @_;
+ if (exists $forbidden{$filename}) {
+ # return faked, failing module
+ };
+ };
+};
+</code>
+<p>The complete module is appended below. If you have suggestions about the
naming convention
+or the usage interface, I'd like to hear about them. If you have any hint on
how to make my
+module into a lexical pragma (<tt>warnings.pm</tt> and <tt>strict.pm</tt>
didn't offer a
+hint to me), I'll be even more interested.</p>
+<code>
+package Test::Without::Module;
+use strict;
+use File::Temp;
+use Carp qw( croak );
+
+use vars qw( %forbidden $VERSION );
+$VERSION = 0.01;
+
+sub import {
+ my ($self,@forbidden_modules) = @_;
+
+ $forbidden{$_} = $_
+ for @forbidden_modules;
+
+ # Scrub %INC, so that loaded modules disappear
+ my ($module);
+ for $module (@forbidden_modules) {
+ scrub $module;
+ };
+
+ # Move our handler to the front of the list
+ @INC = grep { $_ ne \&fake_module } @INC;
+ unshift @INC, \&fake_module;
+};
+
+sub fake_module {
+ my ($self,$module_file,$member_only) = @_;
+ warn $@ if $@;
+
+ my $modulename = file2module($module_file);
+
+ # Deliver a faked, nonworking module
+ if (grep { $modulename =~ $_ } keys %forbidden) {
+
+ my $fh = File::Temp::tmpfile();
+ print $fh <<MODULE;
+package $modulename;
+
+=head1 NAME
+
+$modulename
+
+=head1 SYNOPSIS
+
+!!! THIS IS A FAKED VERSION OF $modulename !!!
+!!! IT WAS CREATED BY Test::Without::Module !!!
+!!! IT SHOULD NEVER END UP IN YOUR lib/ OR site/lib/ !!!
+
+=cut
+
+sub import { undef };
+0;
+MODULE
+ seek $fh, 0,0;
+ return $fh;
+ };
+};
+
+sub unimport {
+ my ($self,@list) = @_;
+ my $module;
+ for $module (@list) {
+ if (exists $forbidden{$module}) {
+ delete $forbidden{$module};
+ scrub $module;
+ } else {
+ croak "Can't allow non-forbidden module $module";
+ };
+ };
+};
+
+sub file2module {
+ my ($mod) = @_;
+ $mod =~ s!/!::!g;
+ $mod =~ s!\.pm$!!;
+ $mod;
+};
+
+sub scrub($) {
+ my ($module) = @_;
+ my $key;
+ for $key (keys %INC) {
+ delete $INC{$key}
+ if (file2module($key) =~ $module);
+ };
+};
+
+1;
+__END__
+
+=head1 NAME
+
+Test::Without::Module - Test fallback behaviour in absence of modules
+
+=head1 SYNOPSIS
+
+=for example begin
+ use Test::Without::Module qw( File::Temp );
+
+ # Now, loading of File::Temp fails :
+ eval { require File::Temp; };
+ warn $@ if $@;
+
+ # Now it works again
+ eval q{ no Test::Without::Module qw( File::Temp ) };
+ eval { require File::Temp; };
+ print "Found File::Temp" unless $@;
+
+=for example end
+
+=head1 DESCRIPTION
+
+This module allows you to deliberately hide modules from a program
+even though they are installed. This is mostly useful for testing modules
+that have a fallback when a certain dependency module is not installed.
+
+=head2 EXPORT
+
+None. All magic is done via C<use Test::Without::Module> and
+C<no Test::Without::Module>.
+
+=begin testing
+ no warnings 'once';
+
+ eval 'use Test::Without::Module qw( File::Temp )';
+ eval 'no Test::Without::Module qw( File::Temp )';
+
+ is_deeply( [keys %Test::Without::Module::forbidden],[],"Module list" );
+ eval { require File::Temp; };
+ is( $@, '', "unimport" );
+
+=end testing
+
+=head1 BUGS
+
+=over 4
+
+=item * There is no lexicalic scoping (yet)
+
+=back
+
+=head1 AUTHOR
+
+Max Maischein, E<lt>[email protected]<gt>
+
+=head1 SEE ALSO
+
+L<Acme::Intraweb>, L<PAR>, L<perlfunc>
+
+=cut
+</code>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/lib/Test/Without/Module.pm
new/Test-Without-Module-0.18/lib/Test/Without/Module.pm
--- old/Test-Without-Module-0.17/lib/Test/Without/Module.pm 2009-01-18
15:21:25.000000000 +0100
+++ new/Test-Without-Module-0.18/lib/Test/Without/Module.pm 2014-08-30
15:29:49.000000000 +0200
@@ -3,9 +3,9 @@
use Carp qw( croak );
use vars qw( $VERSION );
-$VERSION = '0.17';
+$VERSION = '0.18';
-use vars qw( %forbidden );
+use vars qw( %forbidden %fake_modules );
sub get_forbidden_list {
\%forbidden
@@ -18,6 +18,7 @@
for (@forbidden_modules) {
$forbidden->{$_} = $INC{ module2file($_) };
+ $fake_modules{module2file($_)} = [ "package $_;", "0;" ];
};
# Scrub %INC, so that loaded modules disappear
@@ -25,20 +26,16 @@
scrub( $module );
};
- unshift @INC, \&fake_module;
+ @INC = (\&fake_module, grep { !ref || $_ != \&fake_module } @INC);
};
sub fake_module {
my ($self,$module_file,$member_only) = @_;
# Don't touch $@, or .al files will not load anymore????
- my $forbidden = get_forbidden_list;
-
- my $modulename = file2module($module_file);
-
# Deliver a faked, nonworking module
- if (exists $forbidden->{$modulename}) {
- my @faked_module = ("package $modulename;","0;");
+ if (my $faked = $fake_modules{$module_file}) {
+ my @faked_module = @$faked;
return sub { defined ( $_ = shift @faked_module ) };
};
};
@@ -50,11 +47,12 @@
for $module (@list) {
if (exists $forbidden->{$module}) {
- if (defined $forbidden->{$module}) {
- $INC{ module2file($module) } = delete $forbidden->{$module};
- } else {
- delete $forbidden->{$module};
- };
+ my $file = module2file($module);
+ delete $fake_modules{$file};
+ my $path = delete $forbidden->{$module};
+ if (defined $path) {
+ $INC{ $file } = $path;
+ }
} else {
croak "Can't allow non-forbidden module $module";
};
@@ -77,12 +75,7 @@
sub scrub {
my ($module) = @_;
- for my $key (keys %INC) {
- my $fn = file2module($key);
- if ($fn eq $module) {
- delete $INC{$key};
- };
- };
+ delete $INC{module2file($module)};
};
1;
@@ -151,7 +144,7 @@
Much improvement must be thanked to Aristotle from PerlMonks, he pointed me
to a much less convoluted way to fake a module at
-L<http://www.perlmonks.org/index.pl?node=192635>.
+L<https://perlmonks.org?node=192635>.
I also discussed with him an even more elegant way of overriding
CORE::GLOBAL::require, but the parsing of the overridden subroutine
@@ -165,12 +158,28 @@
=head1 AUTHOR
-Copyright (c) 2003-2009 Max Maischein, E<lt>[email protected]<gt>
+Copyright (c) 2003-2014 Max Maischein, E<lt>[email protected]<gt>
=head1 LICENSE
This module is released under the same terms as Perl itself.
+=head1 REPOSITORY
+
+The public repository of this module is
+L<http://github.com/Corion/test-without-module>.
+
+=head1 SUPPORT
+
+The public support forum of this module is
+L<https://perlmonks.org/>.
+
+=head1 BUG TRACKER
+
+Please report bugs in this module via the RT CPAN bug queue at
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=Test-Without-Module>
+or via mail to L<[email protected]>.
+
=head1 SEE ALSO
L<Devel::Hide>, L<Acme::Intraweb>, L<PAR>, L<perlfunc>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/t/05-redefine.t
new/Test-Without-Module-0.18/t/05-redefine.t
--- old/Test-Without-Module-0.17/t/05-redefine.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Test-Without-Module-0.18/t/05-redefine.t 2008-10-20
21:51:42.000000000 +0200
@@ -0,0 +1,26 @@
+#!/usr/bin/perl -w
+use strict;
+use Test::More tests => 1;
+
+use File::Find;
+my @warnings;
+BEGIN {
+ $SIG{__WARN__} = sub {
+ push @warnings, @_;
+ };
+};
+
+use Data::Dumper;
+#BEGIN { diag $INC{"File/Find.pm"}; };
+use Test::Without::Module qw(File::Find);
+
+#BEGIN { diag $INC{"File/Find.pm"}; };
+no Test::Without::Module qw(File::Find);
+#diag $INC{"File/Find.pm"};
+
+require File::Find;
+# diag Dumper \%INC;
+
+is_deeply "@warnings", "", "No warnings were issued upon re-allowing a module";
+
+__END__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Without-Module-0.17/t/99-manifest.t
new/Test-Without-Module-0.18/t/99-manifest.t
--- old/Test-Without-Module-0.17/t/99-manifest.t 2003-11-07
22:06:07.000000000 +0100
+++ new/Test-Without-Module-0.18/t/99-manifest.t 2014-08-30
15:28:56.000000000 +0200
@@ -1,12 +1,12 @@
use strict;
use Test::More;
-# Check that MANIFEST and MANIFEST.skip are sane :
+# Check that MANIFEST and MANIFEST.SKIP are sane :
use File::Find;
use File::Spec;
-my @files = qw( MANIFEST MANIFEST.skip );
+my @files = qw( MANIFEST MANIFEST.SKIP );
plan tests => scalar @files * 4;
for my $file (@files) {