#!/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 7.0.*|7.1.*|7.2.*) # Oddly older than for 5.6. Not sure the reason. PHPUNIT=phpunit-5.6.0.phar ;; 7.3.*|7.4.*) PHPUNIT=phpunit-8.phar ;; 8.0.*) PHPUNIT=phpunit-9.phar ;; *) echo "ERROR: Unsupported PHP version $PHP_VERSION" exit 1 ;; esac [ -f $PHPUNIT ] || wget https://phar.phpunit.de/$PHPUNIT tests=( ArrayTest.php EncodeDecodeTest.php GeneratedClassTest.php MapFieldTest.php WellKnownTest.php DescriptorsTest.php WrapperTypeSettersTest.php) for t in "${tests[@]}" do echo "****************************" echo "* $t" echo "****************************" php -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t echo "" done for t in "${tests[@]}" do echo "****************************" echo "* $t persistent" echo "****************************" php -d protobuf.keep_descriptor_pool_after_request=1 -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t echo "" done # # Make sure to run the memory test in debug mode. # php -dextension=../ext/google/protobuf/modules/protobuf.so memory_leak_test.php export ZEND_DONT_UNLOAD_MODULES=1 export USE_ZEND_ALLOC=0 valgrind --suppressions=valgrind.supp --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so memory_leak_test.php valgrind --suppressions=valgrind.supp --leak-check=yes php -d protobuf.keep_descriptor_pool_after_request=1 -dextension=../ext/google/protobuf/modules/protobuf.so memory_leak_test.php # TODO(teboring): Only for debug (phpunit has memory leak which blocks this beging used by # regression test.) # for t in "${tests[@]}" # do # echo "****************************" # echo "* $t (memory leak)" # echo "****************************" # valgrind --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so $PHPUNIT --bootstrap autoload.php $t # echo "" # done