From fb4233736f3eb780b48f124a42df571902d16c56 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 2 Jul 2015 10:28:46 +0100 Subject: [PATCH] Empty settings should also be coerced to lists. Closes #3087. --- rest_framework/settings.py | 2 +- tests/test_settings.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index a7b63721e..e20e51287 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -204,7 +204,7 @@ class APISettings(object): val = self.defaults[attr] # Coerce import strings into classes - if val and attr in self.import_strings: + if attr in self.import_strings: val = perform_import(val, attr) # Cache the result diff --git a/tests/test_settings.py b/tests/test_settings.py index 85c36c1fd..cc8d0d51f 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -17,3 +17,16 @@ class TestSettings(TestCase): }) with self.assertRaises(ImportError): settings.DEFAULT_RENDERER_CLASSES + + +class TestSettingTypes(TestCase): + def test_settings_consistently_coerced_to_list(self): + settings = APISettings({ + 'DEFAULT_THROTTLE_CLASSES': ('rest_framework.throttling.BaseThrottle',) + }) + self.assertTrue(isinstance(settings.DEFAULT_THROTTLE_CLASSES, list)) + + settings = APISettings({ + 'DEFAULT_THROTTLE_CLASSES': () + }) + self.assertTrue(isinstance(settings.DEFAULT_THROTTLE_CLASSES, list))