From 2f7060bbfc39710db4367f31bede713a79351f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 17 Dec 2024 19:49:24 +0100 Subject: [PATCH 1/3] Fix language change after run. --- src/judge0/submission.py | 3 ++- tests/test_submission.py | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/judge0/submission.py b/src/judge0/submission.py index 069733c5..68f23a31 100644 --- a/src/judge0/submission.py +++ b/src/judge0/submission.py @@ -174,7 +174,7 @@ class Submission(BaseModel): @field_validator(*ENCODED_FIELDS, mode="before") @classmethod - def process_encoded_fields(cls, value: str) -> Optional[str]: + def process_encoded_fields(cls, value: Union[str, None]) -> Optional[str]: """Validate all encoded attributes.""" if value is None: return None @@ -271,6 +271,7 @@ def pre_execution_copy(self) -> "Submission": new_submission = Submission() for attr in REQUEST_FIELDS: setattr(new_submission, attr, copy.deepcopy(getattr(self, attr))) + new_submission.language = self.language return new_submission def __iter__(self): diff --git a/tests/test_submission.py b/tests/test_submission.py index 98903ed0..02e1d65e 100644 --- a/tests/test_submission.py +++ b/tests/test_submission.py @@ -1,4 +1,5 @@ -from judge0 import Status, Submission, wait +from judge0 import run, Status, Submission, wait +from judge0.base_types import LanguageAlias def test_from_json(): @@ -71,3 +72,23 @@ def test_is_done(request): wait(client=client, submissions=submission) assert submission.is_done() + + +def test_language_before_and_after_execution(request): + client = request.getfixturevalue("judge0_ce_client") + code = """\ + public class Main { + public static void main(String[] args) { + System.out.println("Hello World"); + } + } + """ + + submission = Submission( + source_code=code, + language=LanguageAlias.JAVA, + ) + + assert submission.language == LanguageAlias.JAVA + run(client=client, submissions=submission) + assert submission.language == LanguageAlias.JAVA From b9d1d2b21a75b3daab70b6089dee0d897ec8a2a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 17 Dec 2024 19:51:21 +0100 Subject: [PATCH 2/3] Minimize diff. --- src/judge0/submission.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/judge0/submission.py b/src/judge0/submission.py index 68f23a31..8e5d1cb9 100644 --- a/src/judge0/submission.py +++ b/src/judge0/submission.py @@ -174,7 +174,7 @@ class Submission(BaseModel): @field_validator(*ENCODED_FIELDS, mode="before") @classmethod - def process_encoded_fields(cls, value: Union[str, None]) -> Optional[str]: + def process_encoded_fields(cls, value: str) -> Optional[str]: """Validate all encoded attributes.""" if value is None: return None From e102af6520f099d324c6e0e67a43c37a6bce391f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Karlo=20Do=C5=A1ilovi=C4=87?= Date: Tue, 17 Dec 2024 19:56:16 +0100 Subject: [PATCH 3/3] Fix test. --- tests/test_submission.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_submission.py b/tests/test_submission.py index 02e1d65e..fb1bf737 100644 --- a/tests/test_submission.py +++ b/tests/test_submission.py @@ -90,5 +90,5 @@ def test_language_before_and_after_execution(request): ) assert submission.language == LanguageAlias.JAVA - run(client=client, submissions=submission) + submission = run(client=client, submissions=submission) assert submission.language == LanguageAlias.JAVA