Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
matrix:
python_version: ['3.11']
ubuntu_version: ['22.04', '24.04']
tox_env: [ "django42", "django52"]
include:
- tox_env: quality
ubuntu_version: '24.04'
python_version: '3.11'

steps:
- uses: actions/checkout@v4
Expand All @@ -33,11 +38,5 @@ jobs:
docker run --name=codejail --privileged -d --security-opt apparmor=apparmor_profile \
openedx-codejail tail -f /dev/null

- name: Run Non Proxy Tests
run: docker exec -t codejail bash -c 'make clean && make test_no_proxy'

- name: Run Proxy Tests
run: docker exec -t codejail bash -c 'make clean && make test_proxy'

- name: Run Quality Tests
run: docker exec -t codejail bash -c 'make quality'
- name: Run Tests
run: docker exec -e TOXENV=${{ matrix.tox_env }} -t codejail bash -c 'tox'
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,13 @@ WORKDIR /codejail
# Clone Requirement files
COPY ./requirements/sandbox.txt /codejail/requirements/sandbox.txt
COPY ./requirements/testing.txt /codejail/requirements/testing.txt
COPY ./requirements/tox.txt /codejail/requirements/tox.txt

# Install codejail_sandbox sandbox dependencies
RUN source $CODEJAIL_TEST_VENV/bin/activate && pip install -r /codejail/requirements/sandbox.txt && deactivate

# Install testing requirements in parent venv
RUN pip install -r /codejail/requirements/sandbox.txt && pip install -r /codejail/requirements/testing.txt
RUN pip install -r /codejail/requirements/sandbox.txt -r /codejail/requirements/testing.txt -r /codejail/requirements/tox.txt

# Clone Codejail Repo
COPY . /codejail
Expand Down
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ upgrade: $(COMMON_CONSTRAINTS_TXT)
pip-compile --annotation-style=line --upgrade -o requirements/testing.txt requirements/testing.in
pip-compile --annotation-style=line --upgrade -o requirements/sandbox.txt requirements/sandbox.in
pip-compile --annotation-style=line --upgrade -o requirements/development.txt requirements/development.in
# Handle Django via tox
sed -i '/^[dD]jango==/d' requirements/testing.txt

quality: ## check coding style with pycodestyle and pylint
pycodestyle codejail *.py
Expand Down
14 changes: 14 additions & 0 deletions codejail/tests/test_django_integration_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

from unittest import TestCase

from django.conf import settings

from .. import jail_code
from ..django_integration import ConfigureCodeJailMiddleware, MiddlewareNotUsed
from ..django_integration_utils import apply_django_settings
from .util import ResetJailCodeStateMixin

Expand Down Expand Up @@ -147,3 +150,14 @@ def test_limits_with_overrides_config(self):
'PROXY': 1,
}
)


class InitConfigureCodeJailMiddlewareTest(TestCase):
"""Test the ConfigureCodeJailMiddleware."""

def test_instantiate_middleware(self):
"""Ensure is disabled after running the __init__ method."""
settings.configure()
settings.CODE_JAIL = {}
with self.assertRaises(expected_exception=MiddlewareNotUsed):
ConfigureCodeJailMiddleware(get_response=lambda x: None)
2 changes: 0 additions & 2 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
-c common_constraints.txt
# Django LTS version
django>=3.2,<4.0
5 changes: 4 additions & 1 deletion requirements/development.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@
#
# make upgrade
#
asgiref==3.8.1 # via -r requirements/testing.txt, django
astroid==3.3.9 # via -r requirements/testing.txt, pylint
dill==0.4.0 # via -r requirements/testing.txt, pylint
django==4.2.21 # via -c requirements/common_constraints.txt, -r requirements/testing.txt
iniconfig==2.1.0 # via -r requirements/testing.txt, pytest
isort==6.0.1 # via -r requirements/testing.txt, pylint
mccabe==0.7.0 # via -r requirements/testing.txt, pylint
packaging==25.0 # via -r requirements/testing.txt, pytest
platformdirs==4.3.7 # via -r requirements/testing.txt, pylint
platformdirs==4.3.8 # via -r requirements/testing.txt, pylint
pluggy==1.5.0 # via -r requirements/testing.txt, pytest
pycodestyle==2.13.0 # via -r requirements/testing.txt
pylint==3.3.7 # via -r requirements/testing.txt
pytest==8.3.5 # via -r requirements/testing.txt
sqlparse==0.5.3 # via -r requirements/testing.txt, django
tomlkit==0.13.2 # via -r requirements/testing.txt, pylint
2 changes: 1 addition & 1 deletion requirements/pip.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
wheel==0.45.1 # via -r requirements/pip.in

# The following packages are considered to be unsafe in a requirements file:
pip==24.2 # via -c /home/runner/work/codejail/codejail/requirements/common_constraints.txt, -r requirements/pip.in
pip==24.2 # via -c requirements/common_constraints.txt, -r requirements/pip.in
setuptools==80.3.1 # via -r requirements/pip.in
1 change: 0 additions & 1 deletion requirements/sandbox.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
# These requirements should be installed during the creation
# of sandboxes used for testing codejail

django
numpy
six
4 changes: 0 additions & 4 deletions requirements/sandbox.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,5 @@
#
# make upgrade
#
asgiref==3.8.1 # via django
django==3.2.25 # via -c requirements/common_constraints.txt, -c requirements/constraints.txt, -r requirements/sandbox.in
numpy==2.2.5 # via -r requirements/sandbox.in
pytz==2025.2 # via django
six==1.17.0 # via -r requirements/sandbox.in
sqlparse==0.5.3 # via django
1 change: 1 addition & 0 deletions requirements/testing.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ pylint
pytest
isort
pycodestyle
django
4 changes: 3 additions & 1 deletion requirements/testing.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
#
# make upgrade
#
asgiref==3.8.1 # via django
astroid==3.3.9 # via pylint
dill==0.4.0 # via pylint
iniconfig==2.1.0 # via pytest
isort==6.0.1 # via -r requirements/testing.in, pylint
mccabe==0.7.0 # via pylint
packaging==25.0 # via pytest
platformdirs==4.3.7 # via pylint
platformdirs==4.3.8 # via pylint
pluggy==1.5.0 # via pytest
pycodestyle==2.13.0 # via -r requirements/testing.in
pylint==3.3.7 # via -r requirements/testing.in
pytest==8.3.5 # via -r requirements/testing.in
sqlparse==0.5.3 # via django
tomlkit==0.13.2 # via pylint
4 changes: 2 additions & 2 deletions requirements/tox.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ colorama==0.4.6 # via tox
distlib==0.3.9 # via virtualenv
filelock==3.18.0 # via tox, virtualenv
packaging==25.0 # via pyproject-api, tox
platformdirs==4.3.7 # via tox, virtualenv
platformdirs==4.3.8 # via tox, virtualenv
pluggy==1.5.0 # via tox
pyproject-api==1.9.0 # via tox
tox==4.25.0 # via -r requirements/tox.in
virtualenv==20.30.0 # via tox
virtualenv==20.31.2 # via tox
5 changes: 4 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py38
envlist = django{42,52}

[testenv]
passenv =
Expand All @@ -9,6 +9,8 @@ allowlist_externals =
make
mkdir
deps =
django42: Django~=4.2
django52: Django~=5.2
-rrequirements/testing.txt
-rrequirements/sandbox.txt
commands =
Expand All @@ -22,6 +24,7 @@ commands =
allowlist_externals =
make
deps =
django~=5.2
-rrequirements/testing.txt
commands =
make quality