error in external function should returns only ConfigError
This commit is contained in:
parent
80f6f4ba03
commit
5bf75b3824
6 changed files with 45 additions and 15 deletions
|
@ -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>
|
Thu Jan 12 19:49:41 2017 +0200 Emmanuel Garette <egarette@cadoles.com>
|
||||||
* can mix inversed and non inversed requires
|
* can mix inversed and non inversed requires
|
||||||
* validator's function can have 1 arg, 2 args or 3 args without
|
* validator's function can have 1 arg, 2 args or 3 args without
|
||||||
|
|
|
@ -993,9 +993,9 @@ def test_callback_raise():
|
||||||
cfg.read_write()
|
cfg.read_write()
|
||||||
try:
|
try:
|
||||||
cfg.od1.opt1
|
cfg.od1.opt1
|
||||||
except Exception, err:
|
except ConfigError, err:
|
||||||
assert '"Option 1"' in str(err)
|
assert '"Option 1"' in str(err)
|
||||||
try:
|
try:
|
||||||
cfg.od2.opt2
|
cfg.od2.opt2
|
||||||
except ValueError, err:
|
except ConfigError, err:
|
||||||
assert '"Option 2"' in str(err)
|
assert '"Option 2"' in str(err)
|
||||||
|
|
|
@ -7,7 +7,7 @@ from py.test import raises
|
||||||
from tiramisu.config import Config
|
from tiramisu.config import Config
|
||||||
from tiramisu.option import BoolOption, StrOption, OptionDescription
|
from tiramisu.option import BoolOption, StrOption, OptionDescription
|
||||||
from tiramisu.setting import groups
|
from tiramisu.setting import groups
|
||||||
from tiramisu.error import ValueWarning
|
from tiramisu.error import ValueWarning, ConfigError
|
||||||
from tiramisu.i18n import _
|
from tiramisu.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ def test_validator_params_value_values_index_slave():
|
||||||
|
|
||||||
|
|
||||||
def test_validator_params_value_values_notmulti():
|
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():
|
def test_validator_params_value_values_kwargs_empty():
|
||||||
|
@ -286,7 +286,7 @@ def test_validator_params_context():
|
||||||
|
|
||||||
def test_validator_params_key():
|
def test_validator_params_key():
|
||||||
opt1 = StrOption('opt1', '', validator=return_true, validator_params={'param': ('yes',)}, default='val')
|
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])
|
root = OptionDescription('root', '', [opt1])
|
||||||
cfg = Config(root)
|
cfg = Config(root)
|
||||||
assert cfg.opt1 == 'val'
|
assert cfg.opt1 == 'val'
|
||||||
|
|
|
@ -260,6 +260,16 @@ def calculate(option, callback, is_validator, args, kwargs):
|
||||||
error = err
|
error = err
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
error = err
|
error = err
|
||||||
raise error.__class__(_('function "{0}" returns "{1}" for option "{2}"').format(callback.func_name,
|
if len(args) != 0 or len(kwargs) != 0:
|
||||||
option.impl_get_display_name(),
|
msg = _('unexpected error "{0}" in function "{1}" with arguments "{3}" and "{4}" '
|
||||||
str(err)))
|
'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)
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Tiramisu\n"
|
"Project-Id-Version: Tiramisu\n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
|
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
|
||||||
"Language-Team: Tiramisu's team <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 ""
|
msgstr ""
|
||||||
"un calcul ne peut pas retourner une liste pour une option esclave ({0})"
|
"un calcul ne peut pas retourner une liste pour une option esclave ({0})"
|
||||||
|
|
||||||
#: tiramisu/autolib.py:263
|
#: tiramisu/autolib.py:264
|
||||||
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
|
msgid ""
|
||||||
msgstr "la fonction \"{0}\" retourne \"{1}\" pour l'option \"{2}\""
|
"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
|
#: tiramisu/config.py:64
|
||||||
msgid "descr must be an optiondescription, not {0}"
|
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"
|
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"
|
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}"
|
#~ 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}"
|
#~ msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -23,8 +23,12 @@ msgstr ""
|
||||||
msgid "callback cannot return a list for a slave option ({0})"
|
msgid "callback cannot return a list for a slave option ({0})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/autolib.py:263
|
#: tiramisu/autolib.py:264
|
||||||
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
|
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 ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:64
|
#: tiramisu/config.py:64
|
||||||
|
|
Loading…
Reference in a new issue