b6defa7c11
The tests are run from Travis in the same way as on other platforms. Currently some expected failures - but only expected in that they're what we got to start with. Will try to fix them in other pull requests.
183 lines
4.5 KiB
Bash
Executable File
183 lines
4.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# 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.
|
|
|
|
# For when some other test needs the C++ main build, including protoc and
|
|
# libprotobuf.
|
|
internal_build_cpp() {
|
|
./autogen.sh
|
|
./configure
|
|
make -j2
|
|
}
|
|
|
|
build_cpp() {
|
|
internal_build_cpp
|
|
make check -j2
|
|
cd conformance && make test_cpp && cd ..
|
|
}
|
|
|
|
build_cpp_distcheck() {
|
|
./autogen.sh
|
|
./configure
|
|
make distcheck -j2
|
|
}
|
|
|
|
build_csharp() {
|
|
# Just for the conformance tests. We don't currently
|
|
# need to really build protoc, but it's simplest to keep with the
|
|
# conventions of the other builds.
|
|
internal_build_cpp
|
|
|
|
# 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
|
|
|
|
(cd csharp/src; mono ../../nuget.exe restore)
|
|
csharp/buildall.sh
|
|
cd conformance && make test_csharp && cd ..
|
|
}
|
|
|
|
use_java() {
|
|
version=$1
|
|
case "$version" in
|
|
jdk6)
|
|
sudo apt-get install openjdk-6-jdk
|
|
export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH
|
|
;;
|
|
jdk7)
|
|
sudo apt-get install openjdk-7-jdk
|
|
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
|
|
;;
|
|
oracle7)
|
|
sudo apt-get install python-software-properties # for apt-add-repository
|
|
echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | \
|
|
sudo debconf-set-selections
|
|
yes | sudo apt-add-repository ppa:webupd8team/java
|
|
yes | sudo apt-get install oracle-java7-installer
|
|
export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
|
|
;;
|
|
esac
|
|
|
|
which java
|
|
java -version
|
|
}
|
|
|
|
build_java() {
|
|
# Java build needs `protoc`.
|
|
internal_build_cpp
|
|
cd java && mvn test && cd ..
|
|
cd conformance && make test_java && cd ..
|
|
}
|
|
|
|
build_javanano() {
|
|
# Java build needs `protoc`.
|
|
internal_build_cpp
|
|
cd javanano && mvn test && cd ..
|
|
}
|
|
|
|
build_java_jdk6() {
|
|
use_java jdk6
|
|
build_java
|
|
}
|
|
build_java_jdk7() {
|
|
use_java jdk7
|
|
build_java
|
|
}
|
|
build_java_oracle7() {
|
|
use_java oracle7
|
|
build_java
|
|
}
|
|
|
|
build_javanano_jdk6() {
|
|
use_java jdk6
|
|
build_javanano
|
|
}
|
|
build_javanano_jdk7() {
|
|
use_java jdk7
|
|
build_javanano
|
|
}
|
|
build_javanano_oracle7() {
|
|
use_java oracle7
|
|
build_javanano
|
|
}
|
|
|
|
build_python() {
|
|
internal_build_cpp
|
|
cd python
|
|
python setup.py build
|
|
python setup.py test
|
|
python setup.py sdist
|
|
sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
|
|
cd ..
|
|
}
|
|
|
|
build_python_cpp() {
|
|
internal_build_cpp
|
|
export LD_LIBRARY_PATH=../src/.libs # for Linux
|
|
export DYLD_LIBRARY_PATH=../src/.libs # for OS X
|
|
cd python
|
|
python setup.py build --cpp_implementation
|
|
python setup.py test --cpp_implementation
|
|
python setup.py sdist --cpp_implementation
|
|
sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
|
|
cd ..
|
|
}
|
|
|
|
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 ..
|
|
}
|
|
build_ruby22() {
|
|
internal_build_cpp # For conformance tests.
|
|
cd ruby && bash travis-test.sh ruby-2.2 && cd ..
|
|
}
|
|
build_jruby() {
|
|
internal_build_cpp # For conformance tests.
|
|
cd ruby && bash travis-test.sh jruby && cd ..
|
|
}
|
|
|
|
# -------- main --------
|
|
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "
|
|
Usage: $0 { cpp |
|
|
csharp |
|
|
java_jdk6 |
|
|
java_jdk7 |
|
|
java_oracle7 |
|
|
javanano_jdk6 |
|
|
javanano_jdk7 |
|
|
javanano_oracle7 |
|
|
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"
|