test: run ./xmodule/ tests with CMS settings (#33534)
Currently, ./xmodule/ unit tests are only run with LMS settings. However, ./common/ and ./xmodule/ are run twice: once with LMS settings and once with CMS settings. Just like ./common/ and ./openedx/, the unit tests in ./xmodule/ validate behavior in both LMS and CMS. So, order to fully test ./xmodule/, we should to run its tests with CMS settings too. This will enable us to better validate certain LibraryContentBlocks behaviors being touched by https://github.com/openedx/edx-platform/pull/33263 which can't be expressed under LMS settings. Also in this commit: * refactor: rename the shards to be clear whether they're running under LMS or CMS * docs: correct comments regarding conditions under which codejail's test_cant_do_something_forbidden is skipped. * test: update a unit test which was using the now-deleted library_sourced block to use library_content block instead.
This commit is contained in:
@@ -18,6 +18,7 @@ from django.test import override_settings
|
||||
from six import unichr
|
||||
from six.moves import range
|
||||
|
||||
from openedx.core.djangolib.testing.utils import skip_unless_lms
|
||||
from xmodule.capa.safe_exec import safe_exec, update_hash
|
||||
from xmodule.capa.safe_exec.remote_exec import is_codejail_rest_service_enabled
|
||||
|
||||
@@ -81,17 +82,30 @@ class TestSafeExec(unittest.TestCase): # lint-amnesty, pylint: disable=missing-
|
||||
|
||||
|
||||
class TestSafeOrNot(unittest.TestCase): # lint-amnesty, pylint: disable=missing-class-docstring
|
||||
|
||||
@skip_unless_lms
|
||||
def test_cant_do_something_forbidden(self):
|
||||
'''
|
||||
Demonstrates that running unsafe code inside the code jail
|
||||
throws SafeExecException, protecting the calling process.
|
||||
|
||||
This test generally is skipped in CI due to its complex setup. That said, we recommend that devs who are
|
||||
hacking on CodeJail or advanced CAPA in any significant way take the time to make sure it passes locally.
|
||||
See either:
|
||||
* in-platform setup: https://github.com/openedx/edx-platform/blob/master/xmodule/capa/safe_exec/README.rst
|
||||
* remote setup (using Tutor): https://github.com/eduNEXT/tutor-contrib-codejail
|
||||
|
||||
Note on @skip_unless_lms:
|
||||
This test can also be run in a CMS context, but that's giving us trouble in CI right now (the skip logic isn't
|
||||
working). So, if you're running this locally, feel free to remove @skip_unless_lms and run it against CMS too.
|
||||
'''
|
||||
# Can't test for forbiddenness if CodeJail isn't configured for python.
|
||||
# If in-platform codejail isn't configured...
|
||||
if not jail_code.is_configured("python"):
|
||||
|
||||
# Can't test for forbiddenness if CodeJail rest service isn't enabled.
|
||||
# Remote codejailservice must be running, see https://github.com/eduNEXT/tutor-contrib-codejail/
|
||||
# ...AND if remote codejail isn't configured...
|
||||
if not is_codejail_rest_service_enabled():
|
||||
|
||||
# ...then skip this test.
|
||||
pytest.skip(reason="Local or remote codejail has to be configured and enabled to run this test.")
|
||||
|
||||
g = {}
|
||||
|
||||
@@ -8,9 +8,11 @@ from django.test.utils import override_settings
|
||||
from opaque_keys.edx.locator import BlockUsageLocator, CourseLocator
|
||||
from xblock.fields import ScopeIds
|
||||
|
||||
from openedx.core.djangolib.testing.utils import skip_unless_lms
|
||||
from xmodule.capa.xqueue_interface import XQueueInterface, XQueueService
|
||||
|
||||
|
||||
@skip_unless_lms
|
||||
class XQueueServiceTest(TestCase):
|
||||
"""Test the XQueue service methods."""
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user