Răsfoiți Sursa

Merge pull request #4908 from TeBoring/php-bug

Fix php tests
Feng Xiao 7 ani în urmă
părinte
comite
4a0ad7b06f

+ 1 - 0
php/ext/google/protobuf/message.c

@@ -283,6 +283,7 @@ void build_class_from_descriptor(
 // -----------------------------------------------------------------------------
 
 void Message_construct(zval* msg, zval* array_wrapper) {
+  TSRMLS_FETCH();
   zend_class_entry* ce = Z_OBJCE_P(msg);
   MessageHeader* intern = NULL;
   if (EXPECTED(class_added(ce))) {

+ 2 - 5
php/src/Google/Protobuf/Internal/GPBUtil.php

@@ -305,11 +305,8 @@ class GPBUtil
         $name,
         $file_proto)
     {
-        $parts = explode('.', $name);
-        foreach ($parts as $i => $part) {
-            $parts[$i] = static::getClassNamePrefix($parts[$i], $file_proto) . $parts[$i];
-        }
-        return implode('\\', $parts);
+        $classname = implode('_', explode('.', $name));
+        return static::getClassNamePrefix($classname, $file_proto) . $classname;
     }
 
     public static function getClassNameWithoutPackage(

+ 13 - 18
php/src/Google/Protobuf/Internal/MapField.php

@@ -156,15 +156,22 @@ class MapField implements \ArrayAccess, \IteratorAggregate, \Countable
         $this->checkKey($this->key_type, $key);
 
         switch ($this->value_type) {
+            case GPBType::SFIXED32:
+            case GPBType::SINT32:
             case GPBType::INT32:
+            case GPBType::ENUM:
                 GPBUtil::checkInt32($value);
                 break;
+            case GPBType::FIXED32:
             case GPBType::UINT32:
                 GPBUtil::checkUint32($value);
                 break;
+            case GPBType::SFIXED64:
+            case GPBType::SINT64:
             case GPBType::INT64:
                 GPBUtil::checkInt64($value);
                 break;
+            case GPBType::FIXED64:
             case GPBType::UINT64:
                 GPBUtil::checkUint64($value);
                 break;
@@ -249,36 +256,24 @@ class MapField implements \ArrayAccess, \IteratorAggregate, \Countable
     private function checkKey($key_type, &$key)
     {
         switch ($key_type) {
+            case GPBType::SFIXED32:
+            case GPBType::SINT32:
             case GPBType::INT32:
                 GPBUtil::checkInt32($key);
                 break;
+            case GPBType::FIXED32:
             case GPBType::UINT32:
                 GPBUtil::checkUint32($key);
                 break;
+            case GPBType::SFIXED64:
+            case GPBType::SINT64:
             case GPBType::INT64:
                 GPBUtil::checkInt64($key);
                 break;
-            case GPBType::UINT64:
-                GPBUtil::checkUint64($key);
-                break;
             case GPBType::FIXED64:
+            case GPBType::UINT64:
                 GPBUtil::checkUint64($key);
                 break;
-            case GPBType::FIXED32:
-                GPBUtil::checkUint32($key);
-                break;
-            case GPBType::SFIXED64:
-                GPBUtil::checkInt64($key);
-                break;
-            case GPBType::SFIXED32:
-                GPBUtil::checkInt32($key);
-                break;
-            case GPBType::SINT64:
-                GPBUtil::checkInt64($key);
-                break;
-            case GPBType::SINT32:
-                GPBUtil::checkInt32($key);
-                break;
             case GPBType::BOOL:
                 GPBUtil::checkBool($key);
                 break;

+ 10 - 0
php/src/Google/Protobuf/Internal/RepeatedField.php

@@ -141,15 +141,22 @@ class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable
     public function offsetSet($offset, $value)
     {
         switch ($this->type) {
+            case GPBType::SFIXED32:
+            case GPBType::SINT32:
             case GPBType::INT32:
+            case GPBType::ENUM:
                 GPBUtil::checkInt32($value);
                 break;
+            case GPBType::FIXED32:
             case GPBType::UINT32:
                 GPBUtil::checkUint32($value);
                 break;
+            case GPBType::SFIXED64:
+            case GPBType::SINT64:
             case GPBType::INT64:
                 GPBUtil::checkInt64($value);
                 break;
+            case GPBType::FIXED64:
             case GPBType::UINT64:
                 GPBUtil::checkUint64($value);
                 break;
@@ -162,6 +169,9 @@ class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable
             case GPBType::BOOL:
                 GPBUtil::checkBool($value);
                 break;
+            case GPBType::BYTES:
+                GPBUtil::checkString($value, false);
+                break;
             case GPBType::STRING:
                 GPBUtil::checkString($value, true);
                 break;

+ 2 - 0
php/tests/compatibility_test.sh

@@ -122,6 +122,8 @@ composer install
 tests=( array_test.php encode_decode_test.php generated_class_test.php map_field_test.php well_known_test.php )
 sed -i.bak '/php_implementation_test.php/d' phpunit.xml
 sed -i.bak '/generated_phpdoc_test.php/d' phpunit.xml
+sed -i.bak 's/generated_phpdoc_test.php//g' tests/test.sh
+sed -i.bak '/memory_leak_test.php/d' tests/test.sh
 for t in "${tests[@]}"
 do
   remove_error_test tests/$t

+ 1 - 1
php/tests/test.sh

@@ -14,7 +14,7 @@ set -e
 phpize && ./configure CFLAGS='-g -O0' && make
 popd
 
-tests=( array_test.php encode_decode_test.php generated_class_test.php generated_phpdoc_test.php map_field_test.php well_known_test.php generated_service_test.php descriptors_test.php )
+tests=( array_test.php encode_decode_test.php generated_class_test.php map_field_test.php well_known_test.php descriptors_test.php )
 
 for t in "${tests[@]}"
 do