Author: phred
Date: Fri Dec 21 08:22:23 2007
New Revision: 606234

URL: http://svn.apache.org/viewvc?rev=606234&view=rev
Log:
Matt Sergeant has graciously donated Apache::Reload to the ASF.  This commit
moves Apache2::Reload from the mod_perl core to the Apache::Reload distribution,
including svn mv's of a few files in changeset 606232 from the mod_perl core
to this distro.

Reviewed in part by Gozer, Phillip, and Geoff.

Added:
    perl/Apache-Reload/trunk/lib/Apache2/
    perl/Apache-Reload/trunk/lib/Apache2/Reload.pm
      - copied, changed from r594783, perl/modperl/trunk/lib/Apache2/Reload.pm
    perl/Apache-Reload/trunk/t/conf/
    perl/Apache-Reload/trunk/t/conf/extra.last.conf.in
    perl/Apache-Reload/trunk/t/lib/
    perl/Apache-Reload/trunk/t/lib/Apache/
    perl/Apache-Reload/trunk/t/lib/Apache/TestReload.pm
    perl/Apache-Reload/trunk/t/lib/Apache2/
    perl/Apache-Reload/trunk/t/lib/Apache2/TestReload.pm
      - copied, changed from r594783, 
perl/modperl/trunk/t/response/TestModules/reload.pm
    perl/Apache-Reload/trunk/t/reload.t
      - copied, changed from r594783, perl/modperl/trunk/t/modules/reload.t
Modified:
    perl/Apache-Reload/trunk/Changes
    perl/Apache-Reload/trunk/MANIFEST
    perl/Apache-Reload/trunk/Makefile.PL
    perl/Apache-Reload/trunk/README
    perl/Apache-Reload/trunk/RELEASE
    perl/Apache-Reload/trunk/lib/Apache/Reload.pm

Modified: perl/Apache-Reload/trunk/Changes
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/Changes?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/Changes (original)
+++ perl/Apache-Reload/trunk/Changes Fri Dec 21 08:22:23 2007
@@ -6,7 +6,17 @@
 
 =over 1
 
-=item 0.08-dev
+=item 0.10-dev
+
+Apache::Reload and Apache2::Reload bundled for CPAN release
+This release incorporates unreleased changes in 0.08 and 0.09
+[Fred Moyer <[EMAIL PROTECTED]>]
+
+=item 0.09
+
+Apache2::Reload was part of mod_perl2 core in this version
+
+=item 0.08
 
 Remove modified modules before reloading them
 [Javier Ureuen Val]

Modified: perl/Apache-Reload/trunk/MANIFEST
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/MANIFEST?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/MANIFEST (original)
+++ perl/Apache-Reload/trunk/MANIFEST Fri Dec 21 08:22:23 2007
@@ -3,4 +3,9 @@
 README
 LICENSE
 lib/Apache/Reload.pm
+lib/Apache2/Reload.pm
+t/reload.t
+t/lib/Apache/TestReload.pm
+t/lib/Apache2/TestReload.pm
 RELEASE
+Changes

Modified: perl/Apache-Reload/trunk/Makefile.PL
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/Makefile.PL?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/Makefile.PL (original)
+++ perl/Apache-Reload/trunk/Makefile.PL Fri Dec 21 08:22:23 2007
@@ -38,9 +38,9 @@
     require ModPerl::MM;
     ModPerl::MM::WriteMakefile(
                                %common_opts,
-                               VERSION_FROM    => "lib/Apache/Reload.pm",
-                               NAME            => "Apache::Reload",
-                               ABSTRACT_FROM   => 'lib/Apache/Reload.pm',
+                               VERSION_FROM    => "lib/Apache2/Reload.pm",
+                               NAME            => "Apache2::Reload",
+                               ABSTRACT_FROM   => 'lib/Apache2/Reload.pm',
                               );
 }
 

Modified: perl/Apache-Reload/trunk/README
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/README?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/README (original)
+++ perl/Apache-Reload/trunk/README Fri Dec 21 08:22:23 2007
@@ -101,6 +101,10 @@
 AUTHOR
     Matt Sergeant, [EMAIL PROTECTED]
 
