dist: trusty install: - sudo apt-get -y install clang gdc docbook-xml xsltproc libxml2-dev libxslt-dev python-pip python-dev fop docbook-xsl-doc-pdf texlive-full biber texmaker build-essential libpcre3-dev autoconf automake libtool bison subversion git - sudo pip install lxml - sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list - wget -qO - https://dlang.org/d-keyring.gpg | sudo apt-key add - - sudo apt-get update && sudo apt-get -y --allow-unauthenticated install dmd-bin - wget https://github.com/ldc-developers/ldc/releases/download/v1.4.0/ldc2-1.4.0-linux-x86_64.tar.xz - tar xf ldc2-1.4.0-linux-x86_64.tar.xz - sudo cp -rf ldc2-1.4.0-linux-x86_64/* / - wget https://github.com/swig/swig/archive/rel-3.0.12.tar.gz - tar xzf rel-3.0.12.tar.gz - cd swig-rel-3.0.12 && ./autogen.sh && ./configure --prefix=/usr && make && sudo make install && cd .. jobs: include: - &test_job stage: Test script: - n=0; while [[ $n -lt 10 ]]; do python runtest.py src/engine/SCons/JobTests.py && break; n=$((n+1)); done; if [ "$n" -gt "9" ]; then false; fi - echo "src/engine/SCons/JobTests.py" > exclude_jobtest - python runtest.py -a --exclude-list exclude_jobtest || if [[ $? == 2 ]]; then true; else false; fi before_script: skip after_success: skip - &coverage_jobs stage: Coverage before_script: - sudo pip install coverage - sudo pip install coveralls - echo "import coverage" | sudo tee --append /usr/lib/python2.7/sitecustomize.py - echo "coverage.process_startup()" | sudo tee --append /usr/lib/python2.7/sitecustomize.py script: - export TOTAL_BUILD_JOBS=8 - export COVERAGE_PROCESS_START=$PWD/.coveragerc - echo "[run]" >> .coveragerc - echo "source = $PWD/src" >> .coveragerc - echo "parallel = True" >> .coveragerc # WORKAROUND: attempt to retry JobTests.py if it fails and then continue if it passes, if it fails ten times # then it is a real failure not related to intermittent travis failures - n=0; while [[ $n -lt 10 ]]; do coverage run --rcfile=$PWD/.coveragerc runtest.py src/engine/SCons/JobTests.py && break; n=$((n+1)); done; if [ "$n" -gt "9" ]; then false; fi # exclude JobTest.py becuase we already ran that - echo "src/engine/SCons/JobTests.py" > exclude_jobtest # also exclude this test since it overides the exit function which doesnt work with coverage # more info here: https://coverage.readthedocs.io/en/coverage-4.4.2/subprocess.html# # TODO: figure out how to cover test/exitfns.py - echo "test/exitfns.py" >> exclude_jobtest - python runtest.py -l -a --exclude-list exclude_jobtest > all_tests - let "start = ($(wc -l < all_tests) / ${TOTAL_BUILD_JOBS}) * (${BUILD_JOB_NUM} - 1)"; true; - let "end = ($(wc -l < all_tests) / ${TOTAL_BUILD_JOBS}) * ${BUILD_JOB_NUM}" - if (( ${BUILD_JOB_NUM} == ${TOTAL_BUILD_JOBS} )); then end=$(wc -l < all_tests); fi - if (( ${start} == 0 )); then start=1; fi - sed -n ${start},${end}p all_tests > build_tests - coverage run --rcfile=$PWD/.coveragerc runtest.py -f build_tests || if [[ $? == 2 ]]; then true; else false; fi after_success: - coverage combine - coverage report - coveralls --rcfile=$PWD/.coveragerc env: BUILD_JOB_NUM=1 - <<: *coverage_jobs env: BUILD_JOB_NUM=2 - <<: *coverage_jobs env: BUILD_JOB_NUM=3 - <<: *coverage_jobs env: BUILD_JOB_NUM=4 - <<: *coverage_jobs env: BUILD_JOB_NUM=5 - <<: *coverage_jobs env: BUILD_JOB_NUM=6 - <<: *coverage_jobs env: BUILD_JOB_NUM=7 - <<: *coverage_jobs env: BUILD_JOB_NUM=8