private IEnumerable <FileContent> GetAdditionalFiles(string code, List <string> excluded) { yield return(new FileContent { Path = UserCodeFilePath, Data = Encoding.UTF8.GetBytes(code) }); var useNUnitLauncher = NUnitTestClasses != null; yield return(new FileContent { Path = CsprojFileName, Data = ProjModifier.ModifyCsproj(CsprojFile, ModifyCsproj(excluded, useNUnitLauncher), toolsVersion: BuildEnvironmentOptions.ToolsVersion) }); if (useNUnitLauncher) { yield return(new FileContent { Path = GetNUnitTestRunnerFilename(), Data = CreateTestLauncherFile() }); } foreach (var fileContent in ExerciseStudentZipBuilder.ResolveCsprojLinks(this)) { yield return(fileContent); } }
public void NotChangeFile_OnModify() { ProjModifier.ModifyCsproj( new FileInfo(TestProjectFilename), p => ProjModifier.PrepareForChecking(p, "AAA", new string[0])); Assert.AreNotEqual("AAA", CreateTestProject().GetProperty("StartupObject")); }
private static MemoryStream GetFileContentInStudentZip(CsProjectExerciseBlock block, FileInfo file) { if (!file.Name.Equals(block.CsprojFileName, StringComparison.InvariantCultureIgnoreCase)) { return(null); } return(ProjModifier.ModifyCsproj(file, proj => ProjModifier.PrepareForStudentZip(proj, block))); }
private byte[] ReplaceCsproj(FileInfo file) { if (!file.Name.Equals(CsprojFileName, StringComparison.InvariantCultureIgnoreCase)) { return(null); } return(ProjModifier.ModifyCsproj(file, ProjModifier.RemoveCheckingFromCsproj)); }
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 SaveTempZipFileWithFullProject() { var zipWithFullProj = new FileInfo(Path.Combine(tempSlideFolderPath, "FullProjDir.exercise.zip")); var noExcludedFiles = new Func <FileInfo, bool>(_ => false); var noExcludedDirs = new string[0]; var csProjFile = TestsHelper.ProjExerciseFolder.GetFile(TestsHelper.CsProjFilename); new LazilyUpdatingZip( TestsHelper.ProjExerciseFolder, noExcludedDirs, noExcludedFiles, ResolveCsprojLink, ExerciseStudentZipBuilder.ResolveCsprojLinks(csProjFile, CsProjectExerciseBlock.BuildingToolsVersion), zipWithFullProj) .UpdateZip(); byte[] ResolveCsprojLink(FileInfo file) { return(file.Name.Equals(exerciseBlock.CsprojFileName) ? ProjModifier.ModifyCsproj(file, ProjModifier.ReplaceLinksWithItems) : null); } }
private IEnumerable <FileContent> GetAdditionalFiles(List <string> excluded) { var useNUnitLauncher = NUnitTestClasses != null; using (var stream = ProjModifier.ModifyCsproj(CsprojFile, ModifyCsproj(excluded, useNUnitLauncher), toolsVersion: BuildEnvironmentOptions.ToolsVersion)) yield return new FileContent { Path = CsprojFileName, Data = stream.ToArray() }; if (useNUnitLauncher) { yield return(new FileContent { Path = GetNUnitTestRunnerFilename(), Data = CreateTestLauncherFile() }); } foreach (var fileContent in ExerciseStudentZipBuilder.ResolveCsprojLinks(this)) { yield return(fileContent); } }