summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--failed.txt2
-rw-r--r--php-upstream.patch1384
-rw-r--r--php.spec9
3 files changed, 1393 insertions, 2 deletions
diff --git a/failed.txt b/failed.txt
index e7b159f..7154030 100644
--- a/failed.txt
+++ b/failed.txt
@@ -1,4 +1,4 @@
-===== 7.3.4RC1 (2019-03-19)
+===== 7.3.4RC1 (2019-03-21)
$ grep -ar 'Tests failed' /var/lib/mock/scl73*/build.log
diff --git a/php-upstream.patch b/php-upstream.patch
new file mode 100644
index 0000000..db01840
--- /dev/null
+++ b/php-upstream.patch
@@ -0,0 +1,1384 @@
+From a467a89f167e9e03b4acc4bd9b1430e0d52133fa Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Wed, 20 Mar 2019 14:07:26 +0100
+Subject: [PATCH] Fix tests after fix for #76717
+
+---
+ .../general_functions/var_export-locale.phpt | 3 +
+ .../var_export-locale_32.phpt | 1148 +++++++++++++++++
+ .../general_functions/var_export_basic1.phpt | 6 +
+ .../var_export_basic1_32.phpt | 147 +++
+ 4 files changed, 1304 insertions(+)
+ create mode 100644 ext/standard/tests/general_functions/var_export-locale_32.phpt
+ create mode 100644 ext/standard/tests/general_functions/var_export_basic1_32.phpt
+
+diff --git a/ext/standard/tests/general_functions/var_export-locale.phpt b/ext/standard/tests/general_functions/var_export-locale.phpt
+index 7503e789b093..37625f4201ad 100644
+--- a/ext/standard/tests/general_functions/var_export-locale.phpt
++++ b/ext/standard/tests/general_functions/var_export-locale.phpt
+@@ -7,6 +7,9 @@ serialize_precision=17
+ if (!setlocale(LC_ALL, "german", "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8")) {
+ die("skip locale needed for this test is not supported on this platform");
+ }
++if (PHP_INT_SIZE < 8) {
++ die("skip 64-bit only");
++}
+ ?>
+ --FILE--
+ <?php
+diff --git a/ext/standard/tests/general_functions/var_export-locale_32.phpt b/ext/standard/tests/general_functions/var_export-locale_32.phpt
+new file mode 100644
+index 000000000000..39efdec7dfcb
+--- /dev/null
++++ b/ext/standard/tests/general_functions/var_export-locale_32.phpt
+@@ -0,0 +1,1148 @@
++--TEST--
++Test var_export() function with locale
++--INI--
++serialize_precision=17
++--SKIPIF--
++<?php
++if (!setlocale(LC_ALL, "german", "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8")) {
++ die("skip locale needed for this test is not supported on this platform");
++}
++if (PHP_INT_SIZE > 4) {
++ die("skip 32-bit only");
++}
++?>
++--FILE--
++<?php
++setlocale(LC_ALL, "german", "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8");
++/* Prototype: mixed var_export( mixed expression [, bool return]);
++ * Description: Returns the variable representation when the return parameter is used and evaluates to TRUE. Otherwise, this function will return NULL.
++
++*/
++
++echo "*** Testing var_export() with integer values ***\n";
++// different integer vlaues
++$valid_ints = array(
++ '0',
++ '1',
++ '-1',
++ '-2147483648', // max negative integer value
++ '-2147483647',
++ 2147483647, // max positive integer value
++ 2147483640,
++ 0x123B, // integer as hexadecimal
++ '0x12ab',
++ '0Xfff',
++ '0XFA',
++ -0x7fffffff - 1, // max negative integer as hexadecimal
++ '0x7fffffff', // max positive integer as hexadecimal
++ 0x7FFFFFFF, // max positive integer as hexadecimal
++ '0123', // integer as octal
++ 01, // should be quivalent to octal 1
++ -017777777777 - 1, // max negative integer as octal
++ 017777777777, // max positive integer as octal
++ );
++$counter = 1;
++/* Loop to check for above integer values with var_export() */
++echo "\n*** Output for integer values ***\n";
++foreach($valid_ints as $int_value) {
++echo "\nIteration ".$counter."\n";
++var_export( $int_value );
++echo "\n";
++var_export( $int_value, FALSE);
++echo "\n";
++var_dump( var_export( $int_value, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid boolean values ***\n";
++// different valid boolean vlaues
++$valid_bool = array(
++ 1,
++ TRUE,
++ true,
++ 0,
++ FALSE,
++ false
++ );
++$counter = 1;
++/* Loop to check for above boolean values with var_export() */
++echo "\n*** Output for boolean values ***\n";
++foreach($valid_bool as $bool_value) {
++echo "\nIteration ".$counter."\n";
++var_export( $bool_value );
++echo "\n";
++var_export( $bool_value, FALSE);
++echo "\n";
++var_dump( var_export( $bool_value, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid float values ***\n";
++// different valid float vlaues
++$valid_floats = array(
++ (float)-2147483649, // float value
++ (float)2147483648, // float value
++ (float)-0x80000001, // float value, beyond max negative int
++ (float)0x800000001, // float value, beyond max positive int
++ (float)020000000001, // float value, beyond max positive int
++ (float)-020000000001, // float value, beyond max negative int
++ 0.0,
++ -0.1,
++ 10.0000000000000000005,
++ 10.5e+5,
++ 1e5,
++ 1e-5,
++ 1e+5,
++ 1E5,
++ 1E+5,
++ 1E-5,
++ .5e+7,
++ .6e-19,
++ .05E+44,
++ .0034E-30
++);
++$counter = 1;
++/* Loop to check for above float values with var_export() */
++echo "\n*** Output for float values ***\n";
++foreach($valid_floats as $float_value) {
++echo "\nIteration ".$counter."\n";
++var_export( $float_value );
++echo "\n";
++var_export( $float_value, FALSE);
++echo "\n";
++var_dump( var_export( $float_value, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid strings ***\n";
++// different valid string
++$valid_strings = array(
++ "",
++ " ",
++ '',
++ ' ',
++ "string",
++ 'string',
++ "NULL",
++ 'null',
++ "FALSE",
++ 'false',
++ "\x0b",
++ "\0",
++ '\0',
++ '\060',
++ "\070"
++ );
++$counter = 1;
++/* Loop to check for above strings with var_export() */
++echo "\n*** Output for strings ***\n";
++foreach($valid_strings as $str) {
++echo "\nIteration ".$counter."\n";
++var_export( $str );
++echo "\n";
++var_export( $str, FALSE);
++echo "\n";
++var_dump( var_export( $str, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid arrays ***\n";
++// different valid arrays
++$valid_arrays = array(
++ array(),
++ array(NULL),
++ array(null),
++ array(true),
++ array(""),
++ array(''),
++ array(array(), array()),
++ array(array(1, 2), array('a', 'b')),
++ array(1 => 'One'),
++ array("test" => "is_array"),
++ array(0),
++ array(-1),
++ array(10.5, 5.6),
++ array("string", "test"),
++ array('string', 'test')
++ );
++$counter = 1;
++/* Loop to check for above arrays with var_export() */
++echo "\n*** Output for arrays ***\n";
++foreach($valid_arrays as $arr) {
++echo "\nIteration ".$counter."\n";
++var_export( $arr );
++echo "\n";
++var_export( $arr, FALSE);
++echo "\n";
++var_dump( var_export( $arr, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid objects ***\n";
++
++// class with no members
++class foo
++{
++// no members
++}
++
++// abstract class
++abstract class abstractClass
++{
++ abstract protected function getClassName();
++ public function printClassName () {
++ echo $this->getClassName() . "\n";
++ }
++}
++// implement abstract class
++class concreteClass extends abstractClass
++{
++ protected function getClassName() {
++ return "concreteClass";
++ }
++}
++
++// interface class
++interface iValue
++{
++ public function setVal ($name, $val);
++ public function dumpVal ();
++}
++// implement the interface
++class Value implements iValue
++{
++ private $vars = array ();
++
++ public function setVal ( $name, $val ) {
++ $this->vars[$name] = $val;
++ }
++
++ public function dumpVal () {
++ var_export ( $vars );
++ }
++}
++
++// a gereral class
++class myClass
++{
++ var $foo_object;
++ public $public_var;
++ public $public_var1;
++ private $private_var;
++ protected $protected_var;
++
++ function __construct ( ) {
++ $this->foo_object = new foo();
++ $this->public_var = 10;
++ $this->public_var1 = new foo();
++ $this->private_var = new foo();
++ $this->proected_var = new foo();
++ }
++}
++
++// create a object of each class defined above
++$myClass_object = new myClass();
++$foo_object = new foo();
++$Value_object = new Value();
++$concreteClass_object = new concreteClass();
++
++$valid_objects = array(
++ new stdclass,
++ new foo,
++ new concreteClass,
++ new Value,
++ new myClass,
++ $myClass_object,
++ $myClass_object->foo_object,
++ $myClass_object->public_var1,
++ $foo_object,
++ $Value_object,
++ $concreteClass_object
++ );
++ $counter = 1;
++/* Loop to check for above objects with var_export() */
++echo "\n*** Output for objects ***\n";
++foreach($valid_objects as $obj) {
++echo "\nIteration ".$counter."\n";
++var_export( $obj );
++echo "\n";
++var_export( $obj, FALSE);
++echo "\n";
++var_dump( var_export( $obj, TRUE) );
++echo "\n";
++$counter++;
++}
++
++echo "*** Testing var_export() with valid null values ***\n";
++// different valid null vlaues
++$unset_var = array();
++unset ($unset_var); // now a null
++$null_var = NULL;
++
++$valid_nulls = array(
++ NULL,
++ null,
++ $null_var,
++ );
++ $counter = 1;
++/* Loop to check for above null values with var_export() */
++echo "\n*** Output for null values ***\n";
++foreach($valid_nulls as $null_value) {
++echo "\nIteration ".$counter."\n";
++var_export( $null_value );
++echo "\n";
++var_export( $null_value, FALSE);
++echo "\n";
++var_dump( var_export( $null_value, true) );
++echo "\n";
++$counter++;
++}
++
++echo "\n*** Testing error conditions ***\n";
++//Zero argument
++var_export( var_export() );
++
++//arguments more than expected
++var_export( var_export(TRUE, FALSE, TRUE) );
++
++echo "\n\nDone";
++
++
++?>
++--EXPECTF--
++*** Testing var_export() with integer values ***
++
++*** Output for integer values ***
++
++Iteration 1
++'0'
++'0'
++string(3) "'0'"
++
++
++Iteration 2
++'1'
++'1'
++string(3) "'1'"
++
++
++Iteration 3
++'-1'
++'-1'
++string(4) "'-1'"
++
++
++Iteration 4
++'-2147483648'
++'-2147483648'
++string(13) "'-2147483648'"
++
++
++Iteration 5
++'-2147483647'
++'-2147483647'
++string(13) "'-2147483647'"
++
++
++Iteration 6
++2147483647
++2147483647
++string(10) "2147483647"
++
++
++Iteration 7
++2147483640
++2147483640
++string(10) "2147483640"
++
++
++Iteration 8
++4667
++4667
++string(4) "4667"
++
++
++Iteration 9
++'0x12ab'
++'0x12ab'
++string(8) "'0x12ab'"
++
++
++Iteration 10
++'0Xfff'
++'0Xfff'
++string(7) "'0Xfff'"
++
++
++Iteration 11
++'0XFA'
++'0XFA'
++string(6) "'0XFA'"
++
++
++Iteration 12
++-2147483647-1
++-2147483647-1
++string(13) "-2147483647-1"
++
++
++Iteration 13
++'0x7fffffff'
++'0x7fffffff'
++string(12) "'0x7fffffff'"
++
++
++Iteration 14
++2147483647
++2147483647
++string(10) "2147483647"
++
++
++Iteration 15
++'0123'
++'0123'
++string(6) "'0123'"
++
++
++Iteration 16
++1
++1
++string(1) "1"
++
++
++Iteration 17
++-2147483647-1
++-2147483647-1
++string(13) "-2147483647-1"
++
++
++Iteration 18
++2147483647
++2147483647
++string(10) "2147483647"
++
++*** Testing var_export() with valid boolean values ***
++
++*** Output for boolean values ***
++
++Iteration 1
++1
++1
++string(1) "1"
++
++
++Iteration 2
++true
++true
++string(4) "true"
++
++
++Iteration 3
++true
++true
++string(4) "true"
++
++
++Iteration 4
++0
++0
++string(1) "0"
++
++
++Iteration 5
++false
++false
++string(5) "false"
++
++
++Iteration 6
++false
++false
++string(5) "false"
++
++*** Testing var_export() with valid float values ***
++
++*** Output for float values ***
++
++Iteration 1
++-2147483649.0
++-2147483649.0
++string(13) "-2147483649.0"
++
++
++Iteration 2
++2147483648.0
++2147483648.0
++string(12) "2147483648.0"
++
++
++Iteration 3
++-2147483649.0
++-2147483649.0
++string(13) "-2147483649.0"
++
++
++Iteration 4
++34359738369.0
++34359738369.0
++string(13) "34359738369.0"
++
++
++Iteration 5
++2147483649.0
++2147483649.0
++string(12) "2147483649.0"
++
++
++Iteration 6
++-2147483649.0
++-2147483649.0
++string(13) "-2147483649.0"
++
++
++Iteration 7
++0.0
++0.0
++string(3) "0.0"
++
++
++Iteration 8
++-0.10000000000000001
++-0.10000000000000001
++string(20) "-0.10000000000000001"
++
++
++Iteration 9
++10.0
++10.0
++string(4) "10.0"
++
++
++Iteration 10
++1050000.0
++1050000.0
++string(9) "1050000.0"
++
++
++Iteration 11
++100000.0
++100000.0
++string(8) "100000.0"
++
++
++Iteration 12
++1.0000000000000001E-5
++1.0000000000000001E-5
++string(21) "1.0000000000000001E-5"
++
++
++Iteration 13
++100000.0
++100000.0
++string(8) "100000.0"
++
++
++Iteration 14
++100000.0
++100000.0
++string(8) "100000.0"
++
++
++Iteration 15
++100000.0
++100000.0
++string(8) "100000.0"
++
++
++Iteration 16
++1.0000000000000001E-5
++1.0000000000000001E-5
++string(21) "1.0000000000000001E-5"
++
++
++Iteration 17
++5000000.0
++5000000.0
++string(9) "5000000.0"
++
++
++Iteration 18
++6.0000000000000006E-20
++6.0000000000000006E-20
++string(22) "6.0000000000000006E-20"
++
++
++Iteration 19
++5.0000000000000001E+42
++5.0000000000000001E+42
++string(22) "5.0000000000000001E+42"
++
++
++Iteration 20
++3.4000000000000001E-33
++3.4000000000000001E-33
++string(22) "3.4000000000000001E-33"
++
++*** Testing var_export() with valid strings ***
++
++*** Output for strings ***
++
++Iteration 1
++''
++''
++string(2) "''"
++
++
++Iteration 2
++' '
++' '
++string(3) "' '"
++
++
++Iteration 3
++''
++''
++string(2) "''"
++
++
++Iteration 4
++' '
++' '
++string(3) "' '"
++
++
++Iteration 5
++'string'
++'string'
++string(8) "'string'"
++
++
++Iteration 6
++'string'
++'string'
++string(8) "'string'"
++
++
++Iteration 7
++'NULL'
++'NULL'
++string(6) "'NULL'"
++
++
++Iteration 8
++'null'
++'null'
++string(6) "'null'"
++
++
++Iteration 9
++'FALSE'
++'FALSE'
++string(7) "'FALSE'"
++
++
++Iteration 10
++'false'
++'false'
++string(7) "'false'"
++
++
++Iteration 11
++' '
++' '
++string(3) "' '"
++
++
++Iteration 12
++'' . "\0" . ''
++'' . "\0" . ''
++string(14) "'' . "\0" . ''"
++
++
++Iteration 13
++'\\0'
++'\\0'
++string(5) "'\\0'"
++
++
++Iteration 14
++'\\060'
++'\\060'
++string(7) "'\\060'"
++
++
++Iteration 15
++'8'
++'8'
++string(3) "'8'"
++
++*** Testing var_export() with valid arrays ***
++
++*** Output for arrays ***
++
++Iteration 1
++array (
++)
++array (
++)
++string(9) "array (
++)"
++
++
++Iteration 2
++array (
++ 0 => NULL,
++)
++array (
++ 0 => NULL,
++)
++string(22) "array (
++ 0 => NULL,
++)"
++
++
++Iteration 3
++array (
++ 0 => NULL,
++)
++array (
++ 0 => NULL,
++)
++string(22) "array (
++ 0 => NULL,
++)"
++
++
++Iteration 4
++array (
++ 0 => true,
++)
++array (
++ 0 => true,
++)
++string(22) "array (
++ 0 => true,
++)"
++
++
++Iteration 5
++array (
++ 0 => '',
++)
++array (
++ 0 => '',
++)
++string(20) "array (
++ 0 => '',
++)"
++
++
++Iteration 6
++array (
++ 0 => '',
++)
++array (
++ 0 => '',
++)
++string(20) "array (
++ 0 => '',
++)"
++
++
++Iteration 7
++array (
++ 0 =>
++ array (
++ ),
++ 1 =>
++ array (
++ ),
++)
++array (
++ 0 =>
++ array (
++ ),
++ 1 =>
++ array (
++ ),
++)
++string(55) "array (
++ 0 =>
++ array (
++ ),
++ 1 =>
++ array (
++ ),
++)"
++
++
++Iteration 8
++array (
++ 0 =>
++ array (
++ 0 => 1,
++ 1 => 2,
++ ),
++ 1 =>
++ array (
++ 0 => 'a',
++ 1 => 'b',
++ ),
++)
++array (
++ 0 =>
++ array (
++ 0 => 1,
++ 1 => 2,
++ ),
++ 1 =>
++ array (
++ 0 => 'a',
++ 1 => 'b',
++ ),
++)
++string(107) "array (
++ 0 =>
++ array (
++ 0 => 1,
++ 1 => 2,
++ ),
++ 1 =>
++ array (
++ 0 => 'a',
++ 1 => 'b',
++ ),
++)"
++
++
++Iteration 9
++array (
++ 1 => 'One',
++)
++array (
++ 1 => 'One',
++)
++string(23) "array (
++ 1 => 'One',
++)"
++
++
++Iteration 10
++array (
++ 'test' => 'is_array',
++)
++array (
++ 'test' => 'is_array',
++)
++string(33) "array (
++ 'test' => 'is_array',
++)"
++
++
++Iteration 11
++array (
++ 0 => 0,
++)
++array (
++ 0 => 0,
++)
++string(19) "array (
++ 0 => 0,
++)"
++
++
++Iteration 12
++array (
++ 0 => -1,
++)
++array (
++ 0 => -1,
++)
++string(20) "array (
++ 0 => -1,
++)"
++
++
++Iteration 13
++array (
++ 0 => 10.5,
++ 1 => 5.5999999999999996,
++)
++array (
++ 0 => 10.5,
++ 1 => 5.5999999999999996,
++)
++string(49) "array (
++ 0 => 10.5,
++ 1 => 5.5999999999999996,
++)"
++
++
++Iteration 14
++array (
++ 0 => 'string',
++ 1 => 'test',
++)
++array (
++ 0 => 'string',
++ 1 => 'test',
++)
++string(41) "array (
++ 0 => 'string',
++ 1 => 'test',
++)"
++
++
++Iteration 15
++array (
++ 0 => 'string',
++ 1 => 'test',
++)
++array (
++ 0 => 'string',
++ 1 => 'test',
++)
++string(41) "array (
++ 0 => 'string',
++ 1 => 'test',
++)"
++
++*** Testing var_export() with valid objects ***
++
++*** Output for objects ***
++
++Iteration 1
++stdClass::__set_state(array(
++))
++stdClass::__set_state(array(
++))
++string(31) "stdClass::__set_state(array(
++))"
++
++
++Iteration 2
++foo::__set_state(array(
++))
++foo::__set_state(array(
++))
++string(26) "foo::__set_state(array(
++))"
++
++
++Iteration 3
++concreteClass::__set_state(array(
++))
++concreteClass::__set_state(array(
++))
++string(36) "concreteClass::__set_state(array(
++))"
++
++
++Iteration 4
++Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))
++Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))
++string(57) "Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))"
++
++
++Iteration 5
++myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))
++myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))
++string(293) "myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))"
++
++
++Iteration 6
++myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))
++myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))
++string(293) "myClass::__set_state(array(
++ 'foo_object' =>
++ foo::__set_state(array(
++ )),
++ 'public_var' => 10,
++ 'public_var1' =>
++ foo::__set_state(array(
++ )),
++ 'private_var' =>
++ foo::__set_state(array(
++ )),
++ 'protected_var' => NULL,
++ 'proected_var' =>
++ foo::__set_state(array(
++ )),
++))"
++
++
++Iteration 7
++foo::__set_state(array(
++))
++foo::__set_state(array(
++))
++string(26) "foo::__set_state(array(
++))"
++
++
++Iteration 8
++foo::__set_state(array(
++))
++foo::__set_state(array(
++))
++string(26) "foo::__set_state(array(
++))"
++
++
++Iteration 9
++foo::__set_state(array(
++))
++foo::__set_state(array(
++))
++string(26) "foo::__set_state(array(
++))"
++
++
++Iteration 10
++Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))
++Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))
++string(57) "Value::__set_state(array(
++ 'vars' =>
++ array (
++ ),
++))"
++
++
++Iteration 11
++concreteClass::__set_state(array(
++))
++concreteClass::__set_state(array(
++))
++string(36) "concreteClass::__set_state(array(
++))"
++
++*** Testing var_export() with valid null values ***
++
++*** Output for null values ***
++
++Iteration 1
++NULL
++NULL
++string(4) "NULL"
++
++
++Iteration 2
++NULL
++NULL
++string(4) "NULL"
++
++
++Iteration 3
++NULL
++NULL
++string(4) "NULL"
++
++
++*** Testing error conditions ***
++
++Warning: var_export() expects at least 1 parameter, 0 given in %s on line %d
++NULL
++Warning: var_export() expects at most 2 parameters, 3 given in %s on line %d
++NULL
++
++Done
+diff --git a/ext/standard/tests/general_functions/var_export_basic1.phpt b/ext/standard/tests/general_functions/var_export_basic1.phpt
+index 2dfd28785bc8..a7d3142ddc29 100644
+--- a/ext/standard/tests/general_functions/var_export_basic1.phpt
++++ b/ext/standard/tests/general_functions/var_export_basic1.phpt
+@@ -1,5 +1,11 @@
+ --TEST--
+ Test var_export() function with integer values
++--SKIPIF--
++<?php
++if (PHP_INT_SIZE < 8) {
++ die("skip 64-bit only");
++}
++?>
+ --FILE--
+ <?php
+ /* Prototype : mixed var_export(mixed var [, bool return])
+diff --git a/ext/standard/tests/general_functions/var_export_basic1_32.phpt b/ext/standard/tests/general_functions/var_export_basic1_32.phpt
+new file mode 100644
+index 000000000000..95596800d690
+--- /dev/null
++++ b/ext/standard/tests/general_functions/var_export_basic1_32.phpt
+@@ -0,0 +1,147 @@
++--TEST--
++Test var_export() function with integer values
++--SKIPIF--
++<?php
++if (PHP_INT_SIZE > 4) {
++ die("skip 32-bit only");
++}
++?>
++--FILE--
++<?php
++/* Prototype : mixed var_export(mixed var [, bool return])
++ * Description: Outputs or returns a string representation of a variable
++ * Source code: ext/standard/var.c
++ * Alias to functions:
++ */
++
++echo "*** Testing var_export() with integer values ***\n";
++// different integer vlaues
++$valid_ints = array(
++ '0' => '0',
++ '1' => '1',
++ '-1' => '-1',
++ '-2147483648' => '-2147483648', // max negative integer value
++ '-2147483647' => '-2147483647',
++ '2147483647' => 2147483647, // max positive integer value
++ '2147483640' => 2147483640,
++ '0x123B' => 0x123B, // integer as hexadecimal
++ "'0x12ab'" => '0x12ab',
++ "'0Xfff'" => '0Xfff',
++ "'0XFA'" => '0XFA',
++ "-0x80000000" => -0x7FFFFFFF - 1, // max negative integer as hexadecimal
++ "'0x7fffffff'" => '0x7fffffff', // max positive integer as hexadecimal
++ "0x7FFFFFFF" => 0x7FFFFFFF, // max positive integer as hexadecimal
++ "'0123'" => '0123', // integer as octal
++ "01912" => 01, // should be quivalent to octal 1
++ "-020000000000" => -017777777777 - 1, // max negative integer as octal
++ "017777777777" => 017777777777, // max positive integer as octal
++);
++
++/* Loop to check for above integer values with var_export() */
++echo "\n*** Output for integer values ***\n";
++foreach($valid_ints as $key => $int_value) {
++ echo "\n-- Iteration: $key --\n";
++ var_export( $int_value );
++ echo "\n";
++ var_export( $int_value, FALSE);
++ echo "\n";
++ var_dump( var_export( $int_value, TRUE) );
++}
++
++?>
++===DONE===
++--EXPECT--
++*** Testing var_export() with integer values ***
++
++*** Output for integer values ***
++
++-- Iteration: 0 --
++'0'
++'0'
++string(3) "'0'"
++
++-- Iteration: 1 --
++'1'
++'1'
++string(3) "'1'"
++
++-- Iteration: -1 --
++'-1'
++'-1'
++string(4) "'-1'"
++
++-- Iteration: -2147483648 --
++'-2147483648'
++'-2147483648'
++string(13) "'-2147483648'"
++
++-- Iteration: -2147483647 --
++'-2147483647'
++'-2147483647'
++string(13) "'-2147483647'"
++
++-- Iteration: 2147483647 --
++2147483647
++2147483647
++string(10) "2147483647"
++
++-- Iteration: 2147483640 --
++2147483640
++2147483640
++string(10) "2147483640"
++
++-- Iteration: 0x123B --
++4667
++4667
++string(4) "4667"
++
++-- Iteration: '0x12ab' --
++'0x12ab'
++'0x12ab'
++string(8) "'0x12ab'"
++
++-- Iteration: '0Xfff' --
++'0Xfff'
++'0Xfff'
++string(7) "'0Xfff'"
++
++-- Iteration: '0XFA' --
++'0XFA'
++'0XFA'
++string(6) "'0XFA'"
++
++-- Iteration: -0x80000000 --
++-2147483647-1
++-2147483647-1
++string(13) "-2147483647-1"
++
++-- Iteration: '0x7fffffff' --
++'0x7fffffff'
++'0x7fffffff'
++string(12) "'0x7fffffff'"
++
++-- Iteration: 0x7FFFFFFF --
++2147483647
++2147483647
++string(10) "2147483647"
++
++-- Iteration: '0123' --
++'0123'
++'0123'
++string(6) "'0123'"
++
++-- Iteration: 01912 --
++1
++1
++string(1) "1"
++
++-- Iteration: -020000000000 --
++-2147483647-1
++-2147483647-1
++string(13) "-2147483647-1"
++
++-- Iteration: 017777777777 --
++2147483647
++2147483647
++string(10) "2147483647"
++===DONE===
+From c421d9afeca772968e185092950b70fdcd98f1e6 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Tue, 19 Mar 2019 16:15:14 +0100
+Subject: [PATCH] fix test for upcoming pcre2 10.33
+
+"group name ..." => "subpattern name ..."
+---
+ ext/pcre/tests/bug37911.phpt | 2 +-
+ ext/pcre/tests/match_flags3.phpt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ext/pcre/tests/bug37911.phpt b/ext/pcre/tests/bug37911.phpt
+index 2b7481a464de..4f3cb3574d08 100644
+--- a/ext/pcre/tests/bug37911.phpt
++++ b/ext/pcre/tests/bug37911.phpt
+@@ -37,5 +37,5 @@ array(3) {
+ string(4) "blub"
+ }
+
+-Warning: preg_replace_callback(): Compilation failed: group name must start with a non-digit at offset %d in %sbug37911.php on line %d
++Warning: preg_replace_callback(): Compilation failed: %s name must start with a non-digit at offset %d in %sbug37911.php on line %d
+ NULL
+diff --git a/ext/pcre/tests/match_flags3.phpt b/ext/pcre/tests/match_flags3.phpt
+index 695f0c1e81b5..6511c715e11e 100644
+--- a/ext/pcre/tests/match_flags3.phpt
++++ b/ext/pcre/tests/match_flags3.phpt
+@@ -41,5 +41,5 @@ array(1) {
+ }
+ }
+
+-Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset %d in %smatch_flags3.php on line %d
++Warning: preg_match(): Compilation failed: %s name must start with a non-digit at offset %d in %smatch_flags3.php on line %d
+ bool(false)
diff --git a/php.spec b/php.spec
index 243e841..2061729 100644
--- a/php.spec
+++ b/php.spec
@@ -136,7 +136,7 @@
Summary: PHP scripting language for creating dynamic web sites
Name: %{?scl_prefix}php
Version: %{upver}%{?rcver:~%{lower}}
-Release: 1%{?dist}
+Release: 2%{?dist}
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
# TSRM is licensed under BSD
@@ -191,6 +191,7 @@ Patch48: php-7.3.3-pdooci.patch
Patch91: php-7.2.0-oci8conf.patch
# Upstream fixes (100+)
+Patch100: php-upstream.patch
# Security fixes (200+)
@@ -235,6 +236,7 @@ BuildRequires: libargon2-devel
%if 0%{?gh_date}
BuildRequires: bison
%endif
+# used for tests
BuildRequires: /bin/ps
Requires: httpd-mmn = %{_httpd_mmn}
@@ -935,6 +937,7 @@ low-level PHP extension for the libsodium cryptographic library.
%patch91 -p1 -b .remi-oci8
# upstream patches
+%patch100 -p1 -b .up
# security patches
@@ -1877,6 +1880,10 @@ fi
%changelog
+* Thu Mar 21 2019 Remi Collet <remi@remirepo.net> - 7.3.4~RC1-2
+- update to 7.3.4RC1 new tag
+- add upstream patches for failed tests
+
* Tue Mar 19 2019 Remi Collet <remi@remirepo.net> - 7.3.4~RC1-1
- update to 7.3.4RC1