stas        01/12/26 23:33:03

  Modified:    src/docs/2.0/devel/writing_tests writing_tests.pod
  Log:
  - cleanups and re-shuffles
  
  Revision  Changes    Path
  1.29      +123 -123  
modperl-docs/src/docs/2.0/devel/writing_tests/writing_tests.pod
  
  Index: writing_tests.pod
  ===================================================================
  RCS file: 
/home/cvs/modperl-docs/src/docs/2.0/devel/writing_tests/writing_tests.pod,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- writing_tests.pod 2001/12/27 07:04:35     1.28
  +++ writing_tests.pod 2001/12/27 07:33:03     1.29
  @@ -99,7 +99,7 @@
   If you install mod_perl 2.x, you get C<Apache::Test> installed as
   well.
   
  -=head1 How to Run Tests
  +=head1 Running Tests
   
   It's much easier to copy-cat things, than creating from scratch.  It's
   much easier to develop tests, when you have some existing system that
  @@ -329,7 +329,7 @@
   
   =back
   
  -=head2 Resolving Sequence Problems
  +=head3 Resolving Sequence Problems
   
   When this kind of testing is used and a failure is detected there are
   two problems:
  @@ -356,7 +356,7 @@
   
   =back
   
  -=head2 Apache::TestSmoke Solution
  +=head3 Apache::TestSmoke Solution
   
   C<Apache::TestSmoke> attempts to solve both problems. When it's run,
   at the end of each iteration it reports the minimal sequence of tests
  @@ -366,8 +366,8 @@
   You should create a small script to drive C<Apache::TestSmoke>,
   usually I<t/SMOKE.PL>. If you don't have it already, create it:
   
  -  t/SMOKE.PL
  -  ----------
  +  file:t/SMOKE.PL
  +  ---------------
     #!perl
     
     use strict;
  @@ -640,21 +640,17 @@
   during the interactive run, set the C<APACHE_TEST_NO_COLOR=1>
   environment variable.
   
  +=head1 Setting Up Testing Environment
   
  -
  -
  -
  -META: a lot more stuff to go here from the pods/modperl_dev.pod and
  -Apache-Test/README
  -
  -=head1 How to Setup Testing Environment
  -
   We will assume that you setup your testing environment even before you
  -have started developing the module, which is a very smart thing to do.
  +have started coding the project, which is a very smart thing to do.
   Of course it'll take you more time upfront, but it'll will save you a
  -lot of time as you develop and debug your code. The L<extreme
  -programming methodology|/item_extreme_programming_methodology> says
  -that tests should be written before starting the code development.
  +lot of time during the project developing and debugging stages. The
  +L<extreme programming
  +methodology|/item_extreme_programming_methodology> says that tests
  +should be written before starting the code development.
  +
  +=head2 Basic Testing Environment
   
   So the first thing is to create a package and all the helper files, so
   later on we can distribute it on CPAN. We are going to develop an
  @@ -872,7 +868,7 @@
              "basic test",
             );
   
  -Now create the README file.
  +Now create the I<README> file.
   
     % touch README
   
  @@ -890,13 +886,13 @@
                  ...
                  );
   
  -in this case C<README> will be created from the documenation POD
  +in this case I<README> will be created from the documenation POD
   sections in I<lib/Apache/Amazing.pm>, but the file has to exists for
   I<make dist> to succeed.
   
  -and finally we adjust or create the C<MANIFEST> file, so we can
  +and finally we adjust or create the I<MANIFEST> file, so we can
   prepare a complete distribution. Therefore we list all the files that
  -should enter the distribution including the C<MANIFEST> file itself:
  +should enter the distribution including the I<MANIFEST> file itself:
   
     file:MANIFEST
     -------------
  @@ -938,6 +934,95 @@
   how amazingly it works and how amazingly it can be deployed by other
   users.
   
  +
  +=head2 Extending Configuration Setup
  +
  +Sometimes you need to add extra I<httpd.conf> configuration and perl
  +startup specific to your project that uses C<Apache::Test>. This can
  +be accomplished by creating the desired files with an extension I<.in>
  +in the I<t/conf/> directory and running:
  +
  +  panic% t/TEST -config
  +
  +which for each file with the extension I<.in> will create a new file,
  +without this extension, convert any template placeholders into real
  +values and link it from the main I<httpd.conf>. The latter happens
  +only if the file have the following extensions:
  +
  +=over
  +
  +=item * .conf.in
  +
  +will add to I<t/conf/httpd.conf>:
  +
  +  Include foo.conf
  +
  +=item * .pl.in
  +
  +will add to I<t/conf/httpd.conf>:
  +
  +  PerlRequire foo.pl
  +
  +=item * other
  +
  +other files with I<.in> extension will be processed as well, but not
  +linked from I<httpd.conf>.
  +
  +=back
  +
  +As mentioned before the converted files are created, any special token
  +in them are getting replaced with the appropriate values. For example
  +the token C<@ServerRoot@> will be replaced with the value defined by
  +the C<ServerRoot> directive, so you can write a file that does the
  +following:
  +
  +  file:my-extra.conf.in
  +  ---------------------
  +  PerlSwitches [EMAIL PROTECTED]@/../lib
  +
  +and assuming that the I<ServerRoot> is I<~/modperl-2.0/t/>, when
  +I<my-extra.conf> will be created, it'll look like:
  +
  +  file:my-extra.conf.in
  +  ---------------------
  +  PerlSwitches -Mlib=~/modperl-2.0/t/../lib
  +
  +The valid tokens are defined in C<%Apache::TestConfig::Usage> and also
  +can be seen in the output of C<t/TEST -help>'s I<configuration
  +options> section. The tokens are case insensitive.
  +
  +=head2 Special Configuration Files
  +
  +Some of the files in the I<t/conf> directory have a special meaning,
  +since the C<Apache::Test> framework uses them for the minimal
  +configuration setup. But they can be overriden:
  +
  +=over
  +
  +=item *
  +
  +if the file I<t/conf/httpd.conf.in> exists, it will be used instead of
  +the default template (in I<Apache/TestConfig.pm>).
  +
  +=item *
  +
  +if the file I<t/conf/extra.conf.in> exists, it will be used to
  +generate I<t/conf/extra.conf> with C<@variable@> substitutions.
  +
  +=item *
  +
  +if the file I<t/conf/extra.conf> exists, it will be included by
  +I<httpd.conf>.
  +
  +=item *
  +
  +if the file I<t/conf/modperl_extra.pl> exists, it will be included by
  +I<httpd.conf> as a mod_perl file (PerlRequire).
  +
  +=back
  +
  +
  +
   =head1 Apache::Test Framework's Architecture
   
   In the previous section we have written a basic test, which doesn't do
  @@ -1048,8 +1133,8 @@
   generate requests and check the response. So a typical test will look
   like this:
   
  -  t/apache/cool.t
  -  -----------
  +  file:t/apache/cool.t
  +  --------------------
     use strict;
     use warnings FATAL => 'all';
   
  @@ -1079,8 +1164,8 @@
   
   And the corresponding response part:
   
  -  t/response/TestApache/cool.pm:
  -  --------------------------
  +  file:t/response/TestApache/cool.pm
  +  ----------------------------------
     package TestApache::cool;
     
     use strict;
  @@ -1301,8 +1386,8 @@
   Here is an example from C<ModPerl::Registry> closure tests. Using the
   counter closure problem under C<ModPerl::Registry>:
   
  -  cgi-bin/closure.pl
  -  ------------------
  +  file:cgi-bin/closure.pl
  +  -----------------------
     #!perl -w
     print "Content-type: text/plain\r\n\r\n";
     
  @@ -1321,8 +1406,8 @@
   makes sure that its two subsequent requests hit the same server
   instance:
   
  -  closure.t
  -  ---------
  +  file:closure.t
  +  --------------
     ...
     my $url = "/same_interp/cgi-bin/closure.pl";
     my $same_interp = Apache::TestRequest::same_interp_tie($url);
  @@ -1369,7 +1454,7 @@
   its unique id matches. As you understand this technique would be very
   inefficient in production with many server instances.
   
  -=head1 How to Write Tests
  +=head1 Writing Tests
   
   All the communications between tests and C<Test::Harness> which
   executes them is done via STDOUT. I.e. whatever tests want to report
  @@ -1538,8 +1623,8 @@
   
   If all files in a directory I<t/foo> should be skipped, create:
   
  -  t/foo/all.t:
  -  ------------
  +  file:t/foo/all.t
  +  ----------------
     print "1..0\n";
   
   Alternatively you can specify which tests should be skipped from a
  @@ -1549,8 +1634,8 @@
   
   For example if in mod_perl 2.0 test suite we create the following file:
   
  -  t/SKIP:
  -  -------
  +  file:t/SKIP
  +  -----------
     # skip all files in protocol
     protocol
     
  @@ -1722,8 +1807,8 @@
   ok(), the rest will be skipped.  If no sub-tests are specified, sok()
   works just like ok().  For example, you can write this test:
   
  -  skip_subtest_2.t
  -  --------------
  +  file:skip_subtest_2.t
  +  ---------------------
     use Apache::Test;
     plan tests => 4;
     sok {1};
  @@ -1797,8 +1882,8 @@
   does, what is the expected value and what's the received value. This
   is a good example of debug friendly sub-test:
   
  -  debug_comments.t
  -  ----------------
  +  file:debug_comments.t
  +  ---------------------
     use Apache::Test;
     use Apache::TestUtil;
     plan tests => 1;
  @@ -2035,91 +2120,6 @@
   
   META: to be completed
   
  -=head2 Extending Startup Configuration for httpd and Perl
  -
  -Sometimes you need to add extra I<httpd.conf> configuration and perl
  -startup specific to your project that uses C<Apache::Test>. This can
  -be accomplished by creating the desired files with an extension I<.in>
  -in the I<t/conf/> directory and running:
  -
  -  panic% t/TEST -config
  -
  -which for each file with the extension I<.in> will create a new file,
  -without this extension, convert any template placeholders into real
  -values and link it from the main I<httpd.conf>. The latter happens
  -only if the file have the following extensions:
  -
  -=over
  -
  -=item * .conf.in
  -
  -will add to I<t/conf/httpd.conf>:
  -
  -  Include foo.conf
  -
  -=item * .pl.in
  -
  -will add to I<t/conf/httpd.conf>:
  -
  -  PerlRequire foo.pl
  -
  -=item * other
  -
  -other files with I<.in> extension will be processed as well, but not
  -linked from I<httpd.conf>.
  -
  -=back
  -
  -As mentioned before the converted files are created, any special token
  -in them are getting replaced with the appropriate values. For example
  -the token C<@ServerRoot@> will be replaced with the value defined by
  -the C<ServerRoot> directive, so you can write a file that does the
  -following:
  -
  -  my-extra.conf.in
  -  ----------------
  -  PerlSwitches [EMAIL PROTECTED]@/../lib
  -
  -and assuming that the I<ServerRoot> is I<~/modperl-2.0/t/>, when
  -I<my-extra.conf> will be created, it'll look like:
  -
  -  my-extra.conf.in
  -  ----------------
  -  PerlSwitches -Mlib=~/modperl-2.0/t/../lib
  -
  -The valid tokens are defined in C<%Apache::TestConfig::Usage> and also
  -can be seen in the output of C<t/TEST -help>'s I<configuration
  -options> section. The tokens are case insensitive.
  -
  -=head2 Special Configuration Files
  -
  -Some of the files in the I<t/conf> directory have a special meaning,
  -since the C<Apache::Test> framework uses them for the minimal
  -configuration setup. But they can be overriden:
  -
  -=over
  -
  -=item *
  -
  -if the file I<t/conf/httpd.conf.in> exists, it will be used instead of
  -the default template (in I<Apache/TestConfig.pm>).
  -
  -=item *
  -
  -if the file I<t/conf/extra.conf.in> exists, it will be used to
  -generate I<t/conf/extra.conf> with C<@variable@> substitutions.
  -
  -=item *
  -
  -if the file I<t/conf/extra.conf> exists, it will be included by
  -I<httpd.conf>.
  -
  -=item *
  -
  -if the file I<t/conf/modperl_extra.pl> exists, it will be included by
  -I<httpd.conf> as a mod_perl file (PerlRequire)
  -
  -=back
   
   =head2 Threaded versus Non-threaded Perl Test's Compatibility
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to