From 0e34b78ec7a80c36ce4ff61f0dfa1fec6d9cdc2e Mon Sep 17 00:00:00 2001 From: Ranald Lam Date: Mon, 7 Sep 2020 23:38:15 +0800 Subject: [PATCH] fix: Misc issues regarding user tests with headers Fixes #1153. --- cms/grading/Job.py | 9 +++++++++ cms/server/contest/handlers/taskusertest.py | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cms/grading/Job.py b/cms/grading/Job.py index 62c34a6f31..760c5697a7 100644 --- a/cms/grading/Job.py +++ b/cms/grading/Job.py @@ -378,6 +378,15 @@ def from_user_test(operation, user_test, dataset): managers[manager_filename] = \ dataset.managers[manager_filename] + # Copy header files from dataset. + # FIXME This bypasses get_auto_managers() logic + if language is not None: + for manager_filename in dataset.managers: + if any(manager_filename.endswith(header) + for header in language.header_extensions): + managers[manager_filename] = \ + dataset.managers[manager_filename] + return CompilationJob( operation=operation, task_type=dataset.task_type, diff --git a/cms/server/contest/handlers/taskusertest.py b/cms/server/contest/handlers/taskusertest.py index 16a8b276d4..8b1e57ea19 100644 --- a/cms/server/contest/handlers/taskusertest.py +++ b/cms/server/contest/handlers/taskusertest.py @@ -302,8 +302,10 @@ def get(self, task_name, user_test_num, filename): if stored_filename in user_test.files: digest = user_test.files[stored_filename].digest - elif stored_filename in user_test.managers: - digest = user_test.managers[stored_filename].digest + elif filename in user_test.managers: + # Graders are not stored with the .%l suffix + # Instead, the original name is used + digest = user_test.managers[filename].digest else: raise tornado_web.HTTPError(404) self.sql_session.close()