public IList <IndividualTest> CollectTestCases(string directory) { var pytest = EngineFactory.Pytest(); pytest.Run("--collect-only", "CollectTestTemp.txt", directory); var content = File.ReadAllLines(Path.Combine(directory, "CollectTestTemp.txt")); File.Delete(Path.Combine(directory, "CollectTestTemp.txt")); return(new TestCaseParser().GatherTests(content)); }
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); }