language: python # Version used for jobs that don't override it (e.g. the one-off jobs): python: "3.6" sudo: false env: global: - VENV_ROOT="$HOME/venv" - LINT_SRC="$(ls bidict/*.py tests/*.py setup.py)" - HYPOTHESIS_PROFILE=$([[ $TRAVIS_EVENT_TYPE = cron ]] && echo max_examples_5000 || echo default) before_install: - echo 'TRAVIS_PULL_REQUEST_SHA:' $TRAVIS_PULL_REQUEST_SHA - echo 'TRAVIS_COMMIT:' $TRAVIS_COMMIT - git --no-pager log -n2 # Travis does a shallow (--depth=50) clone by default. # Clone the full history as requested by setuptools_scm. - travis_retry git fetch --unshallow # https://github.com/python-trio/trio/issues/487#issuecomment-377931587 - echo 'Installing latest pip...' - travis_retry curl https://bootstrap.pypa.io/get-pip.py | python - pip --version install: # Install our test dependencies. - if [[ -n $COVERAGE ]]; then EXTRAS="test,coverage"; else EXTRAS="test"; fi - travis_retry pip install .[$EXTRAS] script: # Run our test suite. - if [[ -n $COVERAGE ]]; then export PYTEST_ADDOPTS="--cov=bidict --cov-config=.coveragerc"; fi - python setup.py test after_script: - | if [[ -n $COVERAGE ]]; then echo "Installing codecov..." travis_retry pip install codecov || exit 1 echo echo "Uploading coverage report..." codecov || exit 1 fi matrix: include: # Each job performs a single task, and sets a "TASK" var so it's evident in the build matrix. # Run the test suite with various Python versions. # Only run these tests for commits to master to save time waiting for Travis. # Also don't bother testing Python 3.4; if we work on 3.5+, we should work on 3.4 too. ## Linux ### Enable coverage for the most recent available CPython 2 and 3 releases and PyPy 3. #### Latest stable CPython 2 available -> enable coverage. - python: "2.7" env: TASK=test COVERAGE=1 if: branch = master #### Latest stable CPython 3 available -> enable coverage. - python: "3.6" env: TASK=test COVERAGE=1 if: branch = master #### Other CPython versions -> no coverage. ##### Previous stable release: - python: "3.5" env: TASK=test if: branch = master #### Next (in-development) version: ##### Ditch while stuck on old 3.7-alpha pending https://github.com/travis-ci/travis-ci/issues/9069 #####- python: 3.7-dev ##### env: TASK=test ##### if: branch = master #### Latest stable PyPy 3 available -> enable coverage. - python: pypy3 env: TASK=test COVERAGE=1 if: branch = master #### Latest stable PyPy 2 -> no coverage. - python: pypy env: TASK=test if: branch = master ## macOS ### Commented out pending https://github.com/travis-ci/travis-ci/issues/2312 ####- python: "2.7" #### env: TASK=test #### if: branch = master #### os: osx #### osx_image: xcode9.2 # One-off jobs. Override "install", "before_install", and "script" to do each of these instead. - env: TASK=pydocstyle before_install: skip install: travis_retry pip install pydocstyle script: pydocstyle $LINT_SRC - env: TASK=build-docs before_install: skip install: travis_retry pip install Sphinx script: - ./build-docs.sh - cd docs - travis_retry make linkcheck - env: TASK=flake8 before_install: skip install: travis_retry pip install flake8 script: flake8 $LINT_SRC - env: TASK=pylint before_install: travis_retry pip install .[test] install: travis_retry pip install pylint script: pylint --jobs=0 $LINT_SRC - env: TASK=test-with-optimization-flag # make sure there are no relied-on side effects in assert statements before_install: skip install: skip script: python -O -m doctest -o IGNORE_EXCEPTION_DETAIL -o ELLIPSIS tests/*.txt - stage: deploy-if-tag env: TASK=deploy-if-tag before_install: skip install: skip script: skip deploy: - provider: pypi user: jab password: secure: B9LLgXkTbtjeC/IbH4wh9PEBzvKEAuYo3EBNW5f1xuLqVqtsysIyxJa5ar/FQ4qwUCBwZPFAXFurN3lLzRhb2Tc04YQ0GYVv6f8lkzwrjoWau4iB9Qt/nnvdRa7KryEJvtenHCAnwoEUaADCjkZjwo6fIA0hEOLB6/AYfhfgXYA= on: tags: true before_cache: - rm -rf $HOME/.cache/pip/log cache: directories: - $HOME/.cache/pip - $HOME/.hypothesis notifications: webhooks: urls: - https://webhooks.gitter.im/e/bf64fb45a633c0935b9b email: recipients: jab@math.brown.edu