diff options
author | Ashley Camba Garrido <ashwoods@gmail.com> | 2017-08-07 16:06:22 +0200 |
---|---|---|
committer | Ashley Camba Garrido <ashwoods@gmail.com> | 2017-08-09 17:11:59 +0200 |
commit | f2f14a073a6b8dcc950566a2365066a62c951119 (patch) | |
tree | 6c151add4dea15e6b37dbe851905a7ee8c977672 | |
parent | f2a613a2a3c18ccfd8b3337e5528fdc9e434e743 (diff) | |
download | raven-f2f14a073a6b8dcc950566a2365066a62c951119.tar.gz |
Refactor testing using tox environments and update travis to use them
-rw-r--r-- | .bandit.yml | 5 | ||||
-rw-r--r-- | .python-version-example | 8 | ||||
-rw-r--r-- | .travis.yml | 143 | ||||
-rw-r--r-- | tests/contrib/django/settings.py | 64 | ||||
-rw-r--r-- | tox.ini | 131 |
5 files changed, 303 insertions, 48 deletions
diff --git a/.bandit.yml b/.bandit.yml new file mode 100644 index 0000000..257ede9 --- /dev/null +++ b/.bandit.yml @@ -0,0 +1,5 @@ +tests: +skips: +- B404 # Ignore warnings about importing subprocess +- B603 # Ignore warnings about calling subprocess.Popen without shell=True +- B607 # Ignore warnings about calling subprocess.Popen without a full path to executable diff --git a/.python-version-example b/.python-version-example new file mode 100644 index 0000000..45b228a --- /dev/null +++ b/.python-version-example @@ -0,0 +1,8 @@ +2.6.9 +2.7.13 +3.2.6 +3.3.6 +3.4.6 +3.5.3 +3.6.1 +pypy2.7-5.8.0 diff --git a/.travis.yml b/.travis.yml index cd2f124..eeb546f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,53 +7,106 @@ addons: cache: directories: - "$HOME/.cache/pip" -#deploy: -# provider: pypi -# user: getsentry -# password: -# secure: NMwOI1H9arp2vbgaidx9OY6y8990hiu0WsHtowEvEdGKXNzAQcy0sW3SoKcB6FN0bk11xhj49+5C++KAwMYwE/SL8Y5OoZ1/iYVI4/XlWNukr+1/pfPKVMgw3v5W+pL5Ba9TBdFfIoFPNYUDPLItSSjg94Bm95034gBkYWC5Hl0= -# on: -# tags: true + + +jobs: + include: + - stage: core + python: 2.7 + env: TOXENV=py27 + - stage: core + python: 3.3 + env: TOXENV=py33 + - stage: core + python: 3.4 + env: TOXENV=py34 + - stage: core + python: 3.5 + env: TOXENV=py35 + - stage: core + python: pypy + env: TOXENV=pypy + - stage: core + python: 3.5 + env: TOXENV=flake8 + + + - stage: contrib + python: 2.7 + env: TOXENV=py27-django-16 + - stage: contrib + python: 2.7 + env: TOXENV=py27-django-17 + - stage: contrib + python: 2.7 + env: TOXENV=py27-django-18 + - stage: contrib + python: 2.7 + env: TOXENV=py27-django-19 + - stage: contrib + python: 2.7 + env: TOXENV=py27-django-110 + + - stage: contrib + python: 3.3 + env: TOXENV=py33-django-17 + - stage: contrib + python: 3.3 + env: TOXENV=py33-django-18 + + - stage: contrib + python: 3.4 + env: TOXENV=py34-django-17 + - stage: contrib + python: 3.4 + env: TOXENV=py34-django-18 + - stage: contrib + python: 3.4 + env: TOXENV=py34-django-19 + - stage: contrib + python: 3.4 + env: TOXENV=py34-django-110 + + - stage: contrib + python: 3.5 + env: TOXENV=py35-django-18 + - stage: contrib + python: 3.5 + env: TOXENV=py35-django-19 + - stage: contrib + python: 3.5 + env: TOXENV=py35-django-110 + + - stage: contrib + python: 2.7 + env: TOXENV=py27-flask-10 + - stage: contrib + python: 2.7 + env: TOXENV=py27-flask-11 + - stage: contrib + python: 3.5 + env: TOXENV=py35-flask-10 + - stage: contrib + python: 3.5 + env: TOXENV=py35-flask-11 + - stage: contrib + python: 3.5 + env: TOXENV=py35-flask-12 + + - stage: contrib + python: 2.7 + env: TOXENV=py27-celery-3 + - stage: contrib + python: 2.7 + env: TOXENV=py27-celery-4 + + +script: tox install: - - time ci/setup - - pip install codecov "coverage<4" + - pip install tox wheel codecov "coverage<4" before_script: - pip freeze -script: - - if [[ ${TRAVIS_PYTHON_VERSION} != 'pypy' ]]; then make lint; fi - - time ci/test after_success: - codecov -e DJANGO -matrix: - fast_finish: true - allow_failures: - - python: 3.5 - env: DJANGO=dev TEST_SUITE=django - include: - - python: 2.7 - env: FLASK=0.10.1 TEST_SUITE=flask - - python: 2.7 - env: FLASK=0.11.1 TEST_SUITE=flask - - python: 2.7 - env: DJANGO=1.6.11 TEST_SUITE=django - - python: 2.7 - env: DJANGO=1.8.7 TEST_SUITE=django - - python: 2.7 - env: DJANGO=1.9 TEST_SUITE=django - - python: 2.7 - env: DJANGO=1.10 TEST_SUITE=django - - python: 2.7 - env: DJANGO=1.11 TEST_SUITE=django - - python: 3.5 - env: DJANGO=1.10 TEST_SUITE=django - - python: 3.5 - env: DJANGO=1.11 TEST_SUITE=django - - python: 3.5 - env: DJANGO=dev TEST_SUITE=django - - python: 2.7 - env: CELERY=3.1 TEST_SUITE=celery - - python: 2.7 - env: CELERY=4.0 TEST_SUITE=celery - - python: 3.3 - - python: 3.4 - - python: 3.5 + + diff --git a/tests/contrib/django/settings.py b/tests/contrib/django/settings.py new file mode 100644 index 0000000..881e1b6 --- /dev/null +++ b/tests/contrib/django/settings.py @@ -0,0 +1,64 @@ + +import os + +# ---- SENTRY CONFIG ---- # +SENTRY_CLIENT = 'tests.contrib.django.tests.MockClient' +DISABLE_SENTRY_INSTRUMENTATION = True +SENTRY_ALLOW_ORIGIN = '*' + +# ---- GENERIC DJANGO SETTINGS ---- # +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) + +SECRET_KEY = "Change this!" +INSTALLED_APPS = [ + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + + 'raven.contrib.django', + 'tests.contrib.django', +] + + +DATABASE_ENGINE='sqlite3' +DATABASES = { + 'default': { + 'NAME': ':memory:', + 'ENGINE': 'django.db.backends.sqlite3', + 'TEST_NAME': ':memory:', + }, +} +DATABASE_NAME = ':memory:' +TEST_DATABASE_NAME = ':memory:' +ROOT_URLCONF = 'tests.contrib.django.urls' +DEBUG = False +SITE_ID = 1 + +TEMPLATE_DEBUG = True +LANGUAGE_CODE = 'en' +LANGUAGES = (('en', 'English'),) +TEMPLATE_DIRS = [ + os.path.join(PROJECT_ROOT, 'templates'), +] +TEMPLATES = [{ + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'APP_DIRS': True, + 'DIRS': TEMPLATE_DIRS, +}] +ALLOWED_HOSTS = ['*'] + +# ---- CELERY SETTINGS ---- # + +try: + import djcelery # NOQA + INSTALLED_APPS.append('djcelery') +except ImportError: + pass + +BROKER_HOST = "localhost" +BROKER_PORT = 5672 +BROKER_USER = "guest" +BROKER_PASSWORD = "guest" +BROKER_VHOST = "/" +CELERY_ALWAYS_EAGER = True @@ -4,9 +4,134 @@ # and then run "tox" from this directory. [tox] -envlist = py26, py27, py33, py34, py35, pypy +envlist = + {py27,py34,py35}-django-{18,19,110} + {py27,py33,py34,py35}-django-18 + {py27,py33,py34}-django-17 + py27-django-16 + {py27,py35}-flask-{10,11} + py35-flask-12 + py27-celery-{3,4} + py{27,33,34,35} + pypy + flake8 [testenv] +deps = + py27: gevent + django-{16,17,18}: pytest-django<3.0 + django-{19,110,110}: pytest-django>=3.0 + django-{18,19,110}: django-tastypie==0.14 + django-16: Django>=1.6,<1.7 + django-17: Django>=1.7,<1.8 + django-18: Django>=1.8,<1.9 + django-19: Django>=1.9,<1.10 + django-110: Django>=1.10,<1.11 + # django-111: Django>=1.11,<1.12 TODO: update pytest_django + flask-10: Flask>=0.10,<0.11 + flask-11: Flask>=0.11,<0.12 + flask-12: Flask>=0.12,<0.13 + celery-3: Celery>=3.1,<3.2 + celery-4: Celery>=4.0,<4.1 +setenv = + PYTHONDONTWRITEBYTECODE=1 + TESTPATH=tests + django: TESTPATH=tests/contrib/django + flask: TESTPATH=tests/contrib/flask + celery: TESTPATH=tests/contrib/test_celery.py +usedevelop = true +extras = tests + +basepython = + # py26: python2.6 + py27: python2.7 + py33: python3.3 + py34: python3.4 + py35: python3.5 + pypy: pypy + +commands = + py.test {env:TESTPATH} --cov=raven {posargs} + +# Linters +[testenv:flake8] +basepython = python3.5 +skip_install = true +deps = + flake8 + flake8-docstrings>=0.2.7 + flake8-import-order>=0.9 +commands = + flake8 raven/ setup.py + +[testenv:pylint] +basepython = python3.5 +skip_install = true +deps = + pyflakes + pylint +commands = + pylint raven/ setup.py + +[testenv:doc8] +basepython = python3.5 +skip_install = true +deps = + sphinx + doc8 +commands = + doc8 docs/ + + +[testenv:bandit] +basepython = python3.5 +skip_install = true +deps = + bandit commands = - pip install -e .[tests] - python setup.py test + bandit -r raven/ -c .bandit.yml + +[testenv:linters] +basepython = python3.5 +skip_install = true +deps = + {[testenv:flake8]deps} + {[testenv:pylint]deps} + {[testenv:doc8]deps} + {[testenv:readme]deps} + {[testenv:bandit]deps} +commands = + {[testenv:flake8]commands} + {[testenv:pylint]commands} + {[testenv:doc8]commands} + {[testenv:readme]commands} + {[testenv:bandit]commands} + +[testenv:readme] +basepython = python3.5 +deps = + readme_renderer +commands = + python setup.py check -r -s + +# Release tooling +[testenv:build] +basepython = python3.5 +skip_install = true +deps = + wheel + setuptools +commands = + python setup.py -q sdist bdist_wheel + +[testenv:release] +basepython = python3.5 +skip_install = true +deps = + {[testenv:build]deps} + twine >= 1.9.1 +commands = + {[testenv:build]commands} + twine upload --skip-existing dist/* + + |