+MAINTAINERS
+
+the mod_perl developers, [EMAIL PROTECTED]
+
 SEE ALSO
     Apache::StatINC, Stonehenge::Reload
 

Modified: perl/Apache-Reload/trunk/RELEASE
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/RELEASE?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/RELEASE (original)
+++ perl/Apache-Reload/trunk/RELEASE Fri Dec 21 08:22:23 2007
@@ -40,8 +40,8 @@
 
   a. edit ./Changes:
      - find lib -type f -name "*.pm" | \
-         xargs perl -pi -e 's,0.08-dev,0.08-rc1,g'
-     - perl -pi -e 's,0.08-dev,0.08-rc1,g' Changes
+         xargs perl -pi -e 's,0.10-dev,0.10-rc1,g'
+     - perl -pi -e 's,0.10-dev,0.10-rc1,g' Changes
 
      - don't commit these (see dev@ archives)
 
@@ -60,7 +60,7 @@
      o dev/perl.apache.org
      o modperl/perl.apache.org
 
-  Subject: [RELEASE CANDIDATE] Apache-Reload 0.08 RC\d+
+  Subject: [RELEASE CANDIDATE] Apache-Reload 0.10 RC\d+
 
    (or maybe longer to give most people a chance to catch up). no need
    to tag this package
@@ -95,7 +95,7 @@
 5. Announce the package
 
   a. post ... to the modperl, announce lists
-  Subject: [ANNOUNCE] Apache-Reload 0.08
+  Subject: [ANNOUNCE] Apache-Reload 0.10
      include 
   - MD5 sig (as it comes from CPAN upload announce).
   - the latest Changes
@@ -107,7 +107,7 @@
   b. edit ./Changes:
      - start a new item with incremented version + '-dev'
 
-  =item 0.92-dev
+  =item 0.11-dev
 
   c. bump up version numbers in this file to make it easier to do the
      next release.
@@ -115,4 +115,4 @@
      $ perl -pi -e 's/(\d+)\.(\d+)/join(".", $1, $2+1)/eg' RELEASE
 
   d. commit Changes
-     % svn ci -m "start 0.92-dev cycle" Changes RELEASE lib/Apache/Reload.pm
+     % svn ci -m "start 0.11-dev cycle" Changes RELEASE lib/Apache/Reload.pm

Modified: perl/Apache-Reload/trunk/lib/Apache/Reload.pm
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/lib/Apache/Reload.pm?rev=606234&r1=606233&r2=606234&view=diff
==============================================================================
--- perl/Apache-Reload/trunk/lib/Apache/Reload.pm (original)
+++ perl/Apache-Reload/trunk/lib/Apache/Reload.pm Fri Dec 21 08:22:23 2007
@@ -17,7 +17,7 @@
 
 use strict;
 
-$Apache::Reload::VERSION = '0.08';
+$Apache::Reload::VERSION = '0.10';
 
 use vars qw(%INCS %Stat $TouchTime %UndefFields);
 
@@ -261,6 +261,10 @@
 =head1 AUTHOR
 
 Matt Sergeant, [EMAIL PROTECTED]
+
+=head1 MAINTAINERS
+
+the mod_perl developers, [EMAIL PROTECTED]
 
 =head1 SEE ALSO
 

Copied: perl/Apache-Reload/trunk/lib/Apache2/Reload.pm (from r594783, 
perl/modperl/trunk/lib/Apache2/Reload.pm)
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/lib/Apache2/Reload.pm?p2=perl/Apache-Reload/trunk/lib/Apache2/Reload.pm&p1=perl/modperl/trunk/lib/Apache2/Reload.pm&r1=594783&r2=606234&rev=606234&view=diff
==============================================================================
--- perl/modperl/trunk/lib/Apache2/Reload.pm (original)
+++ perl/Apache-Reload/trunk/lib/Apache2/Reload.pm Fri Dec 21 08:22:23 2007
@@ -20,7 +20,7 @@
 
 use mod_perl2;
 
-our $VERSION = '0.09';
+our $VERSION = '0.10';
 
 use Apache2::Const -compile => qw(OK);
 
@@ -182,4 +182,391 @@
 }
 
 1;
+
 __END__
