mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 17:47:04 +03:00
tox, runcoverage, and setup.py test
This commit is contained in:
parent
d6e7e95d95
commit
bed7d8c3a9
|
@ -6,12 +6,16 @@ syntax: glob
|
||||||
env
|
env
|
||||||
docs/build
|
docs/build
|
||||||
html
|
html
|
||||||
|
htmlcov
|
||||||
examples/media/pygments/*
|
examples/media/pygments/*
|
||||||
examples/media/objectstore/*
|
examples/media/objectstore/*
|
||||||
build/*
|
build/*
|
||||||
dist/*
|
dist/*
|
||||||
|
djangorestframework.egg-info/*
|
||||||
MANIFEST
|
MANIFEST
|
||||||
.project
|
.project
|
||||||
.pydevproject
|
.pydevproject
|
||||||
.settings
|
.settings
|
||||||
.cache
|
.cache
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
|
|
16
README
16
README
|
@ -8,9 +8,14 @@ pip install -r requirements.txt # django
|
||||||
|
|
||||||
# To run the tests...
|
# To run the tests...
|
||||||
|
|
||||||
cd testproject
|
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||||
export PYTHONPATH=..
|
python djangorestframework/runtests/runtests.py
|
||||||
python manage.py test djangorestframework
|
|
||||||
|
|
||||||
|
# To run the test coverage report...
|
||||||
|
|
||||||
|
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||||
|
python djangorestframework/runtests/runcoverage.py
|
||||||
|
|
||||||
# To run the examples...
|
# To run the examples...
|
||||||
|
|
||||||
|
@ -24,3 +29,8 @@ python manage.py runserver
|
||||||
|
|
||||||
pip install -r docs/requirements.txt # sphinx
|
pip install -r docs/requirements.txt # sphinx
|
||||||
sphinx-build -c docs -b html -d docs/build docs html
|
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
|
#!/usr/bin/env/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from distutils.core import setup
|
from setuptools import setup
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name = "djangorestframework",
|
name = "djangorestframework",
|
||||||
|
@ -14,9 +14,11 @@ setup(
|
||||||
author_email = 'tom@tomchristie.com',
|
author_email = 'tom@tomchristie.com',
|
||||||
packages = ['djangorestframework',
|
packages = ['djangorestframework',
|
||||||
'djangorestframework.templatetags',
|
'djangorestframework.templatetags',
|
||||||
'djangorestframework.tests'],
|
'djangorestframework.tests',
|
||||||
|
'djangorestframework.runtests'],
|
||||||
package_dir={'djangorestframework': 'djangorestframework'},
|
package_dir={'djangorestframework': 'djangorestframework'},
|
||||||
package_data = {'djangorestframework': ['templates/*', 'static/*']},
|
package_data = {'djangorestframework': ['templates/*', 'static/*']},
|
||||||
|
test_suite = 'djangorestframework.runtests.runtests.main',
|
||||||
classifiers = [
|
classifiers = [
|
||||||
'Development Status :: 4 - Beta',
|
'Development Status :: 4 - Beta',
|
||||||
'Environment :: Web Environment',
|
'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