public void ReportWarning_If_ExerciseFolder_DoesntContain_SolutionFile() { FileSystem.DeleteFile(exerciseBlock.CorrectSolutionFile.FullName); var validatorOut = TestsHelper.ValidateBlock(exerciseBlock); validatorOut .Should().Contain($"Exercise directory doesn't contain {exerciseBlock.CorrectSolutionFileName}"); }
public void ReportError_If_CorrectSolution_Not_Building() { File.WriteAllText(exerciseBlock.CorrectSolutionFile.FullName, ""); var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock); validatorOutput .Should().Contain( $"Correct solution file {exerciseBlock.CorrectSolutionFileName} verdict is not OK. RunResult = Id: test.csproj, Verdict: CompilationError"); }
public void Not_Report_Indentation_Warning_On_Ethalon_Solution_Of_SingleFileExercise() { var singleBlock = new ExerciseBuilder("cs", "using System; using System.Linq; using System.Text;").BuildBlockFrom( CSharpSyntaxTree.ParseText(TestsHelper.ProjSlideFolder.GetFile("S055 - Упражнение на параметры по умолчанию.cs") .ContentAsUtf8()), null); var validatorOut = TestsHelper.ValidateBlock(singleBlock); validatorOut.Should().BeNullOrEmpty(); }
public void ReportError_If_NUnitTestRunner_Tries_To_Run_NonExisting_Test_Class() { exerciseBlock.NUnitTestClasses = new[] { "non_existing.test_class", }; exerciseBlock.ReplaceStartupObjectForNUnitExercises(); var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock); validatorOutput .Should() .Contain( $"Correct solution file {exerciseBlock.CorrectSolutionFileName} verdict is not OK. RunResult = Id: test.csproj, Verdict: RuntimeError: System.ArgumentException: Error in checking system: test class non_existing.test_class does not exist"); }
public void ReportError_If_ExerciseFolder_HasErrors() { File.Delete(exerciseBlock.UserCodeFile.FullName); File.Delete(Path.Combine(tempSlideFolderPath, exerciseBlock.CsProjFilePath)); var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock); validatorOutput .Should().Contain($"Exercise folder ({exerciseBlock.ExerciseFolder.Name}) doesn't contain ({exerciseBlock.CsprojFileName})"); validatorOutput .Should().Contain($"Exercise folder ({exerciseBlock.ExerciseFolder.Name}) doesn't contain ({exerciseBlock.UserCodeFilePath})"); }
public void ReportWarning_If_WrongAnswers_Have_Errors() { var validatorOut = TestsHelper.ValidateBlock(exerciseBlock); validatorOut .Should() .Contain( $"Code verdict of file with wrong answer ({exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.Type.cs) is not OK.") .And .Contain("Verdict: CompilationError"); validatorOut .Should().Contain( $"Code of file with wrong answer ({exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.21.plus.21.cs) is solution!"); validatorOut .Should().NotContain($"{exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.27.cs"); }
public void ReportError_If_Solution_For_ProjectExerciseBlock_Is_Not_Solution() { exerciseBlock.NUnitTestClasses = new[] { $"test.{nameof(OneFailingTest)}" }; exerciseBlock.ReplaceStartupObjectForNUnitExercises(); var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock); validatorOutput .Should() .Contain( $"Correct solution file {exerciseBlock.CorrectSolutionFileName} is not solution. RunResult = Id: test.csproj, Verdict: Ok") .And .Contain("Как минимум один из тестов не пройден") .And .Contain("I_am_a_failure"); }
public void ReportError_If_StudentZip_HasErrors() { FileSystem.CopyDirectory(tempSlideFolder.GetSubdirectory("projDir").FullName, tempSlideFolder.GetSubdirectory("FullProjDir").FullName); exerciseBlock.CsProjFilePath = Path.Combine("FullProjDir", TestsHelper.CsProjFilename); SaveTempZipFileWithFullProject(); var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock); validatorOutput .Should().Contain( $"Student zip exercise directory has 'wrong answer' and/or solution files ({TestsHelper.OrderedWrongAnswersAndSolutionNames})"); validatorOutput .Should().Contain($"Student's csproj has user code item ({exerciseBlock.UserCodeFilePath}) of not compile type"); validatorOutput .Should().Contain( $"Student's csproj has 'wrong answer' and/or solution items ({TestsHelper.OrderedWrongAnswersAndSolutionNames})"); }