1#!/bin/bash
2# Script run in the travis CI
3set -ex
4
5if [ "x$CPPUTEST_HOME" = "x" ] ; then
6  export CPPUTEST_HOME=$TRAVIS_BUILD_DIR
7fi
8
9if [ "x$BUILD" = "xautotools" ]; then
10    autoreconf -i ..
11    ../configure
12    make tdd
13fi
14
15if [ "x$BUILD" = "xmakefileworker" ]; then
16    make -C $CPPUTEST_HOME -f Makefile_using_MakefileWorker test_all
17fi
18
19if [ "x$BUILD" = "xcmake" ]; then
20    BUILD_ARGS=("-DWERROR=ON")
21
22    if [ -n "$CPP_STD" ]; then
23        BUILD_ARGS+=("-DCMAKE_CXX_STANDARD=$CPP_STD")
24    fi
25
26    cmake --version
27    cmake "${BUILD_ARGS[@]}" ..
28    make
29    ctest -V
30fi
31
32if [ "x$BUILD" = "xautotools_gtest" ]; then
33    autoreconf -i ..
34    ../configure
35    make check_gtest
36fi
37
38if [ "x$BUILD" = "xcmake_gtest" ]; then
39    pwd
40    wget https://github.com/google/googletest/archive/release-1.6.0.zip -O gtest-1.6.0.zip  && unzip gtest-1.6.0.zip;
41    wget https://github.com/google/googlemock/archive/release-1.6.0.zip -O gmock-1.6.0.zip  && unzip gmock-1.6.0.zip;
42    unzip gtest-1.6.0.zip -d $TRAVIS_BUILD_DIR
43    unzip gmock-1.6.0.zip -d $TRAVIS_BUILD_DIR
44    cd $TRAVIS_BUILD_DIR
45    mv googletest-release-1.6.0 googlemock-release-1.6.0/gtest
46    cd googlemock-release-1.6.0
47    autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make
48    cd -
49    export GMOCK_HOME=$TRAVIS_BUILD_DIR/googlemock-release-1.6.0
50    export GTEST_HOME=$TRAVIS_BUILD_DIR/googlemock-release-1.6.0/gtest
51    cmake . -DGMOCK=ON
52    make
53    ctest -V
54fi
55
56if [ "x$BUILD" = "xtest_report" ]; then
57    autoreconf -i ..
58    ../configure
59    make check
60    ./CppUTestTests -ojunit
61    ./CppUTestExtTests -ojunit
62    cp ../scripts/generate_junit_report_ant.xml .
63    ant -f generate_junit_report_ant.xml
64fi
65
66if [ "x$BUILD" = "xcmake_coverage" ]; then
67    pip install --user cpp-coveralls gcovr
68
69    cmake .. -DCMAKE_BUILD_TYPE=Debug -DC++11=ON -DCOVERAGE=ON -DLONGLONG=ON
70    make
71    ctest
72
73    coveralls -b . -r .. -i "src" -i "include" --gcov-options="-lbc" || true
74fi
75
76if [ "x$BUILD" = "xautotools_cmake_install_test" ]; then
77    autoreconf -i ..
78    ../configure
79    rm -rf install_autotools
80    mkdir -p install_autotools
81    make DESTDIR=install_autotools install
82
83    cmake ..
84    rm -rf install_cmake
85    mkdir -p install_cmake
86    make DESTDIR=install_cmake install
87
88    # Hack: autotools cannot make CMake package. We cached and copied them. Here we check they are still the same
89    for cmakefile in CppUTestConfig.cmake CppUTestConfigVersion.cmake CppUTestTargets-relwithdebinfo.cmake CppUTestTargets.cmake; do
90      cat install_autotools/usr/local/lib/CppUTest/cmake/$cmakefile
91      cat install_cmake/usr/local/lib/CppUTest/cmake/$cmakefile
92      diff -Bw install_autotools/usr/local/lib/CppUTest/cmake/$cmakefile  install_cmake/usr/local/lib/CppUTest/cmake/$cmakefile || exit 1
93    done
94
95    export INSTALL_DIFF=`diff -rwBq install_autotools install_cmake  -X CppUTestGeneratedConfig.h -X libCppUTest.a -X libCppUTestExt.a`
96    if [ "x$INSTALL_DIFF" != "x" ]; then
97        echo "FAILED: CMake install and Autotools install is not the same!\n"
98        echo "Difference\n"
99        echo "-------------------------------\n"
100        echo "$INSTALL_DIFF"
101        echo "-------------------------------\n"
102        exit 1;
103    fi
104fi
105
106if [ "x$BUILD" = "xdocker_ubuntu_autotools" ]; then
107    $CPPUTEST_HOME/scripts/create_docker_images_and_containers ubuntu
108    docker start -i cpputest_ubuntu
109fi
110
111if [ "x$BUILD" = "xdocker_ubuntu_dos" ]; then
112    $CPPUTEST_HOME/scripts/create_docker_images_and_containers dos
113    docker start -i cpputest_dos
114fi
115
116if [ "x$BUILD" = "xmake_dos" ]; then
117    if [ ! -d watcom ]; then
118        git clone https://github.com/cpputest/watcom-compiler.git watcom
119    fi
120    export PATH=$PATH:$PWD/watcom/binl
121    export WATCOM=$PWD/watcom
122    export CC=wcl
123    export CXX=wcl
124    $CC --version
125    make -f $CPPUTEST_HOME/platforms/Dos/Makefile clean
126    make -f $CPPUTEST_HOME/platforms/Dos/Makefile
127    $CPPUTEST_HOME/platforms/Dos/alltests.sh
128fi
129
130if [ "x$BUILD" = "xextensive_check" ]; then
131    autoreconf -i ..
132    ../configure
133    make check_all
134fi
135
136if [ "x$BUILD" = "xautotools_dist" ]; then
137    autoreconf -i ..
138    ../configure
139
140    if [ "x$TRAVIS_OS_NAME" = "xosx" ]; then
141        COPYFILE_DISABLE=1 make dist VERSION=latest
142        COPYFILE_DISABLE=1 make dist-zip VERSION=latest
143    else
144        make dist VERSION=latest
145        make dist-zip VERSION=latest
146    fi
147fi
148
149if [ "x$BUILD" = "xautotools_install_and_test_examples" ]; then
150    autoreconf -i ..
151    ../configure
152
153    make tdd
154    sudo make install
155    make -C $CPPUTEST_HOME/examples -f $CPPUTEST_HOME/examples/Makefile_ExamplesWithCppUTestInstalled.mk
156fi
157
158if [ "x$BUILD" = "xvc_windows" ]; then
159    export PATH=$MSBUILD_PATH:$PATH
160    cmake ..
161    MSBuild.exe ALL_BUILD.vcxproj
162    ./tests/CppUTest/CppUTestTests.exe
163    ./tests/CppUTestExt/CppUTestExtTests.exe
164fi
165
166if [ "x$BUILD" = "xcmake_windows" ]; then
167    choco install make
168    BUILD_ARGS=("-DWERROR=ON")
169
170    if [ -n "$CPP_STD" ]; then
171        BUILD_ARGS+=("-DCMAKE_CXX_STANDARD=$CPP_STD")
172    fi
173
174    cmake --version
175    cmake -G 'Unix Makefiles' "${BUILD_ARGS[@]}" ..
176    make
177    ctest -V
178fi
179