From e242a5afa77c8adb79e29405c2105b177f483df0 Mon Sep 17 00:00:00 2001 From: ggboyxkw666 <3510903266@qq.com> Date: Sat, 19 Sep 2026 00:08:26 +0800 Subject: [PATCH] fix: distinguish unavailable sandbox results --- templates/submission_detail.html | 10 +++--- tests/test_submission_knowledge_views.py | 42 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/templates/submission_detail.html b/templates/submission_detail.html index 8171b969..c9c43898 100644 --- a/templates/submission_detail.html +++ b/templates/submission_detail.html @@ -267,15 +267,15 @@

{{ assignment.title }}

{{ submission.score }} / 5 - {% if submission.sandbox_total is not none %} + {% if submission.sandbox_status == 'unavailable' %} + + 测试环境未就绪 + + {% elif submission.sandbox_total is not none %} 通过 {{ submission.sandbox_passed or 0 }}/{{ submission.sandbox_total }} - {% elif submission.sandbox_status == 'unavailable' %} - - 测试环境未就绪 - {% endif %} diff --git a/tests/test_submission_knowledge_views.py b/tests/test_submission_knowledge_views.py index ecd561fb..bd4aa814 100644 --- a/tests/test_submission_knowledge_views.py +++ b/tests/test_submission_knowledge_views.py @@ -114,6 +114,48 @@ def test_submission_detail_shows_knowledge_focus_and_scoring_boundary( assert "不是本次评分依据" in html +def test_submission_detail_does_not_present_unavailable_sandbox_as_failed_score( + submission_knowledge_context, monkeypatch +): + app, client, ids = submission_knowledge_context + _login(client, "submission-evidence-student") + monkeypatch.setattr(assignment_routes, "retrieve_assignment_knowledge", _retrieval) + + with app.app_context(): + submission = db.session.get(Submission, ids["submission"]) + submission.sandbox_status = "unavailable" + submission.sandbox_passed = 0 + submission.sandbox_total = 2 + db.session.commit() + + response = client.get(f"/view_submission/{ids['submission']}") + + assert response.status_code == 200 + html = response.get_data(as_text=True) + assert "测试环境未就绪" in html + assert "通过 0/2" not in html + + +def test_submission_detail_keeps_passed_sandbox_badge( + submission_knowledge_context, monkeypatch +): + app, client, ids = submission_knowledge_context + _login(client, "submission-evidence-student") + monkeypatch.setattr(assignment_routes, "retrieve_assignment_knowledge", _retrieval) + + with app.app_context(): + submission = db.session.get(Submission, ids["submission"]) + submission.sandbox_status = "passed" + submission.sandbox_passed = 2 + submission.sandbox_total = 2 + db.session.commit() + + response = client.get(f"/view_submission/{ids['submission']}") + + assert response.status_code == 200 + assert "通过 2/2" in response.get_data(as_text=True) + + def test_submission_access_is_checked_before_knowledge_retrieval( submission_knowledge_context, monkeypatch ):