|  | @@ -0,0 +1,111 @@
 | 
	
		
			
				|  |  | +#!/bin/bash
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +use_php() {
 | 
	
		
			
				|  |  | +  VERSION=$1
 | 
	
		
			
				|  |  | +  PHP=`which php`
 | 
	
		
			
				|  |  | +  PHP_CONFIG=`which php-config`
 | 
	
		
			
				|  |  | +  PHPIZE=`which phpize`
 | 
	
		
			
				|  |  | +  ln -sfn "/usr/local/php-${VERSION}/bin/php" $PHP
 | 
	
		
			
				|  |  | +  ln -sfn "/usr/local/php-${VERSION}/bin/php-config" $PHP_CONFIG
 | 
	
		
			
				|  |  | +  ln -sfn "/usr/local/php-${VERSION}/bin/phpize" $PHPIZE
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +generate_proto() {
 | 
	
		
			
				|  |  | +  PROTOC1=$1
 | 
	
		
			
				|  |  | +  PROTOC2=$2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  rm -rf generated
 | 
	
		
			
				|  |  | +  mkdir generated
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  $PROTOC1 --php_out=generated proto/test_include.proto
 | 
	
		
			
				|  |  | +  $PROTOC2 --php_out=generated proto/test.proto proto/test_no_namespace.proto proto/test_prefix.proto
 | 
	
		
			
				|  |  | +  pushd ../../src
 | 
	
		
			
				|  |  | +  $PROTOC2 --php_out=../php/tests/generated google/protobuf/empty.proto
 | 
	
		
			
				|  |  | +  $PROTOC2 --php_out=../php/tests/generated -I../php/tests -I. ../php/tests/proto/test_import_descriptor_proto.proto
 | 
	
		
			
				|  |  | +  popd
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +set -ex
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Change to the script's directory.
 | 
	
		
			
				|  |  | +cd $(dirname $0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# The old version of protobuf that we are testing compatibility against.
 | 
	
		
			
				|  |  | +case "$1" in
 | 
	
		
			
				|  |  | +  ""|3.3.0)
 | 
	
		
			
				|  |  | +    OLD_VERSION=3.3.0
 | 
	
		
			
				|  |  | +    OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-linux-x86_64.exe
 | 
	
		
			
				|  |  | +    ;;
 | 
	
		
			
				|  |  | +  *)
 | 
	
		
			
				|  |  | +    echo "[ERROR]: Unknown version number: $1"
 | 
	
		
			
				|  |  | +    exit 1
 | 
	
		
			
				|  |  | +    ;;
 | 
	
		
			
				|  |  | +esac
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Extract the latest protobuf version number.
 | 
	
		
			
				|  |  | +VERSION_NUMBER=`grep "PHP_PROTOBUF_VERSION" ../ext/google/protobuf/protobuf.h | sed "s|#define PHP_PROTOBUF_VERSION \"\(.*\)\"|\1|"`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +echo "Running compatibility tests between $VERSION_NUMBER and $OLD_VERSION"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Check protoc
 | 
	
		
			
				|  |  | +[ -f ../../src/protoc ] || {
 | 
	
		
			
				|  |  | +  echo "[ERROR]: Please build protoc first."
 | 
	
		
			
				|  |  | +  exit 1
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Download old test.
 | 
	
		
			
				|  |  | +rm -rf protobuf
 | 
	
		
			
				|  |  | +git clone https://github.com/google/protobuf.git
 | 
	
		
			
				|  |  | +pushd protobuf
 | 
	
		
			
				|  |  | +git checkout v$OLD_VERSION
 | 
	
		
			
				|  |  | +popd
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Build and copy the new runtime
 | 
	
		
			
				|  |  | +use_php 5.5
 | 
	
		
			
				|  |  | +pushd ../ext/google/protobuf
 | 
	
		
			
				|  |  | +make clean || true
 | 
	
		
			
				|  |  | +phpize && ./configure && make
 | 
	
		
			
				|  |  | +popd
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +rm -rf protobuf/php/ext
 | 
	
		
			
				|  |  | +rm -rf protobuf/php/src
 | 
	
		
			
				|  |  | +cp -r ../ext protobuf/php/ext/
 | 
	
		
			
				|  |  | +cp -r ../src protobuf/php/src/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Download old version protoc compiler (for linux)
 | 
	
		
			
				|  |  | +wget $OLD_VERSION_PROTOC -O old_protoc
 | 
	
		
			
				|  |  | +chmod +x old_protoc
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +NEW_PROTOC=`pwd`/../../src/protoc
 | 
	
		
			
				|  |  | +OLD_PROTOC=`pwd`/old_protoc
 | 
	
		
			
				|  |  | +cd protobuf/php
 | 
	
		
			
				|  |  | +cp -r /usr/local/vendor-5.5 vendor
 | 
	
		
			
				|  |  | +wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit
 | 
	
		
			
				|  |  | +cd tests
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Test A.1:
 | 
	
		
			
				|  |  | +#   proto set 1: use old version
 | 
	
		
			
				|  |  | +#   proto set 2 which may import protos in set 1: use old version
 | 
	
		
			
				|  |  | +generate_proto $OLD_PROTOC $OLD_PROTOC
 | 
	
		
			
				|  |  | +./test.sh
 | 
	
		
			
				|  |  | +pushd ..
 | 
	
		
			
				|  |  | +phpunit
 | 
	
		
			
				|  |  | +popd
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Test A.2:
 | 
	
		
			
				|  |  | +#   proto set 1: use new version
 | 
	
		
			
				|  |  | +#   proto set 2 which may import protos in set 1: use old version
 | 
	
		
			
				|  |  | +generate_proto $NEW_PROTOC $OLD_PROTOC
 | 
	
		
			
				|  |  | +./test.sh
 | 
	
		
			
				|  |  | +pushd ..
 | 
	
		
			
				|  |  | +phpunit
 | 
	
		
			
				|  |  | +popd
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Test A.3:
 | 
	
		
			
				|  |  | +#   proto set 1: use old version
 | 
	
		
			
				|  |  | +#   proto set 2 which may import protos in set 1: use new version
 | 
	
		
			
				|  |  | +generate_proto $OLD_PROTOC $NEW_PROTOC
 | 
	
		
			
				|  |  | +./test.sh
 | 
	
		
			
				|  |  | +pushd ..
 | 
	
		
			
				|  |  | +phpunit
 | 
	
		
			
				|  |  | +popd
 |