helly Sat Oct 26 12:54:30 2002 EDT
Modified files:
/php4 README.TESTING run-tests.php
Log:
-introduce EXPECTREGEX
-add %c for EXPECTF
#i think we must escape the special characters for EXPECTF: ".()" and such
Index: php4/README.TESTING
diff -u php4/README.TESTING:1.15 php4/README.TESTING:1.16
--- php4/README.TESTING:1.15 Fri Oct 25 14:09:55 2002
+++ php4/README.TESTING Sat Oct 26 12:54:30 2002
@@ -160,15 +160,17 @@
As you can see the file is devided into several sections. Below is a
list of all possible sections:
-"--TEST--" is title of the test (required).
-"--SKIPIF--" is condition when to skip this test (optional).
-"--POST--" is POST variable passed to test script (optional).
-"--GET--" is GET variable passed to test script (optional).
-"--INI--" each line contains an ini setting e.g. foo=bar (optional).
-"--FILE--" is the test script (required).
-"--EXPECT--" is the expected output from the test script (required).
-"--EXPECTF--" this is the alternative of --EXPECT--. The difference is
- that this form uses sscanf for output validation (alternative).
+"--TEST--" is title of the test (required).
+"--SKIPIF--" is condition when to skip this test (optional).
+"--POST--" is POST variable passed to test script (optional).
+"--GET--" is GET variable passed to test script (optional).
+"--INI--" each line contains an ini setting e.g. foo=bar (optional).
+"--FILE--" is the test script (required).
+"--EXPECT--" is the expected output from the test script (required).
+"--EXPECTF--" is an alternative of --EXPECT--. The difference is that
+ this form uses sscanf for output validation (alternative).
+"--EXPECTREGEX--" is an alternative of --EXPECT--. This form allows the tester
+ to specify the result in a regular expression (alternative).
A test must at least contain the sections TEST, FILE and either EXPECT
or EXPECTF. When a test is called run-test.php takes the name from the
@@ -182,7 +184,8 @@
changed and sometimes the machine used to execute the code has influence
on the result of shuffle. But it always returns a three character string
detectable by %s. Other scan-able forms are %i for integers, %d for numbers
-only, %f for floating point values and %x for hexadecimal values.
+only, %f for floating point values, %c for single characters and %x for
+hexadecimal values.
==== /ext/standard/tests/strings/str_shuffle.phpt ===
--TEST--
@@ -198,6 +201,26 @@
string(3) %s
string(3) "123"
==== end of /ext/standard/tests/strings/str_shuffle.phpt ===
+
+/ext/standard/tests/strings/strings001.phpt is a good example for using
+EXPECTREGEX instead of EXPECT. This test also shows that in both EXPECTF
+and EXPECTREGEX some characters need to be escaped since otherwise they
+would be interpreted as a regular expression.
+
+==== /ext/standard/tests/strings/strings001.phpt ===
+--TEST--
+Test whether strstr() and strrchr() are binary safe.
+--FILE--
+<?php
+/* Do not change this test it is a REATME.TESTING example. */
+$s = "alabala nica".chr(0)."turska panica";
+var_dump(strstr($s, "nic"));
+var_dump(strrchr($s," nic"));
+?>
+--EXPECTREGEX--
+string\(18\) \"nica\x00turska panica\"
+string\(19\) \" nica\x00turska panica\"
+==== end of /ext/standard/tests/strings/strings001.phpt ===
Some tests depend on modules or functions available only in certain versions
or they even require minimum version of php or zend. These tests should be
Index: php4/run-tests.php
diff -u php4/run-tests.php:1.90 php4/run-tests.php:1.91
--- php4/run-tests.php:1.90 Fri Oct 25 13:24:09 2002
+++ php4/run-tests.php Sat Oct 26 12:54:30 2002
@@ -559,17 +559,24 @@
$output = trim($out);
$output = preg_replace('/\r\n/',"\n",$output);
- if (isset($section_text['EXPECTF'])) {
- $wanted = trim($section_text['EXPECTF']);
+ if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) {
+ if (isset($section_text['EXPECTF'])) {
+ $wanted = trim($section_text['EXPECTF']);
+ } else {
+ $wanted = trim($section_text['EXPECTREGEX']);
+ }
$wanted_re = preg_replace('/\r\n/',"\n",$wanted);
- $wanted_re = preg_quote($wanted_re, '/');
- // Stick to basics
- $wanted_re = str_replace("%s", ".+?", $wanted_re); //not greedy
- $wanted_re = str_replace("%i", "[+\-]?[0-9]+", $wanted_re);
- $wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
- $wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
- $wanted_re = str_replace("%f", "[+\-]?\.?[0-9]+\.?[0-9]*", $wanted_re);
- // %f allows two points "-.0.0" but that is the best *simple*
expression
+ if (isset($section_text['EXPECTF'])) {
+ $wanted_re = preg_quote($wanted_re, '/');
+ // Stick to basics
+ $wanted_re = str_replace("%s", ".+?", $wanted_re); //not greedy
+ $wanted_re = str_replace("%i", "[+\-]?[0-9]+", $wanted_re);
+ $wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
+ $wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
+ $wanted_re = str_replace("%f", "[+\-]?\.?[0-9]+\.?[0-9]*",
+$wanted_re);
+ $wanted_re = str_replace("%c", ".", $wanted_re);
+ // %f allows two points "-.0.0" but that is the best *simple*
+expression
+ }
/* DEBUG YOUR REGEX HERE
var_dump($wanted);
print(str_repeat('=', 80) . "\n");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php