From df2f26c6075c81fdfb58c983fda9b9908f709e5c Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 11 Mar 2017 03:11:39 +0100 Subject: [PATCH] [enh] Trigger exception during unit tests if string key aint defined (#261) --- src/yunohost/tests/conftest.py | 97 ++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 5 deletions(-) diff --git a/src/yunohost/tests/conftest.py b/src/yunohost/tests/conftest.py index 2845de4ee..f979d1b42 100644 --- a/src/yunohost/tests/conftest.py +++ b/src/yunohost/tests/conftest.py @@ -3,14 +3,101 @@ import moulinette sys.path.append("..") +############################################################################### +# Tweak moulinette init to have yunohost namespace # +############################################################################### + + old_init = moulinette.core.Moulinette18n.__init__ - - def monkey_path_i18n_init(self, package, default_locale="en"): old_init(self, package, default_locale) self.load_namespace("yunohost") - - moulinette.core.Moulinette18n.__init__ = monkey_path_i18n_init -moulinette.init() + +############################################################################### +# Tweak translator to raise exceptions if string keys are not defined # +############################################################################### + + +old_translate = moulinette.core.Translator.translate +def new_translate(self, key, *args, **kwargs): + + if key not in self._translations[self.default_locale].keys(): + raise KeyError("Unable to retrieve key %s for default locale !" % key) + + return old_translate(self, key, *args, **kwargs) +moulinette.core.Translator.translate = new_translate + +def new_m18nn(self, key, *args, **kwargs): + return self._namespace.translate(key, *args, **kwargs) +moulinette.core.Moulinette18n.n = new_m18nn + + +############################################################################### +# Init the moulinette to have the cli loggers stuff # +############################################################################### + + +def _init_moulinette(): + """Configure logging and initialize the moulinette""" + # Define loggers handlers + handlers = set(['tty']) + root_handlers = set(handlers) + + # Define loggers level + level = 'INFO' + tty_level = 'SUCCESS' + + # Custom logging configuration + logging = { + 'version': 1, + 'disable_existing_loggers': True, + 'formatters': { + 'tty-debug': { + 'format': '%(relativeCreated)-4d %(fmessage)s' + }, + 'precise': { + 'format': '%(asctime)-15s %(levelname)-8s %(name)s %(funcName)s - %(fmessage)s' + }, + }, + 'filters': { + 'action': { + '()': 'moulinette.utils.log.ActionFilter', + }, + }, + 'handlers': { + 'tty': { + 'level': tty_level, + 'class': 'moulinette.interfaces.cli.TTYHandler', + 'formatter': '', + }, + }, + 'loggers': { + 'yunohost': { + 'level': level, + 'handlers': handlers, + 'propagate': False, + }, + 'moulinette': { + 'level': level, + 'handlers': [], + 'propagate': True, + }, + 'moulinette.interface': { + 'level': level, + 'handlers': handlers, + 'propagate': False, + }, + }, + 'root': { + 'level': level, + 'handlers': root_handlers, + }, + } + + # Initialize moulinette + moulinette.init(logging_config=logging, _from_source=False) + + +_init_moulinette()