From eaca78748cd705b8ac7d987fc7e8a852eb690129 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sun, 19 Jun 2011 16:43:23 -0500 Subject: [PATCH] Need to run nosetests with CELERY_CONFIG_MODULE set to from_tests again. Basically, if we don't do this celery sets itself up before it should and improperly. :\ --- mediagoblin/celery_setup/from_celery.py | 14 ++++++++----- mediagoblin/celery_setup/from_tests.py | 26 +++++++++++++++++++++++++ mediagoblin/tests/tools.py | 8 +++++--- 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 mediagoblin/celery_setup/from_tests.py diff --git a/mediagoblin/celery_setup/from_celery.py b/mediagoblin/celery_setup/from_celery.py index 45e65e52..046aaa50 100644 --- a/mediagoblin/celery_setup/from_celery.py +++ b/mediagoblin/celery_setup/from_celery.py @@ -23,7 +23,7 @@ from mediagoblin.celery_setup import setup_celery_from_config OUR_MODULENAME = __name__ -def setup_self(): +def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME): """ Transform this module into a celery config module by reading the mediagoblin config file. Set the environment variable @@ -34,19 +34,23 @@ def setup_self(): Note that if celery_setup_elsewhere is set in your config file, this simply won't work. """ - mgoblin_conf_file = os.path.abspath( - os.environ.get('MEDIAGOBLIN_CONFIG', 'mediagoblin.ini')) + if check_environ_for_conf: + mgoblin_conf_file = os.path.abspath( + os.environ.get('MEDIAGOBLIN_CONFIG', 'mediagoblin.ini')) + else: + mgoblin_conf_file = 'mediagoblin.ini' + if not os.path.exists(mgoblin_conf_file): raise IOError( "MEDIAGOBLIN_CONFIG not set or file does not exist") # By setting the environment variable here we should ensure that # this is the module that gets set up. - os.environ['CELERY_CONFIG_MODULE'] = OUR_MODULENAME + os.environ['CELERY_CONFIG_MODULE'] = module_name app.MediaGoblinApp(mgoblin_conf_file, setup_celery=False) setup_celery_from_config( mg_globals.app_config, mg_globals.global_config, - settings_module=OUR_MODULENAME, + settings_module=module_name, set_environ=False) diff --git a/mediagoblin/celery_setup/from_tests.py b/mediagoblin/celery_setup/from_tests.py new file mode 100644 index 00000000..43032f41 --- /dev/null +++ b/mediagoblin/celery_setup/from_tests.py @@ -0,0 +1,26 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011 Free Software Foundation, Inc +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import os + +from mediagoblin.celery_setup.from_celery import setup_self + + +OUR_MODULENAME = __name__ + + +if os.environ.get('CELERY_CONFIG_MODULE') == OUR_MODULENAME: + setup_self(check_environ_for_conf=False, module_name=OUR_MODULENAME) diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py index b1fe56a0..515bccd4 100644 --- a/mediagoblin/tests/tools.py +++ b/mediagoblin/tests/tools.py @@ -47,10 +47,12 @@ class BadCeleryEnviron(Exception): pass def get_test_app(dump_old_app=True): - if os.environ.get('CELERY_CONFIG_MODULE'): + if not os.environ.get('CELERY_CONFIG_MODULE') == \ + 'mediagoblin.celery_setup.from_tests': raise BadCeleryEnviron( - u"Sorry, you *ABSOLUTELY MUST *NOT* run nosetests with the\n" - u"CELERY_CONFIG_MODULE set to anything.") + u"Sorry, you *absolutely* must run nosetests with the\n" + u"mediagoblin.celery_setup.from_tests module. Like so:\n" + u"$ CELERY_CONFIG_MODULE=mediagoblin.celery_setup.from_tests ./bin/nosetests") global MGOBLIN_APP global CELERY_SETUP -- 2.25.1