232 lines
6.6 KiB
YAML
232 lines
6.6 KiB
YAML
dist: trusty
|
|
sudo: false
|
|
cache: pip
|
|
language: python
|
|
|
|
# whitelist branches on which tests will be run
|
|
branches:
|
|
only:
|
|
- master
|
|
- tlslite-ng-0.5
|
|
- tlslite-ng-0.6
|
|
- tlslite-ng-0.7
|
|
|
|
addons:
|
|
apt_packages:
|
|
# needed for M2Crypto
|
|
- swig
|
|
# needed for GMPY
|
|
- libgmp-dev
|
|
# needed for GMPY2
|
|
- libmpfr-dev
|
|
- libmpc-dev
|
|
before_cache:
|
|
- rm -f $HOME/.cache/pip/log/debug.log
|
|
|
|
jobs:
|
|
include:
|
|
- python: 2.6
|
|
env: TACKPY=false
|
|
- python: 2.7
|
|
env: TACKPY=false
|
|
- python: 3.3
|
|
env: TACKPY=false
|
|
- python: 3.4
|
|
env: TACKPY=false
|
|
- python: 3.5
|
|
env: TACKPY=false
|
|
- python: 3.6
|
|
env: TACKPY=false
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: TACKPY=false
|
|
- python: 3.8
|
|
dist: xenial
|
|
sudo: true
|
|
env: TACKPY=false
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: TACKPY=false
|
|
- python: 2.7
|
|
env: TACKPY=true
|
|
- python: 3.4
|
|
env: TACKPY=true
|
|
- python: 2.7
|
|
env: M2CRYPTO=true
|
|
- python: 3.5
|
|
env: M2CRYPTO=true
|
|
- python: 3.6
|
|
env: M2CRYPTO=true
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true
|
|
- python: 3.8
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true
|
|
- python: 2.7
|
|
env: PYCRYPTO=true
|
|
- python: 3.5
|
|
env: PYCRYPTO=true
|
|
- python: 3.6
|
|
env: PYCRYPTO=true
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: PYCRYPTO=true
|
|
# pycrypto doesn't work on Python 3.8 or 3.9 as time module doesn't have clock()
|
|
# any more
|
|
#- python: 3.8
|
|
# dist: xenial
|
|
# sudo: true
|
|
# env: PYCRYPTO=true
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: PYCRYPTODOME=true
|
|
- python: 2.7
|
|
env: GMPY=true
|
|
- python: 3.5
|
|
env: GMPY=true
|
|
- python: 3.6
|
|
env: GMPY=true
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY=true
|
|
- python: 3.8
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY=true
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY=true
|
|
- python: 2.7
|
|
env: GMPY2=true
|
|
- python: 3.5
|
|
env: GMPY2=true
|
|
- python: 3.6
|
|
env: GMPY2=true
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY2=true
|
|
- python: 3.8
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY2=true
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: GMPY2=true
|
|
- python: 2.7
|
|
env: M2CRYPTO=true PYCRYPTO=true GMPY=true GMPY2=true
|
|
- python: 3.5
|
|
env: M2CRYPTO=true PYCRYPTO=true GMPY=true GMPY2=true
|
|
- python: 3.6
|
|
env: M2CRYPTO=true PYCRYPTO=true GMPY=true GMPY2=true
|
|
- python: 3.7
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true PYCRYPTO=true GMPY=true GMPY2=true CC_COV=true
|
|
- python: 3.8
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true GMPY=true GMPY2=true
|
|
- python: 3.9
|
|
dist: xenial
|
|
sudo: true
|
|
env: M2CRYPTO=true GMPY=true GMPY2=true
|
|
|
|
before_install:
|
|
- |
|
|
echo -e "TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST\n" \
|
|
"TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG\n" \
|
|
"TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST\n" \
|
|
"TRAVIS_COMMIT=$TRAVIS_COMMIT\n" \
|
|
"TRAVIS_PYTHON_VERSION=$TRAVIS_PYTHON_VERSION"
|
|
- |
|
|
# workaround https://github.com/travis-ci/travis-ci/issues/2666
|
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
|
URL="https://github.com/${TRAVIS_REPO_SLUG}/pull/${TRAVIS_PULL_REQUEST}.patch"
|
|
# `--location` makes curl follow redirects
|
|
PR_FIRST=$(curl --silent --show-error --location $URL | head -1 | grep -o -E '\b[0-9a-f]{40}\b' | tr -d '\n')
|
|
TRAVIS_COMMIT_RANGE=$PR_FIRST^..$TRAVIS_COMMIT
|
|
fi
|
|
|
|
- pip list
|
|
# sanity check current commit
|
|
- git rev-parse HEAD
|
|
- echo "TRAVIS_COMMIT_RANGE=$TRAVIS_COMMIT_RANGE"
|
|
- git fetch origin master:refs/remotes/origin/master
|
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
- chmod +x ./cc-test-reporter
|
|
|
|
install:
|
|
- if [[ -e build-requirements-${TRAVIS_PYTHON_VERSION}.txt ]]; then travis_retry pip install -r build-requirements-${TRAVIS_PYTHON_VERSION}.txt; else travis_retry pip install -r build-requirements.txt; fi
|
|
- if [[ $TACKPY == 'true' ]]; then travis_retry pip install tackpy; fi
|
|
- |
|
|
if [[ $M2CRYPTO == 'true' ]]; then
|
|
# it looks like 0.37.0 broke compatibility with old OpenSSL so try using old version
|
|
if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]] || [[ $TRAVIS_PYTHON_VERSION == 3.5 ]] || [[ $TRAVIS_PYTHON_VERSION == 3.6 ]] ; then
|
|
travis_retry pip install 'm2crypto<0.37';
|
|
else
|
|
travis_retry pip install --pre m2crypto;
|
|
fi
|
|
fi
|
|
- if [[ $PYCRYPTO == 'true' ]]; then travis_retry pip install pycrypto; fi
|
|
- if [[ $PYCRYPTODOME == 'true' ]]; then travis_retry pip install pycryptodome; fi
|
|
- if [[ $GMPY == 'true' ]]; then travis_retry pip install gmpy; fi
|
|
- if [[ $GMPY2 == 'true' ]]; then travis_retry pip install gmpy2; fi
|
|
- travis_retry pip install -r requirements.txt
|
|
- pip list
|
|
- if [[ $CC_COV == 'true' ]]; then ./cc-test-reporter before-build; fi
|
|
|
|
script:
|
|
- |
|
|
if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then
|
|
coverage run --branch --source tlslite -m unittest2 discover;
|
|
else
|
|
coverage run --branch --source tlslite -m unittest discover;
|
|
fi
|
|
- make test-local
|
|
# --appends is supported only in the new coverage (>4)
|
|
- coverage combine --append
|
|
- coverage report -m
|
|
- ./setup.py install
|
|
- make test
|
|
# pylint doesn't work on 2.6: https://bitbucket.org/logilab/pylint/issue/390/py26-compatiblity-broken
|
|
- |
|
|
if [[ $TRAVIS_PYTHON_VERSION != '2.6' ]]; then
|
|
pylint --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" tlslite > pylint_report.txt || :
|
|
diff-quality --violations=pylint --fail-under=90 pylint_report.txt
|
|
fi
|
|
- |
|
|
if [[ $TRAVIS_PULL_REQUEST != "false" ]]; then
|
|
echo "Will test commits between $TRAVIS_COMMIT_RANGE:"
|
|
git log --oneline --reverse $TRAVIS_COMMIT_RANGE
|
|
|
|
for i in $(git log --pretty=format:%H --reverse $TRAVIS_COMMIT_RANGE); do
|
|
git checkout $i
|
|
make clean
|
|
if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then
|
|
unit2 discover || exit 1
|
|
else
|
|
python -m unittest discover || exit 1
|
|
fi
|
|
make test-local || exit 1
|
|
cd $TRAVIS_BUILD_DIR
|
|
done
|
|
fi
|
|
|
|
after_success:
|
|
- travis_retry coveralls
|
|
- if [[ $CC_COV == 'true' ]]; then coverage xml; ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
|