mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 09:36:49 +03:00
tox, runcoverage, and setup.py test
This commit is contained in:
parent
d6e7e95d95
commit
bed7d8c3a9
|
@ -6,12 +6,16 @@ syntax: glob
|
|||
env
|
||||
docs/build
|
||||
html
|
||||
htmlcov
|
||||
examples/media/pygments/*
|
||||
examples/media/objectstore/*
|
||||
build/*
|
||||
dist/*
|
||||
djangorestframework.egg-info/*
|
||||
MANIFEST
|
||||
.project
|
||||
.pydevproject
|
||||
.settings
|
||||
.cache
|
||||
.coverage
|
||||
.tox
|
||||
|
|
16
README
16
README
|
@ -8,9 +8,14 @@ pip install -r requirements.txt # django
|
|||
|
||||
# To run the tests...
|
||||
|
||||
cd testproject
|
||||
export PYTHONPATH=..
|
||||
python manage.py test djangorestframework
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runtests.py
|
||||
|
||||
|
||||
# To run the test coverage report...
|
||||
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runcoverage.py
|
||||
|
||||
# To run the examples...
|
||||
|
||||
|
@ -24,3 +29,8 @@ python manage.py runserver
|
|||
|
||||
pip install -r docs/requirements.txt # sphinx
|
||||
sphinx-build -c docs -b html -d docs/build docs html
|
||||
|
||||
# To run the tests against the full set of supported configurations
|
||||
|
||||
deactivate # Ensure we are not currently running in a virtualenv
|
||||
tox
|
||||
|
|
53
djangorestframework/runtests/runcoverage.py
Normal file
53
djangorestframework/runtests/runcoverage.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
"""
|
||||
Useful tool to run the test suite for djangorestframework and generate a coverage report.
|
||||
"""
|
||||
|
||||
# http://ericholscher.com/blog/2009/jun/29/enable-setuppy-test-your-django-apps/
|
||||
# http://www.travisswicegood.com/2010/01/17/django-virtualenv-pip-and-fabric/
|
||||
# http://code.djangoproject.com/svn/django/trunk/tests/runtests.py
|
||||
import os
|
||||
import sys
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangorestframework.runtests.settings'
|
||||
|
||||
from django.conf import settings
|
||||
from django.test.utils import get_runner
|
||||
from coverage import coverage
|
||||
from itertools import chain
|
||||
import djangorestframework
|
||||
|
||||
def main():
|
||||
"""Run the tests for djangorestframework and generate a coverage report."""
|
||||
|
||||
# Discover the list of all modules that we should test coverage for
|
||||
project_dir = os.path.dirname(djangorestframework.__file__)
|
||||
cov_files = []
|
||||
for (path, dirs, files) in os.walk(project_dir):
|
||||
# Drop tests and runtests directories from the test coverage report
|
||||
if os.path.basename(path) == 'tests' or os.path.basename(path) == 'runtests':
|
||||
continue
|
||||
cov_files.extend([os.path.join(path, file) for file in files if file.endswith('.py')])
|
||||
|
||||
cov = coverage()
|
||||
cov.erase()
|
||||
cov.start()
|
||||
TestRunner = get_runner(settings)
|
||||
|
||||
if hasattr(TestRunner, 'func_name'):
|
||||
# Pre 1.2 test runners were just functions,
|
||||
# and did not support the 'failfast' option.
|
||||
import warnings
|
||||
warnings.warn(
|
||||
'Function-based test runners are deprecated. Test runners should be classes with a run_tests() method.',
|
||||
DeprecationWarning
|
||||
)
|
||||
failures = TestRunner(['djangorestframework'])
|
||||
else:
|
||||
test_runner = TestRunner()
|
||||
failures = test_runner.run_tests(['djangorestframework'])
|
||||
|
||||
cov.stop()
|
||||
cov.report(cov_files)
|
||||
sys.exit(failures)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
35
djangorestframework/runtests/runtests.py
Normal file
35
djangorestframework/runtests/runtests.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
'''
|
||||
Created on Mar 10, 2011
|
||||
|
||||
@author: tomchristie
|
||||
'''
|
||||
# http://ericholscher.com/blog/2009/jun/29/enable-setuppy-test-your-django-apps/
|
||||
# http://www.travisswicegood.com/2010/01/17/django-virtualenv-pip-and-fabric/
|
||||
# http://code.djangoproject.com/svn/django/trunk/tests/runtests.py
|
||||
import os
|
||||
import sys
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangorestframework.runtests.settings'
|
||||
|
||||
from django.conf import settings
|
||||
from django.test.utils import get_runner
|
||||
|
||||
def main():
|
||||
TestRunner = get_runner(settings)
|
||||
|
||||
if hasattr(TestRunner, 'func_name'):
|
||||
# Pre 1.2 test runners were just functions,
|
||||
# and did not support the 'failfast' option.
|
||||
import warnings
|
||||
warnings.warn(
|
||||
'Function-based test runners are deprecated. Test runners should be classes with a run_tests() method.',
|
||||
DeprecationWarning
|
||||
)
|
||||
failures = TestRunner(['djangorestframework'])
|
||||
else:
|
||||
test_runner = TestRunner()
|
||||
failures = test_runner.run_tests(['djangorestframework'])
|
||||
|
||||
sys.exit(failures)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
7
djangorestframework/runtests/urls.py
Normal file
7
djangorestframework/runtests/urls.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
"""
|
||||
Blank URLConf just to keep runtests.py happy.
|
||||
"""
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
)
|
10
setup.py
10
setup.py
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from distutils.core import setup
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name = "djangorestframework",
|
||||
|
@ -14,9 +14,11 @@ setup(
|
|||
author_email = 'tom@tomchristie.com',
|
||||
packages = ['djangorestframework',
|
||||
'djangorestframework.templatetags',
|
||||
'djangorestframework.tests'],
|
||||
'djangorestframework.tests',
|
||||
'djangorestframework.runtests'],
|
||||
package_dir={'djangorestframework': 'djangorestframework'},
|
||||
package_data = {'djangorestframework': ['templates/*', 'static/*']},
|
||||
test_suite = 'djangorestframework.runtests.runtests.main',
|
||||
classifiers = [
|
||||
'Development Status :: 4 - Beta',
|
||||
'Environment :: Web Environment',
|
||||
|
@ -29,3 +31,7 @@ setup(
|
|||
]
|
||||
)
|
||||
|
||||
import os, shutil
|
||||
shutil.rmtree(os.path.join(os.path.dirname(__file__), 'djangorestframework.egg-info'), True)
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
from django.core.management import execute_manager
|
||||
try:
|
||||
import settings # Assumed to be in the same directory.
|
||||
except ImportError:
|
||||
import sys
|
||||
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
execute_manager(settings)
|
|
@ -1,16 +0,0 @@
|
|||
from django.conf.urls.defaults import *
|
||||
|
||||
# Uncomment the next two lines to enable the admin:
|
||||
# from django.contrib import admin
|
||||
# admin.autodiscover()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
# Example:
|
||||
# (r'^testproject/', include('testproject.foo.urls')),
|
||||
|
||||
# Uncomment the admin/doc line below to enable admin documentation:
|
||||
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
|
||||
# Uncomment the next line to enable the admin:
|
||||
# (r'^admin/', include(admin.site.urls)),
|
||||
)
|
40
tox.ini
Normal file
40
tox.ini
Normal file
|
@ -0,0 +1,40 @@
|
|||
[tox]
|
||||
envlist=
|
||||
py25-django12, py26-django12, py27-django12, py25-django13, py26-django13, py27-django13
|
||||
|
||||
[testenv]
|
||||
commands=
|
||||
python setup.py test
|
||||
|
||||
[testenv:py25-django12]
|
||||
basepython=python2.5
|
||||
deps=
|
||||
django==1.2.4
|
||||
simplejson
|
||||
|
||||
[testenv:py26-django12]
|
||||
basepython=python2.6
|
||||
deps=
|
||||
django==1.2.4
|
||||
|
||||
[testenv:py27-django12]
|
||||
basepython=python2.7
|
||||
deps=
|
||||
django==1.2.4
|
||||
|
||||
[testenv:py25-django13]
|
||||
basepython=python2.5
|
||||
deps=
|
||||
http://www.djangoproject.com/download/1.3-rc-1/tarball/
|
||||
simplejson
|
||||
|
||||
[testenv:py26-django13]
|
||||
basepython=python2.6
|
||||
deps=
|
||||
http://www.djangoproject.com/download/1.3-rc-1/tarball/
|
||||
|
||||
[testenv:py27-django13]
|
||||
basepython=python2.7
|
||||
deps=
|
||||
http://www.djangoproject.com/download/1.3-rc-1/tarball/
|
||||
|
Loading…
Reference in New Issue
Block a user