pull/21238/head
Otto Winter 2019-02-15 10:57:02 +01:00 committed by Paulus Schoutsen
parent 26a79dff99
commit 219ca336a9
2 changed files with 12 additions and 5 deletions

View File

@ -637,7 +637,9 @@ def key_dependency(key, dependency):
# Schemas # Schemas
class HASchema(vol.Schema): class HASchema(vol.Schema):
"""Schema class that allows us to mark PREVENT_EXTRA errors as warnings.""" """Schema class that allows us to mark PREVENT_EXTRA errors as warnings."""
def __call__(self, data): def __call__(self, data):
"""Override __call__ to mark PREVENT_EXTRA as warning."""
try: try:
return super().__call__(data) return super().__call__(data)
except vol.Invalid as orig_err: except vol.Invalid as orig_err:
@ -646,6 +648,7 @@ class HASchema(vol.Schema):
# orig_error is of type vol.MultipleInvalid (see super __call__) # orig_error is of type vol.MultipleInvalid (see super __call__)
assert isinstance(orig_err, vol.MultipleInvalid) assert isinstance(orig_err, vol.MultipleInvalid)
# pylint: disable=no-member
# If it fails with PREVENT_EXTRA, try with ALLOW_EXTRA # If it fails with PREVENT_EXTRA, try with ALLOW_EXTRA
self.extra = vol.ALLOW_EXTRA self.extra = vol.ALLOW_EXTRA
# In case it still fails the following will raise # In case it still fails the following will raise
@ -676,7 +679,7 @@ class HASchema(vol.Schema):
return validated return validated
def extend(self, schema, required=None, extra=None): def extend(self, schema, required=None, extra=None):
"""Extend this schema and convert it to HASchema if necessary""" """Extend this schema and convert it to HASchema if necessary."""
ret = super().extend(schema, required=required, extra=extra) ret = super().extend(schema, required=required, extra=extra)
if extra is not None: if extra is not None:
return ret return ret

View File

@ -117,7 +117,8 @@ class TestSetup:
'invalid': 'extra', 'invalid': 'extra',
} }
}) })
assert caplog.text.count('Your configuration contains extra keys') == 1 assert caplog.text.count('Your configuration contains '
'extra keys') == 1
self.hass.data.pop(setup.DATA_SETUP) self.hass.data.pop(setup.DATA_SETUP)
self.hass.config.components.remove('platform_conf') self.hass.config.components.remove('platform_conf')
@ -133,7 +134,8 @@ class TestSetup:
'invalid': True 'invalid': True
} }
}) })
assert caplog.text.count('Your configuration contains extra keys') == 2 assert caplog.text.count('Your configuration contains '
'extra keys') == 2
self.hass.data.pop(setup.DATA_SETUP) self.hass.data.pop(setup.DATA_SETUP)
self.hass.config.components.remove('platform_conf') self.hass.config.components.remove('platform_conf')
@ -215,7 +217,8 @@ class TestSetup:
'invalid': 'extra', 'invalid': 'extra',
} }
}) })
assert caplog.text.count('Your configuration contains extra keys') == 1 assert caplog.text.count('Your configuration contains '
'extra keys') == 1
self.hass.data.pop(setup.DATA_SETUP) self.hass.data.pop(setup.DATA_SETUP)
self.hass.config.components.remove('platform_conf') self.hass.config.components.remove('platform_conf')
@ -266,7 +269,8 @@ class TestSetup:
'invalid': 'extra', 'invalid': 'extra',
} }
}) })
assert caplog.text.count('Your configuration contains extra keys') == 1 assert caplog.text.count('Your configuration contains '
'extra keys') == 1
self.hass.data.pop(setup.DATA_SETUP) self.hass.data.pop(setup.DATA_SETUP)
self.hass.config.components.remove('platform_conf') self.hass.config.components.remove('platform_conf')