error in external function should returns only ConfigError

This commit is contained in:
Emmanuel Garette 2017-02-12 10:38:57 +01:00
parent 80f6f4ba03
commit 5bf75b3824
6 changed files with 45 additions and 15 deletions

View File

@ -1,3 +1,7 @@
Sun Feb 12 10:30:13 2017 +0200 Emmanuel Garette <egarette@cadoles.com>
* error in external function should returns explicit error message
all errors will be ConfigError
Thu Jan 12 19:49:41 2017 +0200 Emmanuel Garette <egarette@cadoles.com>
* can mix inversed and non inversed requires
* validator's function can have 1 arg, 2 args or 3 args without

View File

@ -993,9 +993,9 @@ def test_callback_raise():
cfg.read_write()
try:
cfg.od1.opt1
except Exception, err:
except ConfigError, err:
assert '"Option 1"' in str(err)
try:
cfg.od2.opt2
except ValueError, err:
except ConfigError, err:
assert '"Option 2"' in str(err)

View File

@ -7,7 +7,7 @@ from py.test import raises
from tiramisu.config import Config
from tiramisu.option import BoolOption, StrOption, OptionDescription
from tiramisu.setting import groups
from tiramisu.error import ValueWarning
from tiramisu.error import ValueWarning, ConfigError
from tiramisu.i18n import _
@ -183,7 +183,7 @@ def test_validator_params_value_values_index_slave():
def test_validator_params_value_values_notmulti():
raises(TypeError, "opt1 = StrOption('opt1', '', validator=value_values, default='val')")
raises(ConfigError, "opt1 = StrOption('opt1', '', validator=value_values, default='val')")
def test_validator_params_value_values_kwargs_empty():
@ -286,7 +286,7 @@ def test_validator_params_context():
def test_validator_params_key():
opt1 = StrOption('opt1', '', validator=return_true, validator_params={'param': ('yes',)}, default='val')
raises(TypeError, "StrOption('opt2', '', validator=return_true, validator_params={'param_unknown': ('yes',)}, default='val')")
raises(ConfigError, "StrOption('opt2', '', validator=return_true, validator_params={'param_unknown': ('yes',)}, default='val')")
root = OptionDescription('root', '', [opt1])
cfg = Config(root)
assert cfg.opt1 == 'val'

View File

@ -260,6 +260,16 @@ def calculate(option, callback, is_validator, args, kwargs):
error = err
except Exception as err:
error = err
raise error.__class__(_('function "{0}" returns "{1}" for option "{2}"').format(callback.func_name,
option.impl_get_display_name(),
str(err)))
if len(args) != 0 or len(kwargs) != 0:
msg = _('unexpected error "{0}" in function "{1}" with arguments "{3}" and "{4}" '
'for option "{2}"').format(str(error),
callback.func_name,
option.impl_get_display_name(),
args,
kwargs)
else:
msg = _('unexpected error "{0}" in function "{1}" for option "{2}"'
'').format(str(error),
callback.func_name,
option.impl_get_display_name())
raise ConfigError(msg)

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-11 18:05+0100\n"
"POT-Creation-Date: 2017-02-12 10:35+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -26,9 +26,18 @@ msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
"un calcul ne peut pas retourner une liste pour une option esclave ({0})"
#: tiramisu/autolib.py:263
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
msgstr "la fonction \"{0}\" retourne \"{1}\" pour l'option \"{2}\""
#: tiramisu/autolib.py:264
msgid ""
"unexpected error \"{0}\" in function \"{1}\" with arguments \"{3}\" and "
"\"{4}\" for option \"{2}\""
msgstr ""
"erreur inattendue \"{0}\" dans la fonction \"{1}\" avec les arguments "
"\"{3}\" et \"{4}\" pour l'option \"{2}\""
#: tiramisu/autolib.py:271
msgid "unexpected error \"{0}\" in function \"{1}\" for option \"{2}\""
msgstr ""
"erreur inattendue \"{0}\" dans la fonction \"{1}\" pour l'option \"{2}\""
#: tiramisu/config.py:64
msgid "descr must be an optiondescription, not {0}"
@ -931,6 +940,9 @@ msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
msgid "cannot pop a value on a multi option {0} which is a slave"
msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
#~ msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
#~ msgstr "la fonction \"{0}\" retourne \"{1}\" pour l'option \"{2}\""
#~ msgid "not allowed default value for option {0} in group {1}"
#~ msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}"

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2017-02-11 18:04+CET\n"
"POT-Creation-Date: 2017-02-12 10:34+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,8 +23,12 @@ msgstr ""
msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
#: tiramisu/autolib.py:263
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
#: tiramisu/autolib.py:264
msgid "unexpected error \"{0}\" in function \"{1}\" with arguments \"{3}\" and \"{4}\" for option \"{2}\""
msgstr ""
#: tiramisu/autolib.py:271
msgid "unexpected error \"{0}\" in function \"{1}\" for option \"{2}\""
msgstr ""
#: tiramisu/config.py:64