From 0b6c1480e60138f62c5be384c13274512991b131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Daniel=20Da=CC=88hne?= <janis.daehne2@student.uni-halle.de> Date: Wed, 20 Nov 2019 22:26:47 +0100 Subject: [PATCH] - fixed issue where the tutor view could not run tests when the main file was hidden - this was because tutor tests are executed with frontend data only (files) thus the file content was empty - tutor view now get the hidden file content (from the template) --- src/ClientServer/Config/Constants.cs | 2 +- .../Core/Exercises/DoExerciseController.cs | 30 ++++++++++++++++--- .../TutorViewAssessmentController.cs | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/ClientServer/Config/Constants.cs b/src/ClientServer/Config/Constants.cs index 074938e..49bf704 100644 --- a/src/ClientServer/Config/Constants.cs +++ b/src/ClientServer/Config/Constants.cs @@ -13,7 +13,7 @@ namespace ClientServer.Helpers /// </summary> public static class Constants { - public static string VersionString = "2.6.3"; + public static string VersionString = "2.6.4"; /// <summary> /// this is only set once at program.cs!! diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs index 26e4658..ef7e935 100644 --- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs +++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs @@ -575,10 +575,18 @@ namespace ClientServer.Controllers.Core.Exercises int userId = GetUserId(); - await _GetSolutionForExercise(generatedCode, pLangId, userId); + await _GetSolutionForExercise(generatedCode, pLangId, userId, false); } - internal async Task _GetSolutionForExercise(string generatedCode, int pLangId, int targetUserId) + /// <summary> + /// + /// </summary> + /// <param name="generatedCode"></param> + /// <param name="pLangId"></param> + /// <param name="targetUserId"></param> + /// <param name="asTutor">true: tutors need the hidden file content because currently tutor editors are not stored yet so only the frontend gives data to run tests for tutors... false: a student, so hide hidden files</param> + /// <returns></returns> + internal async Task _GetSolutionForExercise(string generatedCode, int pLangId, int targetUserId, bool asTutor) { int userId = targetUserId; @@ -715,8 +723,22 @@ namespace ClientServer.Controllers.Core.Exercises return; } - //template files should be loaded - var errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, true, false); + //template files should be loaded + + string errorMsg; + + if (asTutor) + { + //currently tutor editors are not persistent so the frontend needs all data to run a test + //this includes the hidden file contents... + errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, false, true); + } + else + { + //normal student, replace hidden files with empty content + errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, true, false); + } + if (errorMsg != null) { diff --git a/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs b/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs index 4c359f7..66f5a46 100644 --- a/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs +++ b/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs @@ -361,7 +361,7 @@ namespace ClientServer.Controllers.Core.Exercises if (exerciseRelease == null) return; var doExerciseController = new DoExerciseController(_context) {ControllerContext = this.ControllerContext}; - await doExerciseController._GetSolutionForExercise(exerciseRelease.GeneratedCode, pLangId, userId); + await doExerciseController._GetSolutionForExercise(exerciseRelease.GeneratedCode, pLangId, userId, true); } [HttpGet("testresults/{exerciseReleaseId}/{userId}/{pLangId}")] -- GitLab