diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2018-07-13 09:55:17 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 09:55:17 -0700 |
commit | 4a0ad7b06fbd411fba3030f325ae54412ba30cc5 (patch) | |
tree | 91a0484862c830f50e4c51741b8816b01e181ffd | |
parent | 1ccb8d4b39a2f5b49ab0f168ab734c7b496ed718 (diff) | |
parent | d779301670f8c1819a0774953391238719c472c2 (diff) | |
download | protobuf-4a0ad7b06fbd411fba3030f325ae54412ba30cc5.tar.gz protobuf-4a0ad7b06fbd411fba3030f325ae54412ba30cc5.tar.bz2 protobuf-4a0ad7b06fbd411fba3030f325ae54412ba30cc5.zip |
Merge pull request #4908 from TeBoring/php-bug
Fix php tests
-rw-r--r-- | php/ext/google/protobuf/message.c | 1 | ||||
-rw-r--r-- | php/src/Google/Protobuf/Internal/GPBUtil.php | 7 | ||||
-rw-r--r-- | php/src/Google/Protobuf/Internal/MapField.php | 31 | ||||
-rw-r--r-- | php/src/Google/Protobuf/Internal/RepeatedField.php | 10 | ||||
-rwxr-xr-x | php/tests/compatibility_test.sh | 2 | ||||
-rwxr-xr-x | php/tests/test.sh | 2 |
6 files changed, 29 insertions, 24 deletions
diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c index e28e42a1..9363191d 100644 --- a/php/ext/google/protobuf/message.c +++ b/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))) { diff --git a/php/src/Google/Protobuf/Internal/GPBUtil.php b/php/src/Google/Protobuf/Internal/GPBUtil.php index b75d9bab..ec0bf6bd 100644 --- a/php/src/Google/Protobuf/Internal/GPBUtil.php +++ b/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( diff --git a/php/src/Google/Protobuf/Internal/MapField.php b/php/src/Google/Protobuf/Internal/MapField.php index f7d7b710..1b2b0cf0 100644 --- a/php/src/Google/Protobuf/Internal/MapField.php +++ b/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; diff --git a/php/src/Google/Protobuf/Internal/RepeatedField.php b/php/src/Google/Protobuf/Internal/RepeatedField.php index e0ddef50..e9b92d8d 100644 --- a/php/src/Google/Protobuf/Internal/RepeatedField.php +++ b/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; diff --git a/php/tests/compatibility_test.sh b/php/tests/compatibility_test.sh index b5b255ea..b377d85c 100755 --- a/php/tests/compatibility_test.sh +++ b/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 diff --git a/php/tests/test.sh b/php/tests/test.sh index 6e70eb2a..700dd295 100755 --- a/php/tests/test.sh +++ b/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 |