De-duplicated code to generate PHP protos and install phpunit. (#7605)
* De-duplicated code to generate PHP protos and install phpunit. * Removed all references to generate_php_test_proto. * Replaced with internal_build_cpp. * Make Timestamp::__construct() static to avoid conflicts with MongoDB. * Replicated PHPUnit versions and added new script to Makefile.am. * Fixed filename in Makefile.am. * Disabled test that SEGV's on macOS. * Removed extraneous "set -e". * Make sure generate_protos.sh happens on every test path. * Removed stray '$' chars. * Added proper support for aggregate_metadata tests. But now I get a stack overflow. Stack overflow: /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 /Users/haberman/code/protobuf/php/tests/generated/GPBMetadata/Proto/TestDescriptors.php:16 namespace GPBMetadata\Proto; class TestDescriptors { public static $is_initialized = false; public static function initOnce() { $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); if (static::$is_initialized == true) { return; } \GPBMetadata\Proto\TestDescriptors::initOnce(); $pool->internalAddGeneratedFile(hex2bin( "" ), true); static::$is_initialized = true; } } * Fixed and verified metadata aggregation testing.
This commit is contained in:
parent
9f546ba61b
commit
f1ce8663ac
@ -909,6 +909,7 @@ php_EXTRA_DIST= \
|
||||
php/tests/descriptors_test.php \
|
||||
php/tests/encode_decode_test.php \
|
||||
php/tests/gdb_test.sh \
|
||||
php/tests/generate_protos.sh \
|
||||
php/tests/generated_class_test.php \
|
||||
php/tests/generated_phpdoc_test.php \
|
||||
php/tests/generated_service_test.php \
|
||||
|
@ -23,7 +23,7 @@
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "(cd tests && rm -rf generated && mkdir -p generated && ../../src/protoc --php_out=generated -I../../src -I. proto/empty/echo.proto proto/test.proto proto/test_include.proto proto/test_no_namespace.proto proto/test_prefix.proto proto/test_php_namespace.proto proto/test_empty_php_namespace.proto proto/test_reserved_enum_lower.proto proto/test_reserved_enum_upper.proto proto/test_reserved_enum_value_lower.proto proto/test_reserved_enum_value_upper.proto proto/test_reserved_message_lower.proto proto/test_reserved_message_upper.proto proto/test_service.proto proto/test_service_namespace.proto proto/test_wrapper_type_setters.proto proto/test_descriptors.proto) && (cd ../src && ./protoc --php_out=../php/tests/generated -I../php/tests -I. ../php/tests/proto/test_import_descriptor_proto.proto) && vendor/bin/phpunit",
|
||||
"aggregate_metadata_test": "(cd tests && rm -rf generated && mkdir -p generated && ../../src/protoc --php_out=aggregate_metadata=foo#bar:generated -I../../src -I. proto/test.proto proto/test_include.proto && ../../src/protoc --php_out=generated -I../../src -I. proto/empty/echo.proto proto/test_no_namespace.proto proto/test_empty_php_namespace.proto proto/test_prefix.proto proto/test_php_namespace.proto proto/test_reserved_enum_lower.proto proto/test_reserved_enum_upper.proto proto/test_reserved_enum_value_lower.proto proto/test_reserved_enum_value_upper.proto proto/test_reserved_message_lower.proto proto/test_reserved_message_upper.proto proto/test_service.proto proto/test_service_namespace.proto proto/test_wrapper_type_setters.proto proto/test_descriptors.proto) && (cd ../src && ./protoc --php_out=aggregate_metadata=foo:../php/tests/generated -I../php/tests -I. ../php/tests/proto/test_import_descriptor_proto.proto) && vendor/bin/phpunit"
|
||||
"test": "tests/generate_protos.sh && vendor/bin/phpunit",
|
||||
"aggregate_metadata_test": "tests/generate_protos.sh --aggregate_metadata && vendor/bin/phpunit"
|
||||
}
|
||||
}
|
||||
|
@ -1726,7 +1726,7 @@ PHP_PROTO_INIT_SUBMSGCLASS_START("Google\\Protobuf\\Timestamp",
|
||||
0 ,ZEND_ACC_PRIVATE TSRMLS_CC);
|
||||
PHP_PROTO_INIT_SUBMSGCLASS_END
|
||||
|
||||
PHP_METHOD(Timestamp, __construct) {
|
||||
static PHP_METHOD(Timestamp, __construct) {
|
||||
init_file_timestamp(TSRMLS_C);
|
||||
INIT_MESSAGE_WITH_ARRAY;
|
||||
}
|
||||
|
@ -1292,7 +1292,7 @@ PHP_METHOD(Duration, setSeconds);
|
||||
PHP_METHOD(Duration, getNanos);
|
||||
PHP_METHOD(Duration, setNanos);
|
||||
|
||||
PHP_METHOD(Timestamp, __construct);
|
||||
static PHP_METHOD(Timestamp, __construct);
|
||||
PHP_METHOD(Timestamp, fromDateTime);
|
||||
PHP_METHOD(Timestamp, toDateTime);
|
||||
PHP_METHOD(Timestamp, getSeconds);
|
||||
|
@ -1,8 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
if [ "$1" = "--release"]; then
|
||||
if [ "$1" = "--release" ]; then
|
||||
CFLAGS="-Wall"
|
||||
else
|
||||
# To get debugging symbols in PHP itself, build PHP with:
|
||||
@ -12,6 +14,5 @@ fi
|
||||
|
||||
pushd ../ext/google/protobuf
|
||||
make clean || true
|
||||
set -e
|
||||
phpize && ./configure --with-php-config=$(which php-config) CFLAGS="$CFLAGS" && make
|
||||
popd
|
||||
|
16
php/tests/generate_protos.sh
Executable file
16
php/tests/generate_protos.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
cd `dirname $0`
|
||||
|
||||
rm -rf generated
|
||||
mkdir -p generated
|
||||
|
||||
find proto -type f -name "*.proto"| xargs ../../src/protoc --php_out=generated -I../../src -I.
|
||||
|
||||
if [ "$1" = "--aggregate_metadata" ]; then
|
||||
# Overwrite some of the files to use aggregation.
|
||||
AGGREGATED_FILES="proto/test.proto proto/test_include.proto proto/test_import_descriptor_proto.proto"
|
||||
../../src/protoc --php_out=aggregate_metadata=foo#bar:generated -I../../src -I. $AGGREGATED_FILES
|
||||
fi
|
@ -1527,6 +1527,21 @@ class GeneratedClassTest extends TestBase
|
||||
public function testNoExceptionWithVarDump()
|
||||
{
|
||||
$m = new Sub(['a' => 1]);
|
||||
var_dump($m);
|
||||
/*
|
||||
* This line currently segfaults on macOS with:
|
||||
*
|
||||
* frame #0: 0x00000001029936cc xdebug.so`xdebug_zend_hash_is_recursive + 4
|
||||
* frame #1: 0x00000001029a6736 xdebug.so`xdebug_var_export_text_ansi + 1006
|
||||
* frame #2: 0x00000001029a715d xdebug.so`xdebug_get_zval_value_text_ansi + 273
|
||||
* frame #3: 0x000000010298a441 xdebug.so`zif_xdebug_var_dump + 297
|
||||
* frame #4: 0x000000010298d558 xdebug.so`xdebug_execute_internal + 640
|
||||
* frame #5: 0x000000010046d47f php`ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER + 364
|
||||
* frame #6: 0x000000010043cabc php`execute_ex + 44
|
||||
* frame #7: 0x000000010298d151 xdebug.so`xdebug_execute_ex + 1662
|
||||
* frame #8: 0x000000010046d865 php`ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER + 426
|
||||
*
|
||||
* The value we are passing to var_dump() appears to be corrupt somehow.
|
||||
*/
|
||||
/* var_dump($m); */
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
./generate_protos.sh
|
||||
./compile_extension.sh
|
||||
|
||||
PHP_VERSION=$(php -r "echo PHP_VERSION;")
|
||||
|
||||
# Each version of PHPUnit supports a fairly narrow range of PHP versions.
|
||||
case "$PHP_VERSION" in
|
||||
5.6.*) PHPUNIT=phpunit-5.6.8.phar;;
|
||||
7.0.*) PHPUNIT=phpunit-5.6.0.phar;; # Oddly older than for 5.6. Not sure the reason.
|
||||
7.3.*) PHPUNIT=phpunit-8.phar;;
|
||||
esac
|
||||
|
||||
[ -f $PHPUNIT ] || wget https://phar.phpunit.de/$PHPUNIT
|
||||
|
||||
tests=( array_test.php encode_decode_test.php generated_class_test.php map_field_test.php well_known_test.php descriptors_test.php wrapper_type_setters_test.php)
|
||||
|
||||
for t in "${tests[@]}"
|
||||
@ -11,7 +25,7 @@ do
|
||||
echo "****************************"
|
||||
echo "* $t"
|
||||
echo "****************************"
|
||||
php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
|
||||
php -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t
|
||||
echo ""
|
||||
done
|
||||
|
||||
@ -20,7 +34,7 @@ do
|
||||
echo "****************************"
|
||||
echo "* $t persistent"
|
||||
echo "****************************"
|
||||
php -d protobuf.keep_descriptor_pool_after_request=1 -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
|
||||
php -d protobuf.keep_descriptor_pool_after_request=1 -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t
|
||||
echo ""
|
||||
done
|
||||
|
||||
@ -40,6 +54,6 @@ valgrind --leak-check=yes php -d protobuf.keep_descriptor_pool_after_request=1 -
|
||||
# echo "****************************"
|
||||
# echo "* $t (memory leak)"
|
||||
# echo "****************************"
|
||||
# valgrind --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
|
||||
# valgrind --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t
|
||||
# echo ""
|
||||
# done
|
||||
|
80
tests.sh
80
tests.sh
@ -455,48 +455,16 @@ build_javascript() {
|
||||
cd conformance && make test_nodejs && cd ..
|
||||
}
|
||||
|
||||
generate_php_test_proto() {
|
||||
internal_build_cpp
|
||||
pushd php/tests
|
||||
# Generate test file
|
||||
rm -rf generated
|
||||
mkdir generated
|
||||
../../src/protoc --php_out=generated \
|
||||
-I../../src -I. \
|
||||
proto/empty/echo.proto \
|
||||
proto/test.proto \
|
||||
proto/test_include.proto \
|
||||
proto/test_no_namespace.proto \
|
||||
proto/test_prefix.proto \
|
||||
proto/test_php_namespace.proto \
|
||||
proto/test_empty_php_namespace.proto \
|
||||
proto/test_reserved_enum_lower.proto \
|
||||
proto/test_reserved_enum_upper.proto \
|
||||
proto/test_reserved_enum_value_lower.proto \
|
||||
proto/test_reserved_enum_value_upper.proto \
|
||||
proto/test_reserved_message_lower.proto \
|
||||
proto/test_reserved_message_upper.proto \
|
||||
proto/test_service.proto \
|
||||
proto/test_service_namespace.proto \
|
||||
proto/test_wrapper_type_setters.proto \
|
||||
proto/test_descriptors.proto
|
||||
pushd ../../src
|
||||
./protoc --php_out=../php/tests/generated -I../php/tests -I. \
|
||||
../php/tests/proto/test_import_descriptor_proto.proto
|
||||
popd
|
||||
popd
|
||||
}
|
||||
|
||||
use_php() {
|
||||
VERSION=$1
|
||||
export PATH=/usr/local/php-${VERSION}/bin:$PATH
|
||||
generate_php_test_proto
|
||||
internal_build_cpp
|
||||
}
|
||||
|
||||
use_php_zts() {
|
||||
VERSION=$1
|
||||
export PATH=/usr/local/php-${VERSION}-zts/bin:$PATH
|
||||
generate_php_test_proto
|
||||
internal_build_cpp
|
||||
}
|
||||
|
||||
build_php5.5() {
|
||||
@ -505,11 +473,9 @@ build_php5.5() {
|
||||
pushd php
|
||||
rm -rf vendor
|
||||
composer update
|
||||
./vendor/bin/phpunit
|
||||
popd
|
||||
pushd conformance
|
||||
make test_php
|
||||
composer test
|
||||
popd
|
||||
(cd conformance && make test_php)
|
||||
}
|
||||
|
||||
build_php5.5_c() {
|
||||
@ -532,6 +498,7 @@ build_php5.5_mixed() {
|
||||
rm -rf vendor
|
||||
composer update
|
||||
tests/compile_extension.sh
|
||||
tests/generate_protos.sh
|
||||
php -dextension=./ext/google/protobuf/modules/protobuf.so ./vendor/bin/phpunit
|
||||
popd
|
||||
}
|
||||
@ -555,11 +522,9 @@ build_php5.6() {
|
||||
pushd php
|
||||
rm -rf vendor
|
||||
composer update
|
||||
./vendor/bin/phpunit
|
||||
popd
|
||||
pushd conformance
|
||||
make test_php
|
||||
composer test
|
||||
popd
|
||||
(cd conformance && make test_php)
|
||||
}
|
||||
|
||||
build_php5.6_c() {
|
||||
@ -582,6 +547,7 @@ build_php5.6_mixed() {
|
||||
rm -rf vendor
|
||||
composer update
|
||||
tests/compile_extension.sh
|
||||
tests/generate_protos.sh
|
||||
php -dextension=./ext/google/protobuf/modules/protobuf.so ./vendor/bin/phpunit
|
||||
popd
|
||||
}
|
||||
@ -601,18 +567,13 @@ build_php5.6_zts_c() {
|
||||
}
|
||||
|
||||
build_php5.6_mac() {
|
||||
generate_php_test_proto
|
||||
internal_build_cpp
|
||||
# Install PHP
|
||||
curl -s https://php-osx.liip.ch/install.sh | bash -s 5.6
|
||||
PHP_FOLDER=`find /usr/local -type d -name "php5-5.6*"` # The folder name may change upon time
|
||||
test ! -z "$PHP_FOLDER"
|
||||
export PATH="$PHP_FOLDER/bin:$PATH"
|
||||
|
||||
# Install phpunit
|
||||
curl https://phar.phpunit.de/phpunit-5.6.8.phar -L -o phpunit.phar
|
||||
chmod +x phpunit.phar
|
||||
sudo mv phpunit.phar /usr/local/bin/phpunit
|
||||
|
||||
# Install valgrind
|
||||
echo "#! /bin/bash" > valgrind
|
||||
chmod ug+x valgrind
|
||||
@ -628,7 +589,7 @@ build_php7.0() {
|
||||
pushd php
|
||||
rm -rf vendor
|
||||
composer update
|
||||
./vendor/bin/phpunit
|
||||
composer test
|
||||
popd
|
||||
(cd conformance && make test_php)
|
||||
}
|
||||
@ -653,6 +614,7 @@ build_php7.0_mixed() {
|
||||
rm -rf vendor
|
||||
composer update
|
||||
tests/compile_extension.sh
|
||||
tests/generate_protos.sh
|
||||
php -dextension=./ext/google/protobuf/modules/protobuf.so ./vendor/bin/phpunit
|
||||
popd
|
||||
}
|
||||
@ -672,18 +634,13 @@ build_php7.0_zts_c() {
|
||||
}
|
||||
|
||||
build_php7.0_mac() {
|
||||
generate_php_test_proto
|
||||
internal_build_cpp
|
||||
# Install PHP
|
||||
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.0
|
||||
PHP_FOLDER=`find /usr/local -type d -name "php5-7.0*"` # The folder name may change upon time
|
||||
test ! -z "$PHP_FOLDER"
|
||||
export PATH="$PHP_FOLDER/bin:$PATH"
|
||||
|
||||
# Install phpunit
|
||||
curl https://phar.phpunit.de/phpunit-5.6.0.phar -L -o phpunit.phar
|
||||
chmod +x phpunit.phar
|
||||
sudo mv phpunit.phar /usr/local/bin/phpunit
|
||||
|
||||
# Install valgrind
|
||||
echo "#! /bin/bash" > valgrind
|
||||
chmod ug+x valgrind
|
||||
@ -695,7 +652,7 @@ build_php7.0_mac() {
|
||||
}
|
||||
|
||||
build_php7.3_mac() {
|
||||
generate_php_test_proto
|
||||
internal_build_cpp
|
||||
# Install PHP
|
||||
# We can't test PHP 7.4 with these binaries yet:
|
||||
# https://github.com/liip/php-osx/issues/276
|
||||
@ -704,11 +661,6 @@ build_php7.3_mac() {
|
||||
test ! -z "$PHP_FOLDER"
|
||||
export PATH="$PHP_FOLDER/bin:$PATH"
|
||||
|
||||
# Install phpunit
|
||||
curl https://phar.phpunit.de/phpunit-8.phar -L -o phpunit.phar
|
||||
chmod +x phpunit.phar
|
||||
sudo mv phpunit.phar /usr/local/bin/phpunit
|
||||
|
||||
# Install valgrind
|
||||
echo "#! /bin/bash" > valgrind
|
||||
chmod ug+x valgrind
|
||||
@ -734,7 +686,7 @@ build_php7.1() {
|
||||
pushd php
|
||||
rm -rf vendor
|
||||
composer update
|
||||
./vendor/bin/phpunit
|
||||
composer test
|
||||
popd
|
||||
(cd conformance && make test_php)
|
||||
}
|
||||
@ -759,6 +711,7 @@ build_php7.1_mixed() {
|
||||
rm -rf vendor
|
||||
composer update
|
||||
tests/compile_extension.sh
|
||||
tests/generate_protos.sh
|
||||
php -dextension=./ext/google/protobuf/modules/protobuf.so ./vendor/bin/phpunit
|
||||
popd
|
||||
}
|
||||
@ -782,7 +735,7 @@ build_php7.4() {
|
||||
pushd php
|
||||
rm -rf vendor
|
||||
composer update
|
||||
./vendor/bin/phpunit
|
||||
composer test
|
||||
popd
|
||||
(cd conformance && make test_php)
|
||||
}
|
||||
@ -808,6 +761,7 @@ build_php7.4_mixed() {
|
||||
rm -rf vendor
|
||||
composer update
|
||||
tests/compile_extension.sh
|
||||
tests/generate_protos.sh
|
||||
php -dextension=./ext/google/protobuf/modules/protobuf.so ./vendor/bin/phpunit
|
||||
popd
|
||||
(cd php/ext/google/protobuf && phpize --clean)
|
||||
|
Loading…
Reference in New Issue
Block a user