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
):