aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeng Xiao <xfxyjwf@gmail.com>2018-07-13 09:55:17 -0700
committerGitHub <noreply@github.com>2018-07-13 09:55:17 -0700
commit4a0ad7b06fbd411fba3030f325ae54412ba30cc5 (patch)
tree91a0484862c830f50e4c51741b8816b01e181ffd
parent1ccb8d4b39a2f5b49ab0f168ab734c7b496ed718 (diff)
parentd779301670f8c1819a0774953391238719c472c2 (diff)
downloadprotobuf-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.c1
-rw-r--r--php/src/Google/Protobuf/Internal/GPBUtil.php7
-rw-r--r--php/src/Google/Protobuf/Internal/MapField.php31
-rw-r--r--php/src/Google/Protobuf/Internal/RepeatedField.php10
-rwxr-xr-xphp/tests/compatibility_test.sh2
-rwxr-xr-xphp/tests/test.sh2
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