UPDATE:you might find this all confusing if you haven't heard about our Apache-Test
efforts yet and how it joins PHP and Perl together in the testing world. take a look at the talk Chris and I gave at ApacheCon 2004:
now, back to the blog...
today I added the ability to run client-side PHP scripts to Apache-Test
. so, now you can have
t/foo.t t/bar.php t/response/TestPHP/baz.php
t/
directory.t/foo.t
will run using perl, just like always. t/bar.php
will run using the php command-line interpreter, while
t/response/TestPHP/baz.php
will run via PHP within the Apache runtime (through standard Apache-Test
magic).
and all are executed with a simple make test
and tabulated on the command line like you would expect.test-more.php
that Apache-Test
generates can be automatically found from the client-side tests as well. so, here is what a sample t/foo.php
looks like:
plan(1); diag("this is a php test"); is('php', 'perl', "something php passed"); ?>
$ make test TEST_VERBOSE=1 /perl/perl-5.8.6/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -clean APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT= APACHE_TEST_USER= APACHE_TEST_APXS= \ /perl/perl-5.8.6/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -bugreport -verbose=1 t/foo.php t/foo.t /usr/local/apache/bin/httpd -d /src/devel/perl-php-test/t -f /src/devel/perl-php-test/t/conf/httpd.conf -D APACHE1 -D PERL_USEITHREADS using Apache/1.3.32 waiting 60 seconds for server to start: .. waiting 60 seconds for server to start: ok (waited 1 secs) server localhost.localdomain:8529 started t/foo....1..1 # this is a php test not ok 1 - something php passed # Failed test (t/foo.php at line 9) # got: 'php' # expected: 'perl' # Looks like you failed 1 tests of 1. FAILED test 1 Failed 1/1 tests, 0.00% okay t/foo....1..1 # this is a perl test not ok 1 - something perl passed # Failed test (t/foo.t at line 7) # got: 'php' # expected: 'perl' # Looks like you failed 1 test of 1. dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 1 Failed 1/1 tests, 0.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/foo.t 1 256 1 1 100.00% 1 t/foo.php 1 1 100.00% 1 Failed 2/2 test scripts, 0.00% okay. 2/2 subtests failed, 0.00% okay.
Test::More
and which is test-more.php
isn't it?
*.t
tests that have nothing to do with mod_perl or Apache, yet we just let Apache-Test
run everything for convenience. now, PHP users can do the same - code PHP clients to talk to their PHP web app using Test::More
syntax, or just use Apache-Test
as the engine for their CLI scripts:$ t/TEST -no-httpd t/foo.php -v [warning] skipping httpd configuration t/foo....1..1 # this is a php test not ok 1 - something php passed # Failed test (t/foo.php at line 5) # got: 'php' # expected: 'perl' # Looks like you failed 1 tests of 1. FAILED test 1 Failed 1/1 tests, 0.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/foo.php 1 1 100.00% 1 Failed 1/1 test scripts, 0.00% okay. 1/1 subtests failed, 0.00% okay.