diff --git a/sentry/__init__.py b/sentry/__init__.py index 20516b970..916ea8885 100644 --- a/sentry/__init__.py +++ b/sentry/__init__.py @@ -46,11 +46,7 @@ def initialize_raven(config, client_cls=None): _logger.debug( "Both sentry_odoo_dir and sentry_release defined, choosing sentry_release" ) - options = { - "release": config.get( - "sentry_release", get_odoo_commit(config.get("sentry_odoo_dir")) - ) - } + options = {} for option in const.get_sentry_options(): value = config.get("sentry_%s" % option.key, option.default) if isinstance(option.converter, abc.Callable): @@ -64,6 +60,11 @@ def initialize_raven(config, client_cls=None): if level not in const.LOG_LEVEL_MAP: level = const.DEFAULT_LOG_LEVEL + if not options.get("release"): + options["release"] = config.get( + "sentry_release", get_odoo_commit(config.get("sentry_odoo_dir")) + ) + client_cls = client_cls or raven.Client client = client_cls(**options) handler = OdooSentryHandler( diff --git a/sentry/tests/test_client.py b/sentry/tests/test_client.py index eb68c7137..49bfe8f61 100644 --- a/sentry/tests/test_client.py +++ b/sentry/tests/test_client.py @@ -6,12 +6,16 @@ import sys import unittest import raven +from mock import patch from odoo import exceptions from .. import initialize_raven from ..logutils import OdooSentryHandler +GIT_SHA = "d670460b4b4aece5915caf5c68d12f560a9fe3e4" +RELEASE = "test@1.2.3" + def log_handler_by_class(logger, handler_cls): for handler in logger.handlers: @@ -117,3 +121,32 @@ class TestClientSetup(unittest.TestCase): record = logging.LogRecord(__name__, level, __file__, 42, msg, (), exc_info) handler.emit(record) self.assertEventNotCaptured(client, level, msg) + + @patch("odoo.addons.sentry.get_odoo_commit", return_value=GIT_SHA) + def test_config_odoo_dir(self, get_odoo_commit): + config = { + "sentry_enabled": True, + "sentry_dsn": "http://public:secret@example.com/1", + "sentry_odoo_dir": "/opt/odoo/core", + } + client = initialize_raven(config, client_cls=InMemoryClient) + self.assertEqual( + client.release, + GIT_SHA, + "Failed to use 'sentry_odoo_dir' parameter appropriately", + ) + + @patch("odoo.addons.sentry.get_odoo_commit", return_value=GIT_SHA) + def test_config_release(self, get_odoo_commit): + config = { + "sentry_enabled": True, + "sentry_dsn": "http://public:secret@example.com/1", + "sentry_odoo_dir": "/opt/odoo/core", + "sentry_release": RELEASE, + } + client = initialize_raven(config, client_cls=InMemoryClient) + self.assertEqual( + client.release, + RELEASE, + "Failed to use 'sentry_release' parameter appropriately", + )