RE: [PHP-DEV] RE: Patch: Fixing some .phpt's that fail with Wincache

From: Date: Wed, 27 Nov 2013 18:31:53 +0000
Subject: RE: [PHP-DEV] RE: Patch: Fixing some .phpt's that fail with Wincache
References: 1 2 3 4 5 6  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
-----Original Message-----
From: Eric Stenson
> > From: Tjerk Meesters [mailto:[email protected]]
> > Sent: Tuesday, November 26, 2013 1:42 AM
> > On Tue, Nov 26, 2013 at 5:19 PM, Ferenc Kovacs <[email protected]<mailto:[email protected]>> wrote:
> > 2013.11.26. 7:31, "Nikita Popov" <[email protected]<mailto:[email protected]>> ezt írta:
> > >
> > > On Mon, Nov 25, 2013 at 8:30 PM, Eric Stenson 
> > ><[email protected]<mailto:[email protected]>
> > >wrote:
> [...]
> > > >  $ui1 = uniqid($str);
> > > > +/* Must sleep here to let uniqid generate a different unique ID 
> > > > +*/ usleep( 10 );
> > > >  $ui2 = uniqid($str);
> > > >
> > > >  $len = strncasecmp(PHP_OS, 'CYGWIN', 6) ? 19 : 29;
> > > >
> >
> > Internally, uniqid() uses usleep(1) only if 'more entropy' is omitted and not on
> > Windows and Cygwin (must use 'more entropy').
> >
> > So, when 'more entropy' is present, it will skip usleep(1) but pad the result
> > with php_combined_lcg().
> >
> > I'm sure there was a good reason to do so, but it does seem counter-intuitive at
> > best.
> >
> 
> Ah!  My bad.  Please remove the usleep(10) and add the ', true' (more entropy) 
> param to the uniqid() call.  This test consistently fails on Windows.
>
> For completeness of coverage, you might consider also testing with the usleep(1)
> and without the ', true' (more entropy) param.
>

Here are the updated patches that include the fix for the uniqid() test (this time with a .txt
suffix).

Please consider for the next batch of external developer fixes.

Thx!

    --E.




