Skip to content

Commit

Permalink
Merge pull request #2011 from twobraids/mixin-mixup
Browse files Browse the repository at this point in the history
Fixes Bug 999060 - mixins inadvertently propagate changes to other classes
  • Loading branch information
lonnen committed Apr 21, 2014
2 parents 2ffcb5b + d75c365 commit 77600e1
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
10 changes: 5 additions & 5 deletions socorro/cron/mixins.py
Expand Up @@ -58,21 +58,21 @@ def class_decorator(cls):
raise Exception(
'%s must have RequiredConfig as a base class' % cls
)
if not hasattr(cls, 'required_config'):
cls.requried_config = Namespace()
cls.required_config.namespace(resource_name)
cls.required_config[resource_name].add_option(
new_req = cls.get_required_config()
new_req.namespace(resource_name)
new_req[resource_name].add_option(
'%s_class' % resource_name,
default=transactional_resource_class,
from_string_converter=class_converter,
)
cls.required_config[resource_name].add_option(
new_req[resource_name].add_option(
'%s_transaction_executor_class' % resource_name,
default=
'socorro.database.transaction_executor.TransactionExecutor',
doc='a class that will execute transactions',
from_string_converter=class_converter,
)
cls.required_config = new_req

#------------------------------------------------------------------
def new__init__(self, *args, **kwargs):
Expand Down
19 changes: 19 additions & 0 deletions socorro/unittest/cron/test_crontab_mixins.py
Expand Up @@ -122,3 +122,22 @@ class Alpha(BaseCronApp):
def __init__(self, config):
self.config = config
ok_(hasattr(Alpha, '_run_proxy'))

def test_no_over_propagation(self):


@ctm.with_postgres_transactions()
class Alpha(BaseCronApp):
required_config = Namespace()
required_config.add_option('a', default=0)


@ctm.with_rabbitmq_transactions()
class Beta(BaseCronApp):
required_config = Namespace()
required_config.add_option('a', default=0)

ok_('database' in Alpha.get_required_config())
ok_('queuing' not in Alpha.get_required_config())
ok_('database' not in Beta.get_required_config())
ok_('queuing' in Beta.get_required_config())

0 comments on commit 77600e1

Please sign in to comment.