mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
315f4f5658
Took the old PHP 3 regression testing framework and rewrote it in PHP. Should work on both Windows and UNIX, however I have not tested it on Windows. See tests/README for how to write tests. Added the PHP 3 tests and converted most of them.
61 lines
1.8 KiB
Plaintext
Executable File
61 lines
1.8 KiB
Plaintext
Executable File
PHP Regression Tests
|
|
====================
|
|
|
|
To run the tests, go to the top-level directory and
|
|
run "./php -f run-tests.php".
|
|
|
|
Without parameters, "run-tests.php" will recursively scan through the
|
|
file tree looking for directories called "tests", and run all the
|
|
tests (.phpt files) within (recursively).
|
|
|
|
To run tests in a single directory, pass the directory as a parameter:
|
|
"./php -f run-tests.php tests/lang".
|
|
|
|
To run one or more single tests, pass them as parameters:
|
|
"./php -f run-tests.php tests/lang/015.phpt".
|
|
|
|
The format of the .phpt files is quite simple. There are 6 possible
|
|
sections. Test, Skipif, Post, Get, File and Expect. The Test section
|
|
contains the description of the test. The Skipif section contains
|
|
code that should print "skip" if this test should be skipped for some
|
|
reason (such as an extension that is not compiled in). The Post
|
|
section contains any post data that the script might need. The Get
|
|
section contains any Get data. Note that both the Post and the Get
|
|
sections need to have this data in url-encoded format. The File
|
|
section contains the actual script and the Expect section is the
|
|
expected output, sans headers. Blank lines are ignored in the
|
|
expected output.
|
|
|
|
A simple example which takes one argument through the POST method
|
|
and one through the GET and displays these would be:
|
|
|
|
--TEST--
|
|
Simple GET and POST test
|
|
--SKIPIF--
|
|
--POST--
|
|
a=Hello
|
|
--GET--
|
|
b=There
|
|
--FILE--
|
|
<?php echo "$a $b">
|
|
--EXPECT--
|
|
Hello There
|
|
|
|
Another simple example that only runs if the PCRE extension is loaded:
|
|
|
|
--TEST--
|
|
Simple Perl regexp test
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded("pcre")) print "skip"; ?>
|
|
--POST--
|
|
--GET--
|
|
--FILE--
|
|
<?php
|
|
$str="Hello 42 World";
|
|
if (pcre_match('/^([a-z]+)\s+(\d+)\s+([a-z]+)/i', $str, $matches)) {
|
|
printf("%s %s: %d\n", $matches[1], $matches[3], $matches[2]);
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
Hello World: 42
|