From c5b2dc05d01b74bd6b962f18718a84cbb907fa6d Mon Sep 17 00:00:00 2001 From: Eric Stenson <[email protected]> Date: Mon, 25 Nov 2013 10:53:43 -0800 Subject: [PATCH 1/2] Fix tests expecting specific resource IDs When Wincache or APC are installed, the resource IDs are not the same. This is because Wincache takes a few resource objects for itself. As a result, these tests become false positives. --- Zend/tests/bug41421.phpt | 2 +- ext/session/tests/session_name_error.phpt | 2 +- ext/standard/tests/array/each.phpt | Bin 9570 -> 9574 bytes ext/standard/tests/file/007_error.phpt | 4 +-- ext/standard/tests/file/fgetss_error.phpt | 2 +- ext/standard/tests/file/ftruncate_error.phpt | 2 +- ext/standard/tests/general_functions/floatval.phpt | 8 ++--- .../general_functions/gettype_settype_basic.phpt | 32 ++++++++++---------- ext/standard/tests/general_functions/print_r.phpt | 12 ++++---- ext/standard/tests/general_functions/strval.phpt | 4 +-- ext/standard/tests/general_functions/type.phpt | 8 ++--- ext/standard/tests/general_functions/var_dump.phpt | 8 ++--- ext/standard/tests/strings/implode1.phpt | Bin 5875 -> 5877 bytes tests/strings/001.phpt | 2 ++ 14 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Zend/tests/bug41421.phpt b/Zend/tests/bug41421.phpt index f10db10..f39fb15 100644 --- a/Zend/tests/bug41421.phpt +++ b/Zend/tests/bug41421.phpt @@ -24,6 +24,6 @@ Warning: feof(): wrapper::stream_eof is not implemented! Assuming EOF in %s on l Fatal error: Uncaught exception 'Exception' in %s:%d Stack trace: #0 [internal function]: wrapper->stream_eof() -#1 %s(%d): feof(Resource id #6) +#1 %s(%d): feof(Resource id #%d) #2 {main} thrown in %s on line %d diff --git a/ext/session/tests/session_name_error.phpt b/ext/session/tests/session_name_error.phpt index 1b99d4e..9f0101d 100644 --- a/ext/session/tests/session_name_error.phpt +++ b/ext/session/tests/session_name_error.phpt @@ -231,6 +231,6 @@ string(12) "Hello World!" -- Iteration 24 -- Warning: session_name() expects parameter 1 to be string, resource given in %s on line %d -resource(5) of type (stream) +resource(%d) of type (stream) NULL Done \ No newline at end of file diff --git a/ext/standard/tests/array/each.phpt b/ext/standard/tests/array/each.phpt index 19ee728fd2ee51d8dced3b1ae18aab8e60dba706..974808c08c808d6bd6e2d36d152bfe7e7ecfbca1 100644 GIT binary patch delta 40 icmaFl^~`I-X?Z5ql*wo0bwJcl`CJs9%H|ykt5^U}K@XPz delta 36 mcmaFn^~h_(X?aG|$!FztfaGuaTt+i6+YHE7*}O+#6$=0u0S-?9 diff --git a/ext/standard/tests/file/007_error.phpt b/ext/standard/tests/file/007_error.phpt index a369c9d..112beb3 100644 --- a/ext/standard/tests/file/007_error.phpt +++ b/ext/standard/tests/file/007_error.phpt @@ -76,7 +76,7 @@ bool(false) Warning: fopen() expects at least 2 parameters, 0 given in %s on line %d bool(false) -Warning: fclose(): 5 is not a valid stream resource in %s on line %d +Warning: fclose(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fclose() expects parameter 1 to be resource, string given in %s on line %d @@ -85,7 +85,7 @@ bool(false) Warning: fclose() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: feof(): 5 is not a valid stream resource in %s on line %d +Warning: feof(): %d is not a valid stream resource in %s on line %d bool(false) Warning: feof() expects parameter 1 to be resource, string given in %s on line %d diff --git a/ext/standard/tests/file/fgetss_error.phpt b/ext/standard/tests/file/fgetss_error.phpt index 3691e96..2b4ad68 100644 --- a/ext/standard/tests/file/fgetss_error.phpt +++ b/ext/standard/tests/file/fgetss_error.phpt @@ -98,7 +98,7 @@ bool(false) Warning: fgetss() expects parameter 1 to be resource, object given in %s on line %d bool(false) -- Testing fgetss() with closed/unset file handle -- -Warning: fgetss(): 5 is not a valid stream resource in %s on line %d +Warning: fgetss(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fgetss() expects parameter 1 to be resource, null given in %s on line %d diff --git a/ext/standard/tests/file/ftruncate_error.phpt b/ext/standard/tests/file/ftruncate_error.phpt index a28095b..254ad76 100644 --- a/ext/standard/tests/file/ftruncate_error.phpt +++ b/ext/standard/tests/file/ftruncate_error.phpt @@ -114,7 +114,7 @@ Warning: ftruncate() expects parameter 1 to be resource, object given in %s on l bool(false) -- Testing ftruncate() with closed/unset file handle -- -Warning: ftruncate(): 5 is not a valid stream resource in %s on line %d +Warning: ftruncate(): %d is not a valid stream resource in %s on line %d bool(false) int(36) diff --git a/ext/standard/tests/general_functions/floatval.phpt b/ext/standard/tests/general_functions/floatval.phpt index b427bda..9b7a328 100644 --- a/ext/standard/tests/general_functions/floatval.phpt +++ b/ext/standard/tests/general_functions/floatval.phpt @@ -157,8 +157,8 @@ float(-5000000) *** Testing floatval() on non floating types *** float(-2147483648) float(2147483648) -float(5) -float(6) +float(%d) +float(%d) float(0) float(1) float(-1300) @@ -175,8 +175,8 @@ float(0) *** Testing doubleval() on non floating types *** float(-2147483648) float(2147483648) -float(5) -float(6) +float(%d) +float(%d) float(0) float(1) float(-1300) diff --git a/ext/standard/tests/general_functions/gettype_settype_basic.phpt b/ext/standard/tests/general_functions/gettype_settype_basic.phpt index d6fb0d4..d1fd409 100644 --- a/ext/standard/tests/general_functions/gettype_settype_basic.phpt +++ b/ext/standard/tests/general_functions/gettype_settype_basic.phpt @@ -232,11 +232,11 @@ int(0) string(7) "integer" -- Iteration 12 -- bool(true) -int(5) +int(%d) string(7) "integer" -- Iteration 13 -- bool(true) -int(6) +int(%d) string(7) "integer" -- Iteration 14 -- 8: Object of class point could not be converted to int @@ -291,11 +291,11 @@ int(0) string(7) "integer" -- Iteration 12 -- bool(true) -int(5) +int(%d) string(7) "integer" -- Iteration 13 -- bool(true) -int(6) +int(%d) string(7) "integer" -- Iteration 14 -- 8: Object of class point could not be converted to int @@ -350,11 +350,11 @@ float(0) string(6) "double" -- Iteration 12 -- bool(true) -float(5) +float(%d) string(6) "double" -- Iteration 13 -- bool(true) -float(6) +float(%d) string(6) "double" -- Iteration 14 -- 8: Object of class point could not be converted to double @@ -409,11 +409,11 @@ float(0) string(6) "double" -- Iteration 12 -- bool(true) -float(5) +float(%d) string(6) "double" -- Iteration 13 -- bool(true) -float(6) +float(%d) string(6) "double" -- Iteration 14 -- 8: Object of class point could not be converted to double @@ -610,12 +610,12 @@ string(6) "string" -- Iteration 12 -- 2: settype(): Cannot convert to resource type bool(false) -resource(5) of type (stream) +resource(%d) of type (stream) string(8) "resource" -- Iteration 13 -- 2: settype(): Cannot convert to resource type bool(false) -resource(6) of type (stream) +resource(%d) of type (stream) string(8) "resource" -- Iteration 14 -- 2: settype(): Cannot convert to resource type @@ -716,14 +716,14 @@ string(5) "array" bool(true) array(1) { [0]=> - resource(5) of type (stream) + resource(%d) of type (stream) } string(5) "array" -- Iteration 13 -- bool(true) array(1) { [0]=> - resource(6) of type (stream) + resource(%d) of type (stream) } string(5) "array" -- Iteration 14 -- @@ -824,14 +824,14 @@ string(6) "object" bool(true) object(stdClass)#2 (1) { ["scalar"]=> - resource(5) of type (stream) + resource(%d) of type (stream) } string(6) "object" -- Iteration 13 -- bool(true) object(stdClass)#2 (1) { ["scalar"]=> - resource(6) of type (stream) + resource(%d) of type (stream) } string(6) "object" -- Iteration 14 -- @@ -893,11 +893,11 @@ string(6) "string" string(6) "string" -- Iteration 12 -- bool(true) -string(14) "Resource id #5" +string(14) "Resource id #%d" string(6) "string" -- Iteration 13 -- bool(true) -string(14) "Resource id #6" +string(14) "Resource id #%d" string(6) "string" -- Iteration 14 -- bool(true) diff --git a/ext/standard/tests/general_functions/print_r.phpt b/ext/standard/tests/general_functions/print_r.phpt index 81a523a..19e71fb 100644 --- a/ext/standard/tests/general_functions/print_r.phpt +++ b/ext/standard/tests/general_functions/print_r.phpt @@ -1484,13 +1484,13 @@ object_class Object *** Testing print_r() on resources *** -- Iteration 1 -- -Resource id #5 -Resource id #5 -Resource id #5 +Resource id #%d +Resource id #%d +Resource id #%d -- Iteration 2 -- -Resource id #6 -Resource id #6 -Resource id #6 +Resource id #%d +Resource id #%d +Resource id #%d *** Testing print_r() on different combinations of scalar and non-scalar variables *** diff --git a/ext/standard/tests/general_functions/strval.phpt b/ext/standard/tests/general_functions/strval.phpt index b92be41..372ac67 100644 --- a/ext/standard/tests/general_functions/strval.phpt +++ b/ext/standard/tests/general_functions/strval.phpt @@ -279,9 +279,9 @@ string(0) "" -- Iteration 1 -- string(6) "Object" -- Iteration 2 -- -string(14) "Resource id #5" +string(14) "Resource id #%d" -- Iteration 3 -- -string(14) "Resource id #6" +string(14) "Resource id #%d" -- Iteration 4 -- Notice: Array to string conversion in %sstrval.php on line %d diff --git a/ext/standard/tests/general_functions/type.phpt b/ext/standard/tests/general_functions/type.phpt index 98eccbb..51654b1 100644 --- a/ext/standard/tests/general_functions/type.phpt +++ b/ext/standard/tests/general_functions/type.phpt @@ -105,9 +105,9 @@ int(0) bool(true) int(0) bool(true) -int(5) +int(%d) bool(true) -int(6) +int(%d) string(54) "Object of class stdClass could not be converted to int" bool(true) int(%d) @@ -128,9 +128,9 @@ float(0) bool(true) float(0) bool(true) -float(5) +float(%d) bool(true) -float(6) +float(%d) string(57) "Object of class stdClass could not be converted to double" bool(true) float(%d) diff --git a/ext/standard/tests/general_functions/var_dump.phpt b/ext/standard/tests/general_functions/var_dump.phpt index 09e9f3b..c472271 100644 --- a/ext/standard/tests/general_functions/var_dump.phpt +++ b/ext/standard/tests/general_functions/var_dump.phpt @@ -844,9 +844,9 @@ object(object_class)#13 (8) { *** Testing var_dump() on resources *** -- Iteration 1 -- -resource(5) of type (stream) +resource(%d) of type (stream) -- Iteration 2 -- -resource(6) of type (stream) +resource(%d) of type (stream) *** Testing var_dump() on different combinations of scalar and non-scalar variables *** @@ -1227,9 +1227,9 @@ array(4) { } array(2) { [0]=> - resource(5) of type (stream) + resource(%d) of type (stream) [1]=> - resource(6) of type (stream) + resource(%d) of type (stream) } array(9) { [0]=> diff --git a/ext/standard/tests/strings/implode1.phpt b/ext/standard/tests/strings/implode1.phpt index 3997c54b59eb3b86777b64b58f7ce67f25acac55..3720c069276784a1b588da672f9731c89b4e5fb7 100644 GIT binary patch delta 32 ncmeyY`&D<tb`fFK6f3Ks)Z+ZoqU2PC%oGJ>)s)RAM6{Uz()tUF delta 30 lcmeyW`&oCxb`e2SE32T?;{4L0<Wz;s6a{6o&8I}PnE<>^3giF) diff --git a/tests/strings/001.phpt b/tests/strings/001.phpt index 3bfd3db..7b61835 100644 --- a/tests/strings/001.phpt +++ b/tests/strings/001.phpt @@ -180,6 +180,8 @@ if ($ss == "\$'") { echo "Testing uniqid: "; $str = "prefix"; $ui1 = uniqid($str); +/* Must sleep here to let uniqid generate a different unique ID */ +usleep( 10 ); $ui2 = uniqid($str); $len = strncasecmp(PHP_OS, 'CYGWIN', 6) ? 19 : 29; -- 1.7.10.msysgit.1 From d744bdea98ff8023c1d4b7a096280ed6c3096fa9 Mon Sep 17 00:00:00 2001 From: Eric Stenson <[email protected]> Date: Wed, 27 Nov 2013 09:35:21 -0800 Subject: [PATCH 2/2] Fix uniqid tests for Windows platforms On Windows boxes, the microtime precision is not granular enough to reliably register a difference if two calls to uniqid() are made concurrently. This is a fix to the uniqid() test to avoid the false positive when run on Windows machines. Also, added a test to exercise the 'more_entropy' variant of uniqid(). --- tests/strings/001.phpt | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/strings/001.phpt b/tests/strings/001.phpt index 7b61835..98ceceb 100644 --- a/tests/strings/001.phpt +++ b/tests/strings/001.phpt @@ -177,11 +177,23 @@ if ($ss == "\$'") { } -echo "Testing uniqid: "; +echo "Testing uniqid(true): "; +$str = "prefix"; +$ui1 = uniqid($str, true); +$ui2 = uniqid($str, true); + +$len = 29; + +if (strlen($ui1) == strlen($ui2) && strlen($ui1) == $len && $ui1 != $ui2) { + echo("passed\n"); +} else { + echo("failed!\n"); +} + +echo "Testing uniqid(false): "; $str = "prefix"; $ui1 = uniqid($str); -/* Must sleep here to let uniqid generate a different unique ID */ -usleep( 10 ); +usleep( 1 ); $ui2 = uniqid($str); $len = strncasecmp(PHP_OS, 'CYGWIN', 6) ? 19 : 29; @@ -209,4 +221,5 @@ Testing ufirst: passed Testing strtr: passed Testing addslashes: passed Testing stripslashes: passed -Testing uniqid: passed +Testing uniqid(true): passed +Testing uniqid(false): passed -- 1.7.10.msysgit.1

Thread (13 messages)

« previous php.internals (#70443) next »