mirror of https://github.com/scrapy/scrapy.git
Add setdefault to BaseSettings (#5821)
This commit is contained in:
parent
88eec7a417
commit
8aca47e25d
|
|
@ -293,6 +293,13 @@ class BaseSettings(MutableMapping):
|
|||
else:
|
||||
self.attributes[name].set(value, priority)
|
||||
|
||||
def setdefault(self, name, default=None, priority="project"):
|
||||
if name not in self:
|
||||
self.set(name, default, priority)
|
||||
return default
|
||||
|
||||
return self.attributes[name].value
|
||||
|
||||
def setdict(self, values, priority="project"):
|
||||
self.update(values, priority)
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,19 @@ class BaseSettingsTest(unittest.TestCase):
|
|||
def setUp(self):
|
||||
self.settings = BaseSettings()
|
||||
|
||||
def test_setdefault_not_existing_value(self):
|
||||
settings = BaseSettings()
|
||||
value = settings.setdefault("TEST_OPTION", "value")
|
||||
self.assertEqual(settings["TEST_OPTION"], "value")
|
||||
self.assertEqual(value, "value")
|
||||
self.assertIsNotNone(value)
|
||||
|
||||
def test_setdefault_existing_value(self):
|
||||
settings = BaseSettings({"TEST_OPTION": "value"})
|
||||
value = settings.setdefault("TEST_OPTION", None)
|
||||
self.assertEqual(settings["TEST_OPTION"], "value")
|
||||
self.assertEqual(value, "value")
|
||||
|
||||
def test_set_new_attribute(self):
|
||||
self.settings.set("TEST_OPTION", "value", 0)
|
||||
self.assertIn("TEST_OPTION", self.settings.attributes)
|
||||
|
|
|
|||
Loading…
Reference in New Issue