+
+=head1 NAME
+
+Apache2::Reload - Reload Perl Modules when Changed on Disk
+
+=head1 Synopsis
+
+  # Monitor and reload all modules in %INC:
+  # httpd.conf:
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+
+  # when working with protocols and connection filters
+  # PerlPreConnectionHandler Apache2::Reload
+
+  # Reload groups of modules:
+  # httpd.conf:
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "ModPerl::* Apache2::*"
+  #PerlSetVar ReloadDebug On
+  
+  # Reload a single module from within itself:
+  package My::Apache2::Module;
+  use Apache2::Reload;
+  sub handler { ... }
+  1;
+
+=head1 Description
+
+C<Apache2::Reload> reloads modules that change on the disk.
+
+When Perl pulls a file via C<require>, it stores the filename in the
+global hash C<%INC>.  The next time Perl tries to C<require> the same
+file, it sees the file in C<%INC> and does not reload from disk.  This
+module's handler can be configured to iterate over the modules in
+C<%INC> and reload those that have changed on disk or only specific
+modules that have registered themselves with C<Apache2::Reload>. It can
+also do the check for modified modules, when a special touch-file has
+been modified.
+
+Note that C<Apache2::Reload> operates on the current context of
+C<@INC>.  Which means, when called as a C<Perl*Handler> it will not
+see C<@INC> paths added or removed by C<ModPerl::Registry> scripts, as
+the value of C<@INC> is saved on server startup and restored to that
+value after each request.  In other words, if you want
+C<Apache2::Reload> to work with modules that live in custom C<@INC>
+paths, you should modify C<@INC> when the server is started.  Besides,
+C<'use lib'> in the startup script, you can also set the C<PERL5LIB>
+variable in the httpd's environment to include any non-standard 'lib'
+directories that you choose.  For example, to accomplish that you can
+include a line:
+
+  PERL5LIB=/home/httpd/perl/extra; export PERL5LIB
+
+in the script that starts Apache. Alternatively, you can set this
+environment variable in I<httpd.conf>:
+
+  PerlSetEnv PERL5LIB /home/httpd/perl/extra
+
+=head2 Monitor All Modules in C<%INC>
+
+To monitor and reload all modules in C<%INC> at the beginning of
+request's processing, simply add the following configuration to your
+I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+
+When working with connection filters and protocol modules
+C<Apache2::Reload> should be invoked in the pre_connection stage:
+
+  PerlPreConnectionHandler Apache2::Reload
+
+See also the discussion on
+C<L<PerlPreConnectionHandler|docs::2.0::user::handlers::protocols/PerlPreConnectionHandler>>.
+
+=head2 Register Modules Implicitly
+
+To only reload modules that have registered with C<Apache2::Reload>,
+add the following to the I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  # ReloadAll defaults to On
+
+Then any modules with the line:
+
+  use Apache2::Reload;
+
+Will be reloaded when they change.
+
+=head2 Register Modules Explicitly
+
+You can also register modules explicitly in your I<httpd.conf> file
+that you want to be reloaded on change:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "My::Foo My::Bar Foo::Bar::Test"
+
+Note that these are split on whitespace, but the module list B<must>
+be in quotes, otherwise Apache tries to parse the parameter list.
+
+The C<*> wild character can be used to register groups of files under
+the same namespace. For example the setting:
+
+  PerlSetVar ReloadModules "ModPerl::* Apache2::*"
+
+will monitor all modules under the namespaces C<ModPerl::> and
+C<Apache2::>.
+
+=head2 Monitor Only Certain Sub Directories
+
+To reload modules only in certain directories (and their
+subdirectories) add the following to the I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadDirectories "/tmp/project1 /tmp/project2"
+
+You can further narrow the list of modules to be reloaded from the
+chosen directories with C<ReloadModules> as in:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadDirectories "/tmp/project1 /tmp/project2"
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "MyApache2::*"
+
+In this configuration example only modules from the namespace
+C<MyApache2::> found in the directories I</tmp/project1/> and
+I</tmp/project2/> (and their subdirectories) will be reloaded.
+
+=head2 Special "Touch" File
+
+You can also declare a file, which when gets C<touch(1)>ed, causes the
+reloads to be performed. For example if you set:
+
+  PerlSetVar ReloadTouchFile /tmp/reload_modules
+
+and don't C<touch(1)> the file I</tmp/reload_modules>, the reloads
+won't happen until you go to the command line and type:
+
+  % touch /tmp/reload_modules
+
+When you do that, the modules that have been changed, will be
+magically reloaded on the next request. This option works with any
+mode described before.
+
+=head2 Unregistering a module
+
+In some cases, it might be necessary to explicitely stop reloading
+a module.
+
+  Apache2::Reload->unregister_module('Some::Module');
+
+But be carefull, since unregistering a module in this way will only
+do so for the current interpreter. This feature should be used with
+care.
+
+=head1 Performance Issues
+
+This module is perfectly suited for a development environment. Though
+it's possible that you would like to use it in a production
+environment, since with C<Apache2::Reload> you don't have to restart
+the server in order to reload changed modules during software
+updates. Though this convenience comes at a price:
+
+=over
+
+=item *
+
+If the "touch" file feature is used, C<Apache2::Reload> has to stat(2)
+the touch file on each request, which adds a slight but most likely
+insignificant overhead to response times. Otherwise C<Apache2::Reload>
+will stat(2) each registered module or even worse--all modules in
+C<%INC>, which will significantly slow everything down.
+
+=item *
+
+Once the child process reloads the modules, the memory used by these
+modules is not shared with the parent process anymore. Therefore the
+memory consumption may grow significantly.
+
+=back
+
+Therefore doing a full server stop and restart is probably a better
+solution.
+
+=head1 Debug
+
+If you aren't sure whether the modules that are supposed to be
+reloaded, are actually getting reloaded, turn the debug mode on:
+
+  PerlSetVar ReloadDebug On
+
+=head1 Caveats
+
+=head2 Problems With Reloading Modules Which Do Not Declare Their Package Name
+
+If you modify modules, which don't declare their C<package>, and rely on
+C<Apache2::Reload> to reload them, you may encounter problems: i.e.,
+it'll appear as if the module wasn't reloaded when in fact it
+was. This happens because when C<Apache2::Reload> C<require()>s such a
+module all the global symbols end up in the C<Apache2::Reload>
+namespace!  So the module does get reloaded and you see the compile
+time errors if there are any, but the symbols don't get imported to
+the right namespace. Therefore the old version of the code is running.
+
+
+=head2 Failing to Find a File to Reload
+
+C<Apache2::Reload> uses C<%INC> to find the files on the filesystem. If
+an entry for a certain filepath in C<%INC> is relative,
+C<Apache2::Reload> will use C<@INC> to try to resolve that relative
+path. Now remember that mod_perl freezes the value of C<@INC> at the
+server startup, and you can modify it only for the duration of one
+request when you need to load some module which is not in on of the
+C<@INC> directories. So a module gets loaded, and registered in
+C<%INC> with a relative path. Now when C<Apache2::Reload> tries to find
+that module to check whether it has been modified, it can't find since
+its directory is not in C<@INC>. So C<Apache2::Reload> will silently
+skip that module.
+
+You can enable the C<Debug|/Debug> mode to see what C<Apache2::Reload>
+does behind the scenes.
+
+
+
+=head2 Problems with Scripts Running with Registry Handlers that Cache the Code
+
+The following problem is relevant only to registry handlers that cache
+the compiled script. For example it concerns
+C<L<ModPerl::Registry|docs::2.0::api::ModPerl::Registry>> but not
+C<L<ModPerl::PerlRun|docs::2.0::api::ModPerl::PerlRun>>.
+
+=head3 The Problem
+
+Let's say that there is a module C<My::Utils>:
+
+  #file:My/Utils.pm
+  #----------------
+  package My::Utils;
+  BEGIN { warn __PACKAGE__ , " was reloaded\n" }
+  use base qw(Exporter);
+  @EXPORT = qw(colour);
+  sub colour { "white" }
+  1;
+
+And a registry script F<test.pl>:
+
+  #file:test.pl
+  #------------
+  use My::Utils;
+  print "Content-type: text/plain\n\n";
+  print "the color is " . colour();
+
+Assuming that the server is running in a single mode, we request the
+script for the first time and we get the response:
+
+  the color is white
+
+Now we change F<My/Utils.pm>:
+
+  -  sub colour { "white" }
+  +  sub colour { "red" }
+
+And issue the request again. C<Apache2::Reload> does its job and we can
+see that C<My::Utils> was reloaded (look in the I<error_log>
+file). However the script still returns:
+
+  the color is white
+
+=head3 The Explanation
+
+Even though F<My/Utils.pm> was reloaded, C<ModPerl::Registry>'s cached
+code won't run 'C<use My::Utils;>' again (since it happens only once,
+i.e. during the compile time). Therefore the script doesn't know that
+the subroutine reference has been changed.
+
+This is easy to verify. Let's change the script to be:
+
+  #file:test.pl
+  #------------
+  use My::Utils;
+  print "Content-type: text/plain\n\n";
+  my $sub_int = \&colour;
+  my $sub_ext = \&My::Utils::colour;
+  print "int $sub_int\n";
+  print "ext $sub_ext\n";
+
+Issue a request, you will see something similar to:
+
+  int CODE(0x8510af8)
+  ext CODE(0x8510af8)
+
+As you can see both point to the same CODE reference (meaning that
+it's the same symbol). After modifying F<My/Utils.pm> again:
+
+  -  sub colour { "red" }
+  +  sub colour { "blue" }
+
+and calling the script on the secondnd time, we get:
+
+  int CODE(0x8510af8)
+  ext CODE(0x851112c)
+
+You can see that the internal CODE reference is not the same as the
+external one.
+
+=head3 The Solution
+
+There are two solutions to this problem:
+
+Solution 1: replace C<use()> with an explicit C<require()> +
+C<import()>.
+
+ - use My::Utils;
+ + require My::Utils; My::Utils->import();
+
+now the changed functions will be reimported on every request.
+
+Solution 2: remember to touch the script itself every time you change
+the module that it requires.
+
+=head1 Threaded MPM and Multiple Perl Interpreters
+
+If you use C<Apache2::Reload> with a threaded MPM and multiple Perl
+interpreters, the modules will be reloaded by each interpreter as they
+are used, not every interpreters at once.  Similar to mod_perl 1.0
+where each child has its own Perl interpreter, the modules are
+reloaded as each child is hit with a request.
+
+If a module is loaded at startup, the syntax tree of each subroutine
+is shared between interpreters (big win), but each subroutine has its
+own padlist (where lexical my variables are stored).  Once
+C<Apache2::Reload> reloads a module, this sharing goes away and each
+Perl interpreter will have its own copy of the syntax tree for the
+reloaded subroutines.
+
+
+=head1 Pseudo-hashes
+
+The short summary of this is: Don't use pseudo-hashes. They are
+deprecated since Perl 5.8 and are removed in 5.9.
+
+Use an array with constant indexes. Its faster in the general case,
+its more guaranteed, and generally, it works.
+
+The long summary is that some work has been done to get this module
+working with modules that use pseudo-hashes, but it's still broken in
+the case of a single module that contains multiple packages that all
+use pseudo-hashes.
+
+So don't do that.
+
+
+
+
+=head1 Copyright
+
+mod_perl 2.0 and its core modules are copyrighted under
+The Apache Software License, Version 2.0.
+
+
+=head1 Authors
+
+Matt Sergeant, [EMAIL PROTECTED]
+
+Stas Bekman (porting to mod_perl 2.0)
+
+A few concepts borrowed from C<Stonehenge::Reload> by Randal Schwartz
+and C<Apache::StatINC> (mod_perl 1.x) by Doug MacEachern and Ask
+Bjoern Hansen.
+
+=head1 MAINTAINERS
+
+the mod_perl developers, [EMAIL PROTECTED]
+
+
+=cut
+

Added: perl/Apache-Reload/trunk/t/conf/extra.last.conf.in
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/t/conf/extra.last.conf.in?rev=606234&view=auto
==============================================================================
--- perl/Apache-Reload/trunk/t/conf/extra.last.conf.in (added)
+++ perl/Apache-Reload/trunk/t/conf/extra.last.conf.in Fri Dec 21 08:22:23 2007
@@ -0,0 +1,21 @@
+<IfModule mod_perl.c>
+    <IfDefine APACHE2>
+        PerlModule Apache2::Reload
+        PerlModule Apache2::TestReload
+    </IfDefine>
+    <IfDefine APACHE1>
+        PerlModule Apache::Reload
+        PerlModule Apache::TestReload
+    </IfDefine>
+    <Location /reload>
+        SetHandler perl-script
+        <IfDefine APACHE2>
+            PerlInitHandler Apache2::Reload
+            PerlResponseHandler Apache2::TestReload
+        </IfDefine>
+        <IfDefine APACHE1>
+            PerlInitHandler Apache::Reload
+            PerlHandler Apache::TestReload
+        </IfDefine>
+    </Location>
+</IfModule>

Added: perl/Apache-Reload/trunk/t/lib/Apache/TestReload.pm
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/t/lib/Apache/TestReload.pm?rev=606234&view=auto
==============================================================================
--- perl/Apache-Reload/trunk/t/lib/Apache/TestReload.pm (added)
+++ perl/Apache-Reload/trunk/t/lib/Apache/TestReload.pm Fri Dec 21 08:22:23 2007
@@ -0,0 +1,44 @@
+package Apache::TestReload;
+
+use strict;
+use warnings FATAL => 'all';
+
+#use ModPerl::Util ();
+use Apache::Constants qw(:common);
+
+my $package = 'Reload::Test';
+
+our $pass = 0;
+
+sub handler {
+    my $r = shift;
+    $pass++;
+    $r->send_http_header('text/plain');
+    if ((defined ($r->args)) && ($r->args eq 'last')) {
+        #Apache2::Reload->unregister_module($package);
+        #ModPerl::Util::unload_package($package);
+        $pass = 0;
+        $r->print("unregistered OK");
+        return OK;
+    }
+
+    eval "require $package";
+
+    Reload::Test::run($r);
+
+    return OK;
+}
+
+# This one shouldn't be touched
+package Reload::Test::SubPackage;
+
+sub subpackage {
+    if ($Apache::TestReload::pass == '2') {
+        return 'SUBPACKAGE';
+    }
+    else {
+        return 'subpackage';
+    }
+}
+
+1;

Copied: perl/Apache-Reload/trunk/t/lib/Apache2/TestReload.pm (from r594783, 
perl/modperl/trunk/t/response/TestModules/reload.pm)
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/t/lib/Apache2/TestReload.pm?p2=perl/Apache-Reload/trunk/t/lib/Apache2/TestReload.pm&p1=perl/modperl/trunk/t/response/TestModules/reload.pm&r1=594783&r2=606234&rev=606234&view=diff
==============================================================================
--- perl/modperl/trunk/t/response/TestModules/reload.pm (original)
+++ perl/Apache-Reload/trunk/t/lib/Apache2/TestReload.pm Fri Dec 21 08:22:23 
2007
@@ -1,13 +1,14 @@
-package TestModules::reload;
+package Apache2::TestReload;
 
 use strict;
 use warnings FATAL => 'all';
 
 use ModPerl::Util ();
-
+use Apache2::RequestRec ();
 use Apache2::Const -compile => qw(OK);
+use Apache2::RequestIO ();
 
-my $package = 'Apache2::Reload::Test';
+my $package = 'Reload::Test';
 
 our $pass = 0;
 
@@ -22,29 +23,23 @@
         return Apache2::Const::OK;
     }
 
