public bool Preprocessing(SubmissionDto submissionDto, string directory, out EngineWorkingDirectories workingDirectories,
                                  out FeedbackDto feedback)
        {
            workingDirectories = new EngineWorkingDirectories();

            if (!ValidateSubmission(submissionDto, out feedback))
            {
                return(false);
            }

            var handler = Factory.FileHandler();

            workingDirectories.ParentDirectory   = directory;
            workingDirectories.ReferenceTestSuit = Path.Combine(directory, "ReferenceTestSuit");
            workingDirectories.Solution          = Path.Combine(directory, Path.GetFileNameWithoutExtension(submissionDto.SolutionFolderName));
            workingDirectories.StudentTestSuit   = Path.Combine(directory, "StudentTestSuit");

            handler.UnzipByteArray(submissionDto.ReferenceTestSolution, directory,
                                   workingDirectories.ReferenceTestSuit);
            handler.UnzipByteArray(submissionDto.AssignmentSolution, directory,
                                   workingDirectories.Solution);
            handler.UnzipByteArray(submissionDto.TestCaseSolution, directory,
                                   workingDirectories.StudentTestSuit);

            var exitCode = Factory.Pytest().Run(workingDirectories.StudentTestSuit, "$null", workingDirectories.StudentTestSuit);

            if (exitCode != 0)
            {
                feedback.Message = "Student's solution didn't pass their own Test Suite";
                return(false);
            }

            return(true);
        }
        public bool Preprocessing(SubmissionDto submissionDto, string directory, out EngineWorkingDirectories workingDirectories,
                                  out FeedbackDto feedback)
        {
            workingDirectories = new EngineWorkingDirectories();

            if (!ValidateSubmission(submissionDto, out feedback))
            {
                return(false);
            }

            var handler = Factory.FileHandler();

            workingDirectories.ParentDirectory   = directory;
            workingDirectories.ReferenceTestSuit = Path.Combine(directory, "ReferenceTestSuit");
            workingDirectories.Solution          = Path.Combine(directory, submissionDto.SolutionFolderName);
            workingDirectories.StudentTestSuit   = Path.Combine(directory, "StudentTestSuit");

            handler.UnzipByteArray(submissionDto.ReferenceTestSolution, directory,
                                   workingDirectories.ReferenceTestSuit);
            handler.UnzipByteArray(submissionDto.ReferenceSolution, directory,
                                   workingDirectories.Solution);
            handler.UnzipByteArray(submissionDto.TestCaseSolution, directory,
                                   workingDirectories.StudentTestSuit);

            return(true);
        }