Skip to content

Commit dbeda46

Browse files
committed
feat: add support for Django 5.2
The only usage of Django is in ConfigureCodeJailMiddleware. A small test to check that the middleware can be correctly instantiated is included.
1 parent b5682ea commit dbeda46

File tree

13 files changed

+40
-22
lines changed

13 files changed

+40
-22
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ jobs:
1414
matrix:
1515
python_version: ['3.11']
1616
ubuntu_version: ['22.04', '24.04']
17+
tox_env: [ "django42", "django52"]
18+
include:
19+
- tox_env: quality
20+
ubuntu_version: '24.04'
21+
python_version: '3.11'
1722

1823
steps:
1924
- uses: actions/checkout@v4
@@ -33,11 +38,5 @@ jobs:
3338
docker run --name=codejail --privileged -d --security-opt apparmor=apparmor_profile \
3439
openedx-codejail tail -f /dev/null
3540
36-
- name: Run Non Proxy Tests
37-
run: docker exec -t codejail bash -c 'make clean && make test_no_proxy'
38-
39-
- name: Run Proxy Tests
40-
run: docker exec -t codejail bash -c 'make clean && make test_proxy'
41-
42-
- name: Run Quality Tests
43-
run: docker exec -t codejail bash -c 'make quality'
41+
- name: Run Tests
42+
run: docker exec TOXENV=${{ matrix.tox_env }} -t codejail bash -c 'tox'

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,13 @@ WORKDIR /codejail
5353
# Clone Requirement files
5454
COPY ./requirements/sandbox.txt /codejail/requirements/sandbox.txt
5555
COPY ./requirements/testing.txt /codejail/requirements/testing.txt
56+
COPY ./requirements/tox.txt /codejail/requirements/tox.txt
5657

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

6061
# Install testing requirements in parent venv
61-
RUN pip install -r /codejail/requirements/sandbox.txt && pip install -r /codejail/requirements/testing.txt
62+
RUN pip install -r /codejail/requirements/sandbox.txt -r /codejail/requirements/testing.txt -r /codejail/requirements/tox.txt
6263

6364
# Clone Codejail Repo
6465
COPY . /codejail

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ upgrade: $(COMMON_CONSTRAINTS_TXT)
3535
pip-compile --annotation-style=line --upgrade -o requirements/testing.txt requirements/testing.in
3636
pip-compile --annotation-style=line --upgrade -o requirements/sandbox.txt requirements/sandbox.in
3737
pip-compile --annotation-style=line --upgrade -o requirements/development.txt requirements/development.in
38+
# Handle Django via tox
39+
sed -i '/^[dD]jango==/d' requirements/testing.txt
3840

3941
quality: ## check coding style with pycodestyle and pylint
4042
pycodestyle codejail *.py

codejail/tests/test_django_integration_utils.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
from unittest import TestCase
44

5+
from django.conf import settings
6+
57
from .. import jail_code
8+
from ..django_integration import ConfigureCodeJailMiddleware, MiddlewareNotUsed
69
from ..django_integration_utils import apply_django_settings
710
from .util import ResetJailCodeStateMixin
811

@@ -147,3 +150,14 @@ def test_limits_with_overrides_config(self):
147150
'PROXY': 1,
148151
}
149152
)
153+
154+
155+
class InitConfigureCodeJailMiddlewareTest(TestCase):
156+
"""Test the ConfigureCodeJailMiddleware."""
157+
158+
def test_instantiate_middleware(self):
159+
"""Ensure is disabled after running the __init__ method."""
160+
settings.configure()
161+
settings.CODE_JAIL = {}
162+
with self.assertRaises(expected_exception=MiddlewareNotUsed):
163+
ConfigureCodeJailMiddleware(get_response=lambda x: None)

requirements/constraints.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
11
-c common_constraints.txt
2-
# Django LTS version
3-
django>=3.2,<4.0

requirements/development.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
#
55
# make upgrade
66
#
7+
asgiref==3.8.1 # via -r requirements/testing.txt, django
78
astroid==3.3.9 # via -r requirements/testing.txt, pylint
89
dill==0.4.0 # via -r requirements/testing.txt, pylint
10+
django==4.2.21 # via -c requirements/common_constraints.txt, -r requirements/testing.txt
911
iniconfig==2.1.0 # via -r requirements/testing.txt, pytest
1012
isort==6.0.1 # via -r requirements/testing.txt, pylint
1113
mccabe==0.7.0 # via -r requirements/testing.txt, pylint
1214
packaging==25.0 # via -r requirements/testing.txt, pytest
13-
platformdirs==4.3.7 # via -r requirements/testing.txt, pylint
15+
platformdirs==4.3.8 # via -r requirements/testing.txt, pylint
1416
pluggy==1.5.0 # via -r requirements/testing.txt, pytest
1517
pycodestyle==2.13.0 # via -r requirements/testing.txt
1618
pylint==3.3.7 # via -r requirements/testing.txt
1719
pytest==8.3.5 # via -r requirements/testing.txt
20+
sqlparse==0.5.3 # via -r requirements/testing.txt, django
1821
tomlkit==0.13.2 # via -r requirements/testing.txt, pylint

requirements/pip.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
wheel==0.45.1 # via -r requirements/pip.in
88

99
# The following packages are considered to be unsafe in a requirements file:
10-
pip==24.2 # via -c /home/runner/work/codejail/codejail/requirements/common_constraints.txt, -r requirements/pip.in
10+
pip==24.2 # via -c requirements/common_constraints.txt, -r requirements/pip.in
1111
setuptools==80.3.1 # via -r requirements/pip.in

requirements/sandbox.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22
# These requirements should be installed during the creation
33
# of sandboxes used for testing codejail
44

5-
django
65
numpy
76
six

requirements/sandbox.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,5 @@
44
#
55
# make upgrade
66
#
7-
asgiref==3.8.1 # via django
8-
django==3.2.25 # via -c requirements/common_constraints.txt, -c requirements/constraints.txt, -r requirements/sandbox.in
97
numpy==2.2.5 # via -r requirements/sandbox.in
10-
pytz==2025.2 # via django
118
six==1.17.0 # via -r requirements/sandbox.in
12-
sqlparse==0.5.3 # via django

requirements/testing.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ pylint
44
pytest
55
isort
66
pycodestyle
7+
django

0 commit comments

Comments
 (0)