-    eval "use $package";
+    eval "require $package";
 
-    Apache2::Reload::Test::run($r);
+    Reload::Test::run($r);
 
     return Apache2::Const::OK;
 }
 
-#This one shouldn't be touched
-package Apache2::Reload::Test::SubPackage;
+# This one shouldn't be touched
+package Reload::Test::SubPackage;
 
-sub subpackage { 
-    if ($TestModules::reload::pass == '2') {
-        return 'subpackage';
+sub subpackage {
+    if ($Apache2::TestReload::pass == '2') {
+        return 'SUBPACKAGE';
     }
     else {
-        return 'SUBPACKAGE';
+        return 'subpackage';
     }
 }
 
 1;
-__END__
-
-PerlModule Apache2::Reload
-PerlInitHandler Apache::TestHandler::same_interp_fixup Apache2::Reload
-PerlSetVar ReloadDebug Off
-PerlSetVar ReloadAll Off

Copied: perl/Apache-Reload/trunk/t/reload.t (from r594783, 
perl/modperl/trunk/t/modules/reload.t)
URL: 
http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/t/reload.t?p2=perl/Apache-Reload/trunk/t/reload.t&p1=perl/modperl/trunk/t/modules/reload.t&r1=594783&r2=606234&rev=606234&view=diff
==============================================================================
--- perl/modperl/trunk/t/modules/reload.t (original)
+++ perl/Apache-Reload/trunk/t/reload.t Fri Dec 21 08:22:23 2007
@@ -4,19 +4,17 @@
 use Apache::Test;
 use Apache::TestUtil;
 use Apache::TestRequest;
-use File::Spec::Functions qw(catfile);
+use File::Spec::Functions qw(catfile tmpdir);
 
-use TestCommon::SameInterp;
+Apache::TestRequest::user_agent(keep_alive => 1);
 
 plan tests => 3, need 'HTML::HeadParser';
 
-my $test_file = catfile Apache::Test::vars("serverroot"),
-    qw(lib Apache2 Reload Test.pm);
+my $test_file = catfile qw(Reload Test.pm);
 
-my $module   = 'TestModules::reload';
-my $location = '/' . Apache::TestRequest::module2path($module);
+my $location = '/reload';
 
-my @tests = qw(simple const prototype subpackage);
+my @tests = qw(const prototype simple subpackage);
 
 my $header = join '', <DATA>;
 
@@ -33,71 +31,34 @@
 sub prototype($$) { 'PROTOTYPE' }
 EOF
 
-t_write_file($test_file, $header, $initial);
-
-t_debug "getting the same interp ID for $location";
-my $same_interp = Apache::TestRequest::same_interp_tie($location);
-
-my $skip = $same_interp ? 0 : 1;
+t_write_test_lib($test_file, $header, $initial);
 
 {
     my $expected = join '', map { "$_:$_\n" } sort @tests;
-    my $received = same_interp_req_body($same_interp, \&GET,
-                                        $location);
-    $skip++ unless defined $received;
-    same_interp_skip_not_found(
-        $skip,
-        $received,
-        $expected,
-        "Initial"
-    );
+    my $received = GET $location;
+    ok t_cmp($received->content, $expected, 'Initial');
 }
 
-t_write_file($test_file, $header, $modified);
-touch_mtime($test_file);
+t_write_test_lib($test_file, $header, $modified);
 
 {
     my $expected = join '', map { "$_:" . uc($_) . "\n" } sort @tests;
-    my $received = same_interp_req_body($same_interp, \&GET,
-                                        $location);
-    $skip++ unless defined $received;
-    same_interp_skip_not_found(
-        $skip,
-        $received,
-        $expected,
-        "Reload"
-    );
+    my $received = GET $location;
+    ok t_cmp($received->content, $expected, 'Reload');
 }
 
 {
     my $expected = "unregistered OK";
-    my $received = same_interp_req_body($same_interp, \&GET, 
-                                        $location . '?last' );
-    $skip++ unless defined $received;
-    same_interp_skip_not_found(
-        $skip,
-        $received,
-        $expected,
-        "Unregister"
-    );
-}
-
-sub touch_mtime {
-    my $file = shift;
-    # push the mtime into the future (at least 2 secs to work on win32)
-    # so Apache2::Reload will reload the package
-    my $time = time + 5; # make it 5 to be sure
-    utime $time, $time, $file;
+    my $received = GET "$location?last";
+    ok t_cmp($received->content, $expected, 'Unregister');
 }
 
 __DATA__
-package Apache2::Reload::Test;
-
-use Apache2::Reload;
+package Reload::Test;
 
-our @methods = qw(simple const prototype subpackage);
+our @methods = qw(const prototype simple subpackage);
 
-sub subpackage { return Apache2::Reload::Test::SubPackage::subpackage() } 
+sub subpackage { return Reload::Test::SubPackage::subpackage() }
 
 sub run {
     my $r = shift;
@@ -105,3 +66,5 @@
         $r->print($m, ':', __PACKAGE__->$m(), "\n");
     }
 }
+
+1;


Reply via email to