mirror of
https://github.com/getredash/redash.git
synced 2026-03-21 16:00:09 -04:00
* Fix loading of periodic tasks and clean up extension loading. This does a few things: - add tests for extension loading - refactor the extension and periodic task loading - better handle assertions raised by extensions (e.g. when an extension tries to override an already registered view) - attach exception traceback to error log during loading for improved debugging * Use site.addsitedir instead of calling pip. * Use sys.path instead of site.addsitedir and also the setup.py egg_info command.
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
import logging
|
|
import os
|
|
import sys
|
|
|
|
from redash import extensions
|
|
from tests import BaseTestCase
|
|
|
|
logger = logging.getLogger(__name__)
|
|
dummy_extension = "redash-dummy"
|
|
dummy_path = os.path.join(os.path.dirname(__file__), dummy_extension)
|
|
|
|
|
|
class TestExtensions(BaseTestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
sys.path.insert(0, dummy_path)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
sys.path.remove(dummy_path)
|
|
|
|
def test_working_extension(self):
|
|
self.assertIn("working_extension", extensions.extensions.keys())
|
|
self.assertEqual(
|
|
extensions.extensions.get("working_extension"), "extension loaded"
|
|
)
|
|
|
|
def test_assertive_extension(self):
|
|
self.assertNotIn("assertive_extension", extensions.extensions.keys())
|
|
|
|
def test_not_findable_extension(self):
|
|
self.assertNotIn("not_findable_extension", extensions.extensions.keys())
|
|
|
|
def test_not_importable_extension(self):
|
|
self.assertNotIn("not_importable_extension", extensions.extensions.keys())
|
|
|
|
def test_non_callable_extension(self):
|
|
self.assertNotIn("non_callable_extension", extensions.extensions.keys())
|
|
|
|
def test_dummy_periodic_task(self):
|
|
# need to load the periodic tasks manually since this isn't
|
|
# done automatically on test suite start but only part of
|
|
# the worker configuration
|
|
extensions.load_periodic_tasks(logger)
|
|
self.assertIn("dummy_periodic_task", extensions.periodic_tasks.keys())
|