summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshley Camba Garrido <ashwoods@gmail.com>2017-08-07 16:06:22 +0200
committerAshley Camba Garrido <ashwoods@gmail.com>2017-08-09 17:11:59 +0200
commitf2f14a073a6b8dcc950566a2365066a62c951119 (patch)
tree6c151add4dea15e6b37dbe851905a7ee8c977672
parentf2a613a2a3c18ccfd8b3337e5528fdc9e434e743 (diff)
downloadraven-f2f14a073a6b8dcc950566a2365066a62c951119.tar.gz
Refactor testing using tox environments and update travis to use them
-rw-r--r--.bandit.yml5
-rw-r--r--.python-version-example8
-rw-r--r--.travis.yml143
-rw-r--r--tests/contrib/django/settings.py64
-rw-r--r--tox.ini131
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
diff --git a/tox.ini b/tox.ini
index bd790da..f99cb5d 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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/*
+
+