private byte[] GetZipBytesForChecker(string code) { var directoryName = Path.Combine(SlideFolderPath.FullName, ExerciseDir); List<string> excluded = (PathsToExcludeForChecker ?? new string[0]).Concat(new[] { "bin/*", "obj/*" }).ToList(); var exerciseDir = new DirectoryInfo(directoryName); return exerciseDir.ToZip(excluded, new[] { new FileContent { Path = UserCodeFileName, Data = Encoding.UTF8.GetBytes(code) }, new FileContent { Path = CsprojFileName, Data = ProjModifier.ModifyCsproj( exerciseDir.GetFile(CsprojFileName), p => ProjModifier.PrepareForChecking(p, this, excluded)) } }); }
private void InitialCodeIsNotSolutionForProjExercise(ExerciseSlide slide) { var exercise = (ProjectExerciseBlock)slide.Exercise; var directoryName = Path.Combine(exercise.SlideFolderPath.FullName, exercise.ExerciseDir); var excluded = (exercise.PathsToExcludeForChecker ?? new string[0]).Concat(new[] { "bin/*", "obj/*" }).ToList(); var exerciseDir = new DirectoryInfo(directoryName); var bytes = exerciseDir.ToZip(excluded, new[] { new FileContent { Path = exercise.CsprojFileName, Data = ProjModifier.ModifyCsproj(exerciseDir.GetFile(exercise.CsprojFileName), proj => ProjModifier.PrepareForChecking(proj, exercise, excluded)) } }); var result = SandboxRunner.Run(new ProjRunnerSubmission { Id = slide.Id.ToString(), ZipFileData = bytes, ProjectFileName = exercise.CsprojFileName, Input = "", NeedRun = true }); var isOk = result.Verdict.IsOneOf(Verdict.Ok, Verdict.MemoryLimit, Verdict.TimeLimit); if (!isOk) ReportSlideError(slide, "Exercise initial code verdict is not OK. RunResult = " + result); else if (result.Verdict == Verdict.Ok && result.Output == "") ReportSlideError(slide, "Exercise initial code (available to students) is solution!"); }
private static void InitialCodeIsNotSolutionForProjExercise(ExerciseSlide slide) { var exercise = slide.Exercise as ProjectExerciseBlock; var directoryName = Path.Combine(exercise.SlideFolderPath.FullName, exercise.ExerciseDir); var excluded = (exercise.PathsToExcludeForChecker ?? new string[0]).Concat(new[] { "bin/*", "obj/*" }).ToList(); var exerciseDir = new DirectoryInfo(directoryName); var bytes = exerciseDir.ToZip(excluded, new[] { new FileContent { Path = exercise.CsprojFileName, Data = ProjModifier.ModifyCsproj(exerciseDir.GetFile(exercise.CsprojFileName), proj => ProjModifier.PrepareForChecking(proj, exercise, excluded)) } }); var result = SandboxRunner.Run(new ProjRunnerSubmission { Id = slide.Id.ToString(), ZipFileData = bytes, ProjectFileName = exercise.CsprojFileName, Input = "", NeedRun = true }); Console.WriteLine("Result = " + result); Assert.AreEqual(Verdict.Ok, result.Verdict); Assert.AreNotEqual("", result.Output); }