mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-29 04:54:00 +03:00
Add "optionals not required" build (#6047)
This commit is contained in:
parent
7e0ad9262e
commit
1a170438d2
|
@ -22,6 +22,7 @@ matrix:
|
||||||
- { python: "3.6", env: DJANGO=1.11 }
|
- { python: "3.6", env: DJANGO=1.11 }
|
||||||
- { python: "3.6", env: DJANGO=2.0 }
|
- { python: "3.6", env: DJANGO=2.0 }
|
||||||
- { python: "3.6", env: DJANGO=2.1 }
|
- { python: "3.6", env: DJANGO=2.1 }
|
||||||
|
- { python: "3.6", env: TOXENV=base }
|
||||||
- { python: "2.7", env: TOXENV=lint }
|
- { python: "2.7", env: TOXENV=lint }
|
||||||
- { python: "2.7", env: TOXENV=docs }
|
- { python: "2.7", env: TOXENV=docs }
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ class JSONEncoderTests(TestCase):
|
||||||
unique_id = uuid4()
|
unique_id = uuid4()
|
||||||
assert self.encoder.default(unique_id) == str(unique_id)
|
assert self.encoder.default(unique_id) == str(unique_id)
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
def test_encode_coreapi_raises_error(self):
|
def test_encode_coreapi_raises_error(self):
|
||||||
"""
|
"""
|
||||||
Tests encoding a coreapi objects raises proper error
|
Tests encoding a coreapi objects raises proper error
|
||||||
|
|
|
@ -10,6 +10,7 @@ from django.test.utils import override_settings
|
||||||
from django.utils.six.moves import reload_module
|
from django.utils.six.moves import reload_module
|
||||||
|
|
||||||
from rest_framework import filters, generics, serializers
|
from rest_framework import filters, generics, serializers
|
||||||
|
from rest_framework.compat import coreschema
|
||||||
from rest_framework.test import APIRequestFactory
|
from rest_framework.test import APIRequestFactory
|
||||||
|
|
||||||
factory = APIRequestFactory()
|
factory = APIRequestFactory()
|
||||||
|
@ -28,6 +29,7 @@ class BaseFilterTests(TestCase):
|
||||||
with pytest.raises(NotImplementedError):
|
with pytest.raises(NotImplementedError):
|
||||||
self.filter_backend.filter_queryset(None, None, None)
|
self.filter_backend.filter_queryset(None, None, None)
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreschema, reason='coreschema is not installed')
|
||||||
def test_get_schema_fields_checks_for_coreapi(self):
|
def test_get_schema_fields_checks_for_coreapi(self):
|
||||||
filters.coreapi = None
|
filters.coreapi = None
|
||||||
with pytest.raises(AssertionError):
|
with pytest.raises(AssertionError):
|
||||||
|
|
|
@ -709,6 +709,7 @@ class AdminRendererTests(TestCase):
|
||||||
self.assertContains(response, '<tr><th>Iteritems</th><td>a string</td></tr>', html=True)
|
self.assertContains(response, '<tr><th>Iteritems</th><td>a string</td></tr>', html=True)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
class TestDocumentationRenderer(TestCase):
|
class TestDocumentationRenderer(TestCase):
|
||||||
|
|
||||||
def test_document_with_link_named_data(self):
|
def test_document_with_link_named_data(self):
|
||||||
|
@ -738,6 +739,7 @@ class TestDocumentationRenderer(TestCase):
|
||||||
assert '<h1>Data Endpoint API</h1>' in html
|
assert '<h1>Data Endpoint API</h1>' in html
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
class TestSchemaJSRenderer(TestCase):
|
class TestSchemaJSRenderer(TestCase):
|
||||||
|
|
||||||
def test_schemajs_output(self):
|
def test_schemajs_output(self):
|
||||||
|
|
|
@ -663,6 +663,7 @@ class TestAutoSchema(TestCase):
|
||||||
with pytest.raises(AssertionError):
|
with pytest.raises(AssertionError):
|
||||||
descriptor.get_link(None, None, None) # ???: Do the dummy arguments require a tighter assert?
|
descriptor.get_link(None, None, None) # ???: Do the dummy arguments require a tighter assert?
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
def test_update_fields(self):
|
def test_update_fields(self):
|
||||||
"""
|
"""
|
||||||
That updating fields by-name helper is correct
|
That updating fields by-name helper is correct
|
||||||
|
@ -698,6 +699,7 @@ class TestAutoSchema(TestCase):
|
||||||
assert len(fields) == 1
|
assert len(fields) == 1
|
||||||
assert fields[0].required is False
|
assert fields[0].required is False
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
def test_get_manual_fields(self):
|
def test_get_manual_fields(self):
|
||||||
"""That get_manual_fields is applied during get_link"""
|
"""That get_manual_fields is applied during get_link"""
|
||||||
|
|
||||||
|
@ -718,6 +720,7 @@ class TestAutoSchema(TestCase):
|
||||||
assert len(fields) == 2
|
assert len(fields) == 2
|
||||||
assert "my_extra_field" in [f.name for f in fields]
|
assert "my_extra_field" in [f.name for f in fields]
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
def test_view_with_manual_schema(self):
|
def test_view_with_manual_schema(self):
|
||||||
|
|
||||||
path = '/example'
|
path = '/example'
|
||||||
|
@ -764,6 +767,7 @@ class TestAutoSchema(TestCase):
|
||||||
link = view.schema.get_link(path, method, base_url)
|
link = view.schema.get_link(path, method, base_url)
|
||||||
assert link == expected
|
assert link == expected
|
||||||
|
|
||||||
|
@unittest.skipUnless(coreschema, 'coreschema is not installed')
|
||||||
def test_field_to_schema(self):
|
def test_field_to_schema(self):
|
||||||
label = 'Test label'
|
label = 'Test label'
|
||||||
help_text = 'This is a helpful test text'
|
help_text = 'This is a helpful test text'
|
||||||
|
@ -983,6 +987,7 @@ naming_collisions_router = SimpleRouter()
|
||||||
naming_collisions_router.register(r'collision', NamingCollisionViewSet, base_name="collision")
|
naming_collisions_router.register(r'collision', NamingCollisionViewSet, base_name="collision")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
class TestURLNamingCollisions(TestCase):
|
class TestURLNamingCollisions(TestCase):
|
||||||
"""
|
"""
|
||||||
Ref: https://github.com/encode/django-rest-framework/issues/4704
|
Ref: https://github.com/encode/django-rest-framework/issues/4704
|
||||||
|
@ -1167,6 +1172,7 @@ def test_head_and_options_methods_are_excluded():
|
||||||
assert inspector.get_allowed_methods(callback) == ["GET"]
|
assert inspector.get_allowed_methods(callback) == ["GET"]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||||
class TestAutoSchemaAllowsFilters(object):
|
class TestAutoSchemaAllowsFilters(object):
|
||||||
class MockAPIView(APIView):
|
class MockAPIView(APIView):
|
||||||
filter_backends = [filters.OrderingFilter]
|
filter_backends = [filters.OrderingFilter]
|
||||||
|
|
|
@ -5,8 +5,12 @@ We need only the docs urls for DocumentationRenderer tests.
|
||||||
"""
|
"""
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
from rest_framework.compat import coreapi
|
||||||
from rest_framework.documentation import include_docs_urls
|
from rest_framework.documentation import include_docs_urls
|
||||||
|
|
||||||
urlpatterns = [
|
if coreapi:
|
||||||
url(r'^docs/', include_docs_urls(title='Test Suite API')),
|
urlpatterns = [
|
||||||
]
|
url(r'^docs/', include_docs_urls(title='Test Suite API')),
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
urlpatterns = []
|
||||||
|
|
8
tox.ini
8
tox.ini
|
@ -5,7 +5,7 @@ envlist =
|
||||||
{py34,py35,py36}-django20,
|
{py34,py35,py36}-django20,
|
||||||
{py35,py36}-django21
|
{py35,py36}-django21
|
||||||
{py35,py36}-djangomaster,
|
{py35,py36}-djangomaster,
|
||||||
dist,lint,docs,
|
base,dist,lint,docs,
|
||||||
|
|
||||||
[travis:env]
|
[travis:env]
|
||||||
DJANGO =
|
DJANGO =
|
||||||
|
@ -30,6 +30,12 @@ deps =
|
||||||
-rrequirements/requirements-testing.txt
|
-rrequirements/requirements-testing.txt
|
||||||
-rrequirements/requirements-optionals.txt
|
-rrequirements/requirements-optionals.txt
|
||||||
|
|
||||||
|
[testenv:base]
|
||||||
|
; Ensure optional dependencies are not required
|
||||||
|
deps =
|
||||||
|
django
|
||||||
|
-rrequirements/requirements-testing.txt
|
||||||
|
|
||||||
[testenv:dist]
|
[testenv:dist]
|
||||||
commands = ./runtests.py --fast {posargs} --no-pkgroot --staticfiles -rw
|
commands = ./runtests.py --fast {posargs} --no-pkgroot --staticfiles -rw
|
||||||
deps =
|
deps =
|
||||||
|
|
Loading…
Reference in New Issue
Block a user