Try running multiple tests in a row.

This commit is contained in:
Josh Haberman 2016-02-18 20:10:23 -08:00
parent d33e93b833
commit 738393b2c0
4 changed files with 57 additions and 51 deletions

View File

@ -10,7 +10,7 @@ os:
# The Objective C build needs Xcode 7.0 or later.
osx_image: xcode7.2
script:
- ./tools/run_tests/travis.sh $CONFIG
- ./tools/run_tests/tests.sh $CONFIG
env:
- CONFIG=cpp
- CONFIG=cpp_distcheck

View File

@ -1,17 +1,23 @@
#!/bin/bash
MY_DIR="$(dirname "$0")"
TEST_SCRIPT=$MY_DIR/tests.sh
BUILD_DIR=/tmp/protobuf
source $MY_DIR/tests.sh
# Set value used in tests.sh.
PARALLELISM=-j8
set -x # display all commands
rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR
cd $BUILD_DIR
git clone /var/local/jenkins/protobuf
cd protobuf
build_cpp
# If protoc fails to build, we can't test anything else.
$TEST_SCRIPT cpp || exit 1
# Other tests can fail and we keep on going.
$TEST_SCRIPT java_jdk6
$TEST_SCRIPT java_jdk7

49
tools/run_tests/tests.sh Normal file → Executable file
View File

@ -1,9 +1,13 @@
# This file is not intended to be executed directly. It is intended to be
# included in a larger shell script.
#!/bin/bash
# For when some other test needs the C++ main build, including protoc and
# libprotobuf.
internal_build_cpp() {
if [ -f src/protoc ]; then
# Already built.
return
fi
if [[ $(uname -s) == "Linux" && "$TRAVIS" == "true" ]]; then
# Install GCC 4.8 to replace the default GCC 4.6. We need 4.8 for more
# decent C++ 11 support in order to compile conformance tests.
@ -277,3 +281,44 @@ build_javascript() {
cd js && npm install && npm test && cd ..
}
[ -n "${PARALLELISM}" ] && PARALLELISM=-j8
# Note: travis currently does not support testing more than one language so the
# .travis.yml cheats and claims to only be cpp. If they add multiple language
# support, this should probably get updated to install steps and/or
# rvm/gemfile/jdk/etc. entries rather than manually doing the work.
# .travis.yml uses matrix.exclude to block the cases where app-get can't be
# use to install things.
# -------- main --------
# Set value used in tests.sh.
PARALLELISM=-j2
if [ "$#" -ne 1 ]; then
echo "
Usage: $0 { cpp |
csharp |
java_jdk6 |
java_jdk7 |
java_oracle7 |
javanano_jdk6 |
javanano_jdk7 |
javanano_oracle7 |
objectivec_ios |
objectivec_osx |
python |
python_cpp |
ruby_19 |
ruby_20 |
ruby_21 |
ruby_22 |
jruby }
"
exit 1
fi
set -e # exit immediately on error
set -x # display all commands
eval "build_$1"

View File

@ -1,45 +0,0 @@
#!/usr/bin/env bash
MY_DIR="$(dirname "$0")"
source $MY_DIR/tests.sh
# Note: travis currently does not support testing more than one language so the
# .travis.yml cheats and claims to only be cpp. If they add multiple language
# support, this should probably get updated to install steps and/or
# rvm/gemfile/jdk/etc. entries rather than manually doing the work.
# .travis.yml uses matrix.exclude to block the cases where app-get can't be
# use to install things.
# -------- main --------
# Set value used in tests.sh.
PARALLELISM=-j2
if [ "$#" -ne 1 ]; then
echo "
Usage: $0 { cpp |
csharp |
java_jdk6 |
java_jdk7 |
java_oracle7 |
javanano_jdk6 |
javanano_jdk7 |
javanano_oracle7 |
objectivec_ios |
objectivec_osx |
python |
python_cpp |
ruby_19 |
ruby_20 |
ruby_21 |
ruby_22 |
jruby }
"
exit 1
fi
set -e # exit immediately on error
set -x # display all commands
eval "build_$1"