mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-25 11:04:02 +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=2.0 }
|
||||
- { python: "3.6", env: DJANGO=2.1 }
|
||||
- { python: "3.6", env: TOXENV=base }
|
||||
- { python: "2.7", env: TOXENV=lint }
|
||||
- { python: "2.7", env: TOXENV=docs }
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ class JSONEncoderTests(TestCase):
|
|||
unique_id = uuid4()
|
||||
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):
|
||||
"""
|
||||
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 rest_framework import filters, generics, serializers
|
||||
from rest_framework.compat import coreschema
|
||||
from rest_framework.test import APIRequestFactory
|
||||
|
||||
factory = APIRequestFactory()
|
||||
|
@ -28,6 +29,7 @@ class BaseFilterTests(TestCase):
|
|||
with pytest.raises(NotImplementedError):
|
||||
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):
|
||||
filters.coreapi = None
|
||||
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)
|
||||
|
||||
|
||||
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||
class TestDocumentationRenderer(TestCase):
|
||||
|
||||
def test_document_with_link_named_data(self):
|
||||
|
@ -738,6 +739,7 @@ class TestDocumentationRenderer(TestCase):
|
|||
assert '<h1>Data Endpoint API</h1>' in html
|
||||
|
||||
|
||||
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||
class TestSchemaJSRenderer(TestCase):
|
||||
|
||||
def test_schemajs_output(self):
|
||||
|
|
|
@ -663,6 +663,7 @@ class TestAutoSchema(TestCase):
|
|||
with pytest.raises(AssertionError):
|
||||
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):
|
||||
"""
|
||||
That updating fields by-name helper is correct
|
||||
|
@ -698,6 +699,7 @@ class TestAutoSchema(TestCase):
|
|||
assert len(fields) == 1
|
||||
assert fields[0].required is False
|
||||
|
||||
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||
def test_get_manual_fields(self):
|
||||
"""That get_manual_fields is applied during get_link"""
|
||||
|
||||
|
@ -718,6 +720,7 @@ class TestAutoSchema(TestCase):
|
|||
assert len(fields) == 2
|
||||
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):
|
||||
|
||||
path = '/example'
|
||||
|
@ -764,6 +767,7 @@ class TestAutoSchema(TestCase):
|
|||
link = view.schema.get_link(path, method, base_url)
|
||||
assert link == expected
|
||||
|
||||
@unittest.skipUnless(coreschema, 'coreschema is not installed')
|
||||
def test_field_to_schema(self):
|
||||
label = 'Test label'
|
||||
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")
|
||||
|
||||
|
||||
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||
class TestURLNamingCollisions(TestCase):
|
||||
"""
|
||||
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"]
|
||||
|
||||
|
||||
@pytest.mark.skipif(not coreapi, reason='coreapi is not installed')
|
||||
class TestAutoSchemaAllowsFilters(object):
|
||||
class MockAPIView(APIView):
|
||||
filter_backends = [filters.OrderingFilter]
|
||||
|
|
|
@ -5,8 +5,12 @@ We need only the docs urls for DocumentationRenderer tests.
|
|||
"""
|
||||
from django.conf.urls import url
|
||||
|
||||
from rest_framework.compat import coreapi
|
||||
from rest_framework.documentation import include_docs_urls
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^docs/', include_docs_urls(title='Test Suite API')),
|
||||
]
|
||||
if coreapi:
|
||||
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,
|
||||
{py35,py36}-django21
|
||||
{py35,py36}-djangomaster,
|
||||
dist,lint,docs,
|
||||
base,dist,lint,docs,
|
||||
|
||||
[travis:env]
|
||||
DJANGO =
|
||||
|
@ -30,6 +30,12 @@ deps =
|
|||
-rrequirements/requirements-testing.txt
|
||||
-rrequirements/requirements-optionals.txt
|
||||
|
||||
[testenv:base]
|
||||
; Ensure optional dependencies are not required
|
||||
deps =
|
||||
django
|
||||
-rrequirements/requirements-testing.txt
|
||||
|
||||
[testenv:dist]
|
||||
commands = ./runtests.py --fast {posargs} --no-pkgroot --staticfiles -rw
|
||||
deps =
|
||||
|
|
Loading…
Reference in New Issue
Block a user