diff options
author | Colin Cross <ccross@android.com> | 2018-11-04 17:34:26 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2018-11-04 17:36:28 -0800 |
commit | 11fb7aeddd6ff7229bcf0834017f8091f97d7edb (patch) | |
tree | c6efd4099d63806180b2310de5c9ea81c2f1e26e /tests.sh | |
parent | 584979bf55601bd23e533d704a75cd0e95af66b9 (diff) | |
download | protobuf-11fb7aeddd6ff7229bcf0834017f8091f97d7edb.tar.gz |
Revert "Merge changes from topic "protobuf3.5.2""
This reverts commit 584979bf55601bd23e533d704a75cd0e95af66b9, reversing
changes made to 219bbcdcd5b1dbf19758ff2e75d971b98215896d:
Remove libprotobuf-java-lite
Update stubs
Revert "Wrap liblog dependency in GOOGLE_PROTOBUF_MIN_LOG_LEVEL"
Update javamicro to compile against v3.5.2
Update Android.bp to match BUILD
Rerun configure
Merge tag 'v3.5.2' into master
Revert "Remove 2 usage of isspace as they are not stl port compatible"
Revert "Use GOOGLE_CHECK Macro for validation"
Revert "Emit macros with proper parentheses."
Revert "Generate syntactically correct java for imports from classes with no packages."
Revert "Fix some unused parameter warnings"
Revert "protobuf: work around a static analyzer bug"
Revert "Suppress clang-analyzer-core.uninitialized.UndefReturn warning."
Change-Id: Ia04c0b15ebd45e8c7e02edaa6e1f10aeb11ef337
Diffstat (limited to 'tests.sh')
-rwxr-xr-x | tests.sh | 497 |
1 files changed, 91 insertions, 406 deletions
@@ -28,8 +28,7 @@ internal_build_cpp() { fi ./autogen.sh - ./configure CXXFLAGS="-fPIC" # -fPIC is needed for python cpp test. - # See python/setup.py for more details + ./configure make -j2 } @@ -38,51 +37,13 @@ build_cpp() { make check -j2 cd conformance && make test_cpp && cd .. - # The benchmark code depends on cmake, so test if it is installed before - # trying to do the build. - # NOTE: The travis macOS images say they have cmake, but the xcode8.1 image - # appears to be missing it: https://github.com/travis-ci/travis-ci/issues/6996 - if [[ $(type cmake 2>/dev/null) ]]; then - # Verify benchmarking code can build successfully. - git submodule init - git submodule update - cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make && cd ../.. - cd benchmarks && make && ./generate-datasets && cd .. - else - echo "" - echo "WARNING: Skipping validation of the bench marking code, cmake isn't installed." - echo "" - fi + # Verify benchmarking code can build successfully. + cd benchmarks && make && ./generate-datasets && cd .. } build_cpp_distcheck() { ./autogen.sh ./configure - make dist - - # List all files that should be included in the distribution package. - git ls-files | grep "^\(java\|python\|objectivec\|csharp\|js\|ruby\|php\|cmake\|examples\|src/google/protobuf/.*\.proto\)" |\ - grep -v ".gitignore" | grep -v "java/compatibility_tests" |\ - grep -v "python/compatibility_tests" | grep -v "csharp/compatibility_tests" > dist.lst - # Unzip the dist tar file. - DIST=`ls *.tar.gz` - tar -xf $DIST - cd ${DIST//.tar.gz} - # Check if every file exists in the dist tar file. - FILES_MISSING="" - for FILE in $(<../dist.lst); do - if ! file $FILE &>/dev/null; then - echo "$FILE is not found!" - FILES_MISSING="$FILE $FILES_MISSING" - fi - done - cd .. - if [ ! -z "$FILES_MISSING" ]; then - echo "Missing files in EXTRA_DIST: $FILES_MISSING" - exit 1 - fi - - # Do the regular dist-check for C++. make distcheck -j2 } @@ -93,22 +54,20 @@ build_csharp() { internal_build_cpp NUGET=/usr/local/bin/nuget.exe - # Perform "dotnet new" once to get the setup preprocessing out of the - # way. That spews a lot of output (including backspaces) into logs - # otherwise, and can cause problems. It doesn't matter if this step - # is performed multiple times; it's cheap after the first time anyway. - # (It also doesn't matter if it's unnecessary, which it will be on some - # systems. It's necessary on Jenkins in order to avoid unprintable - # characters appearing in the JUnit output.) - mkdir dotnettmp - (cd dotnettmp; dotnet new > /dev/null) - rm -rf dotnettmp + if [ "$TRAVIS" == "true" ]; then + # Install latest version of Mono + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF + echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list + echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list + sudo apt-get update -qq + sudo apt-get install -qq mono-devel referenceassemblies-pcl nunit + wget www.nuget.org/NuGet.exe -O nuget.exe + NUGET=../../nuget.exe + fi + (cd csharp/src; mono $NUGET restore) csharp/buildall.sh cd conformance && make test_csharp && cd .. - - # Run csharp compatibility test between 3.0.0 and the current version. - csharp/compatibility_tests/v3.0.0/test.sh 3.0.0 } build_golang() { @@ -118,26 +77,27 @@ build_golang() { export PATH="`pwd`/src:$PATH" # Install Go and the Go protobuf compiler plugin. - on_travis sudo apt-get update -qq - on_travis sudo apt-get install -qq golang - + sudo apt-get update -qq + sudo apt-get install -qq golang export GOPATH="$HOME/gocode" mkdir -p "$GOPATH/src/github.com/google" - rm -f "$GOPATH/src/github.com/google/protobuf" ln -s "`pwd`" "$GOPATH/src/github.com/google/protobuf" export PATH="$GOPATH/bin:$PATH" go get github.com/golang/protobuf/protoc-gen-go - cd examples && PROTO_PATH="-I../src -I." make gotest && cd .. + cd examples && make gotest && cd .. } use_java() { version=$1 case "$version" in + jdk6) + on_travis sudo apt-get install openjdk-6-jdk + export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH + ;; jdk7) on_travis sudo apt-get install openjdk-7-jdk export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH - export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 ;; oracle7) if [ "$TRAVIS" == "true" ]; then @@ -148,7 +108,6 @@ use_java() { yes | sudo apt-get install oracle-java7-installer fi; export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH - export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 ;; esac @@ -159,7 +118,6 @@ use_java() { which java java -version - $MVN -version } # --batch-mode supresses download progress output that spams the logs. @@ -192,6 +150,10 @@ build_javanano() { cd javanano && $MVN test && cd .. } +build_java_jdk6() { + use_java jdk6 + build_java jdk6 +} build_java_jdk7() { use_java jdk7 build_java_with_conformance_tests @@ -200,15 +162,11 @@ build_java_oracle7() { use_java oracle7 build_java oracle7 } -build_java_compatibility() { - use_java jdk7 - internal_build_cpp - # Use the unit-tests extraced from 2.5.0 to test the compatibilty between - # 3.0.0-beta-4 and the current version. - cd java/compatibility_tests/v2.5.0 - ./test.sh 3.0.0-beta-4 -} +build_javanano_jdk6() { + use_java jdk6 + build_javanano +} build_javanano_jdk7() { use_java jdk7 build_javanano @@ -233,43 +191,65 @@ internal_install_python_deps() { sudo apt-get install -y python-software-properties # for apt-add-repository sudo apt-add-repository -y ppa:fkrull/deadsnakes sudo apt-get update -qq + sudo apt-get install -y python2.6 python2.6-dev sudo apt-get install -y python3.3 python3.3-dev sudo apt-get install -y python3.4 python3.4-dev - sudo apt-get install -y python3.5 python3.5-dev - sudo apt-get install -y python3.6 python3.6-dev fi } -build_objectivec_ios() { +internal_objectivec_common () { + # Make sure xctool is up to date. Adapted from + # http://docs.travis-ci.com/user/osx-ci-environment/ + # We don't use a before_install because we test multiple OSes. + brew update + brew outdated xctool || brew upgrade xctool # Reused the build script that takes care of configuring and ensuring things - # are up to date. The OS X test runs the objc conformance test, so skip it - # here. - # Note: travis has xctool installed, and we've looked at using it in the past - # but it has ended up proving unreliable (bugs), an they are removing build - # support in favor of xcbuild (or just xcodebuild). + # are up to date. Xcode and conformance tests will be directly invoked. objectivec/DevTools/full_mac_build.sh \ - --core-only --skip-xcode-osx --skip-objc-conformance "$@" + --core-only --skip-xcode --skip-objc-conformance } -build_objectivec_ios_debug() { - build_objectivec_ios --skip-xcode-release +internal_xctool_debug_and_release() { + # Always use -reporter plain to avoid escape codes in output (makes travis + # logs easier to read). + xctool -reporter plain -configuration Debug "$@" + xctool -reporter plain -configuration Release "$@" } -build_objectivec_ios_release() { - build_objectivec_ios --skip-xcode-debug +build_objectivec_ios() { + internal_objectivec_common + # https://github.com/facebook/xctool/issues/509 - unlike xcodebuild, xctool + # doesn't support >1 destination, so we have to build first and then run the + # tests one destination at a time. + internal_xctool_debug_and_release \ + -project objectivec/ProtocolBuffers_iOS.xcodeproj \ + -scheme ProtocolBuffers \ + -sdk iphonesimulator \ + build-tests + IOS_DESTINATIONS=( + "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit + "platform=iOS Simulator,name=iPhone 6,OS=9.2" # 64bit + "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit + "platform=iOS Simulator,name=iPad Air,OS=9.2" # 64bit + ) + for i in "${IOS_DESTINATIONS[@]}" ; do + internal_xctool_debug_and_release \ + -project objectivec/ProtocolBuffers_iOS.xcodeproj \ + -scheme ProtocolBuffers \ + -sdk iphonesimulator \ + -destination "${i}" \ + run-tests + done } build_objectivec_osx() { - # Reused the build script that takes care of configuring and ensuring things - # are up to date. - objectivec/DevTools/full_mac_build.sh \ - --core-only --skip-xcode-ios -} - -build_objectivec_cocoapods_integration() { - # Update pod to the latest version. - gem install cocoapods --no-ri --no-rdoc - objectivec/Tests/CocoaPods/run_tests.sh + internal_objectivec_common + internal_xctool_debug_and_release \ + -project objectivec/ProtocolBuffers_OSX.xcodeproj \ + -scheme ProtocolBuffers \ + -destination "platform=OS X,arch=x86_64" \ + test + cd conformance && make test_objc && cd .. } build_python() { @@ -278,7 +258,7 @@ build_python() { cd python # Only test Python 2.6/3.x on Linux if [ $(uname -s) == "Linux" ]; then - envlist=py\{27,33,34,35,36\}-python + envlist=py\{26,27,33,34\}-python else envlist=py27-python fi @@ -292,9 +272,10 @@ build_python_cpp() { export LD_LIBRARY_PATH=../src/.libs # for Linux export DYLD_LIBRARY_PATH=../src/.libs # for OS X cd python - # Only test Python 3.x on Linux + # Only test Python 2.6/3.x on Linux if [ $(uname -s) == "Linux" ]; then - envlist=py\{27,33,34,35,36\}-cpp + # py26 is currently disabled due to json_format + envlist=py\{27,33,34\}-cpp else envlist=py27-cpp fi @@ -302,16 +283,14 @@ build_python_cpp() { cd .. } -build_python_compatibility() { - internal_build_cpp - # Use the unit-tests extraced from 2.5.0 to test the compatibilty. - cd python/compatibility_tests/v2.5.0 - # Test between 2.5.0 and the current version. - ./test.sh 2.5.0 - # Test between 3.0.0-beta-1 and the current version. - ./test.sh 3.0.0-beta-1 +build_ruby19() { + internal_build_cpp # For conformance tests. + cd ruby && bash travis-test.sh ruby-1.9 && cd .. +} +build_ruby20() { + internal_build_cpp # For conformance tests. + cd ruby && bash travis-test.sh ruby-2.0 && cd .. } - build_ruby21() { internal_build_cpp # For conformance tests. cd ruby && bash travis-test.sh ruby-2.1 && cd .. @@ -322,293 +301,12 @@ build_ruby22() { } build_jruby() { internal_build_cpp # For conformance tests. - # TODO(xiaofeng): Upgrade to jruby-9.x. There are some broken jests to be - # fixed. - cd ruby && bash travis-test.sh jruby-1.7 && cd .. -} -build_ruby_all() { - build_ruby21 - build_ruby22 - # TODO(teboring): Disable jruby test temperarily for it randomly fails. - # https://grpc-testing.appspot.com/job/protobuf_pull_request/735/consoleFull. - # build_jruby + cd ruby && bash travis-test.sh jruby && cd .. } build_javascript() { internal_build_cpp cd js && npm install && npm test && cd .. - 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 \ - 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_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 - 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_php_test_proto -} - -use_php_zts() { - VERSION=$1 - PHP=`which php` - PHP_CONFIG=`which php-config` - PHPIZE=`which phpize` - ln -sfn "/usr/local/php-${VERSION}-zts/bin/php" $PHP - ln -sfn "/usr/local/php-${VERSION}-zts/bin/php-config" $PHP_CONFIG - ln -sfn "/usr/local/php-${VERSION}-zts/bin/phpize" $PHPIZE - generate_php_test_proto -} - -use_php_bc() { - VERSION=$1 - PHP=`which php` - PHP_CONFIG=`which php-config` - PHPIZE=`which phpize` - ln -sfn "/usr/local/php-${VERSION}-bc/bin/php" $PHP - ln -sfn "/usr/local/php-${VERSION}-bc/bin/php-config" $PHP_CONFIG - ln -sfn "/usr/local/php-${VERSION}-bc/bin/phpize" $PHPIZE - generate_php_test_proto -} - -build_php5.5() { - use_php 5.5 - - pushd php - rm -rf vendor - cp -r /usr/local/vendor-5.5 vendor - wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit - phpunit - popd - pushd conformance - make test_php - popd -} - -build_php5.5_c() { - use_php 5.5 - wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit - pushd php/tests - /bin/bash ./test.sh 5.5 - popd - # TODO(teboring): Add it back - # pushd conformance - # make test_php_c - # popd -} - -build_php5.5_zts_c() { - use_php_zts 5.5 - wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 5.5-zts && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_zts_c - # popd -} - -build_php5.6() { - use_php 5.6 - pushd php - rm -rf vendor - cp -r /usr/local/vendor-5.6 vendor - wget https://phar.phpunit.de/phpunit-5.7.0.phar -O /usr/bin/phpunit - phpunit - popd - pushd conformance - make test_php - popd -} - -build_php5.6_c() { - use_php 5.6 - wget https://phar.phpunit.de/phpunit-5.7.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 5.6 && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_c - # popd -} - -build_php5.6_zts_c() { - use_php_zts 5.6 - wget https://phar.phpunit.de/phpunit-5.7.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 5.6-zts && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_zts_c - # popd -} - -build_php5.6_mac() { - generate_php_test_proto - # 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 - export PATH="$PHP_FOLDER/bin:$PATH" - - # Install phpunit - curl https://phar.phpunit.de/phpunit-5.6.10.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 - sudo mv valgrind /usr/local/bin/valgrind - - # Test - cd php/tests && /bin/bash ./test.sh && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_c - # popd -} - -build_php7.0() { - use_php 7.0 - pushd php - rm -rf vendor - cp -r /usr/local/vendor-7.0 vendor - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - phpunit - popd - pushd conformance - make test_php - popd -} - -build_php7.0_c() { - use_php 7.0 - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 7.0 && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_c - # popd -} - -build_php7.0_zts_c() { - use_php_zts 7.0 - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 7.0-zts && cd ../.. - # TODO(teboring): Add it back. - # pushd conformance - # make test_php_zts_c - # popd -} - -build_php7.0_mac() { - generate_php_test_proto - # Install PHP - curl -s https://php-osx.liip.ch/install.sh | bash -s 7.0 - PHP_FOLDER=`find /usr/local -type d -name "php7-7.0*"` # The folder name may change upon time - 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 - sudo mv valgrind /usr/local/bin/valgrind - - # Test - cd php/tests && /bin/bash ./test.sh && cd ../.. - # TODO(teboring): Add it back - # pushd conformance - # make test_php_c - # popd -} - -build_php_compatibility() { - internal_build_cpp - php/tests/compatibility_test.sh -} - -build_php7.1() { - use_php 7.1 - pushd php - rm -rf vendor - cp -r /usr/local/vendor-7.1 vendor - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - phpunit - popd - pushd conformance - # TODO(teboring): Add it back - # make test_php - popd -} - -build_php7.1_c() { - use_php 7.1 - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 7.1 && cd ../.. - pushd conformance - # make test_php_c - popd -} - -build_php7.1_zts_c() { - use_php_zts 7.1 - wget https://phar.phpunit.de/phpunit-5.6.0.phar -O /usr/bin/phpunit - cd php/tests && /bin/bash ./test.sh 7.1-zts && cd ../.. - pushd conformance - # make test_php_c - popd -} - -build_php_all_32() { - build_php5.5 - build_php5.6 - build_php7.0 - build_php7.1 - build_php5.5_c - build_php5.6_c - build_php7.0_c - build_php7.1_c - build_php5.5_zts_c - build_php5.6_zts_c - build_php7.0_zts_c - build_php7.1_zts_c -} - -build_php_all() { - build_php_all_32 - build_php_compatibility } # Note: travis currently does not support testing more than one language so the @@ -624,35 +322,22 @@ build_php_all() { if [ "$#" -ne 1 ]; then echo " Usage: $0 { cpp | - cpp_distcheck | csharp | + java_jdk6 | java_jdk7 | java_oracle7 | - java_compatibility | + javanano_jdk6 | javanano_jdk7 | javanano_oracle7 | objectivec_ios | - objectivec_ios_debug | - objectivec_ios_release | objectivec_osx | - objectivec_cocoapods_integration | python | python_cpp | - python_compatibility | + ruby19 | + ruby20 | ruby21 | ruby22 | - jruby | - ruby_all | - php5.5 | - php5.5_c | - php5.6 | - php5.6_c | - php7.0 | - php7.0_c | - php_compatibility | - php7.1 | - php7.1_c | - php_all) + jruby } " exit 1 fi |