Celery wasn't really being properly connected during tests.

Lots of fixes to do this.

 - setup_celery_from_config no longer responsible for checking
   'celery_setup_elsewhere'; that's the app's job.  (This was a problem
   because more than the app was relying on using this function)
 - Allow us to specifically set the config file we're setting up
   celery from with setup_self
 - Set up celery_always_eager.  This is something we strongly want
   while doing tests.
 - Instead of setting up the app in the get_test_app method, let's set
   that up simply by importing from_tests, which should itself up via
   from_celery being the environment variable being set.
This commit is contained in:
Christopher Allan Webber
2011-06-26 14:45:19 -05:00
parent 426685e088
commit 9ea5c28b7a
5 changed files with 19 additions and 21 deletions

View File

@@ -7,6 +7,9 @@ email_sender_address = "notice@mediagoblin.example.org"
email_debug_mode = true
db_name = __mediagoblin_tests__
# Celery shouldn't be set up by the paste app factory as it's set up
# elsewhere
# Celery shouldn't be set up by the application as it's setup via
# mediagoblin.celery_setup.from_celery
celery_setup_elsewhere = true
[celery]
celery_always_eager = true

View File

@@ -21,9 +21,8 @@ import os, shutil
from paste.deploy import loadapp
from webtest import TestApp
from mediagoblin import util, mg_globals
from mediagoblin import util
from mediagoblin.config import read_mediagoblin_config
from mediagoblin.celery_setup import setup_celery_from_config
from mediagoblin.decorators import _make_safe
from mediagoblin.db.open import setup_connection_and_db_from_config
@@ -36,7 +35,6 @@ TEST_APP_CONFIG = pkg_resources.resource_filename(
TEST_USER_DEV = pkg_resources.resource_filename(
'mediagoblin.tests', 'test_user_dev')
MGOBLIN_APP = None
CELERY_SETUP = False
USER_DEV_DIRECTORIES_TO_SETUP = [
'media/public', 'media/queue',
@@ -60,8 +58,10 @@ def suicide_if_bad_celery_environ():
def get_test_app(dump_old_app=True):
suicide_if_bad_celery_environ()
# Leave this imported as it sets up celery.
from mediagoblin.celery_setup import from_tests
global MGOBLIN_APP
global CELERY_SETUP
# Just return the old app if that exists and it's okay to set up
# and return
@@ -103,13 +103,6 @@ def get_test_app(dump_old_app=True):
app = TestApp(test_app)
MGOBLIN_APP = app
# setup celery
if not CELERY_SETUP:
setup_celery_from_config(
mg_globals.app_config, mg_globals.global_config,
set_environ=True)
CELERY_SETUP = True
return app