From 70f2010db17b3796c3edce9c6ca3e00c092d6064 Mon Sep 17 00:00:00 2001 From: Julia Medina Date: Thu, 14 Aug 2014 11:59:25 -0300 Subject: [PATCH] Change error type when updating frozen settings --- scrapy/settings/__init__.py | 10 +++++++--- tests/test_settings/__init__.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scrapy/settings/__init__.py b/scrapy/settings/__init__.py index bbe8ef481..938b93564 100644 --- a/scrapy/settings/__init__.py +++ b/scrapy/settings/__init__.py @@ -88,7 +88,7 @@ class Settings(object): return dict(value) def set(self, name, value, priority='project'): - assert not self.frozen, "Trying to modify an immutable Settings object" + self._assert_mutability() if isinstance(priority, six.string_types): priority = SETTINGS_PRIORITIES[priority] if name not in self.attributes: @@ -97,18 +97,22 @@ class Settings(object): self.attributes[name].set(value, priority) def setdict(self, values, priority='project'): - assert not self.frozen, "Trying to modify an immutable Settings object" + self._assert_mutability() for name, value in six.iteritems(values): self.set(name, value, priority) def setmodule(self, module, priority='project'): - assert not self.frozen, "Trying to modify an immutable Settings object" + self._assert_mutability() if isinstance(module, six.string_types): module = import_module(module) for key in dir(module): if key.isupper(): self.set(key, getattr(module, key), priority) + def _assert_mutability(self): + if self.frozen: + raise TypeError("Trying to modify an immutable Settings object") + def copy(self): return copy.deepcopy(self) diff --git a/tests/test_settings/__init__.py b/tests/test_settings/__init__.py index c7e0914d6..38797ad45 100644 --- a/tests/test_settings/__init__.py +++ b/tests/test_settings/__init__.py @@ -213,7 +213,7 @@ class SettingsTest(unittest.TestCase): def test_freeze(self): self.settings.freeze() - with self.assertRaises(AssertionError) as cm: + with self.assertRaises(TypeError) as cm: self.settings.set('TEST_BOOL', False) self.assertEqual(str(cm.exception), "Trying to modify an immutable Settings object")