public MutatingWalker(MutantEnumerator mutator, OnMutant callback, CoverageData coverage, Dictionary <int, List <String> > testCaseCoverageByLineID) { _mutator = mutator; _onMutant = callback; _coverage = coverage; _testCaseCoverageByLineID = testCaseCoverageByLineID; }
public CoveredProject(Project myProject, Project testProject, OnMutant onMutantKilled, OnMutant onMutantLived) { this._onMutantKilled = onMutantKilled; this._onMutantLived = onMutantLived; outputPath = Path.GetDirectoryName(testProject.FilePath); appConfigPath = Path.Combine(outputPath, "App.config"); var interopsLocation = typeof(AssemblyLoader).Assembly.Location; try { File.Copy(appConfigPath, interopsLocation + ".config", true); } catch (FileNotFoundException e) { // no config file; fine Debug.Print(e.ToString()); } //Directory.SetCurrentDirectory(outputPath); Directory.SetCurrentDirectory(Path.GetDirectoryName(testProject.FilePath)); testCompiler = GetLibraryCompilation(testProject); projectCompiler = GetLibraryCompilation(myProject); var paths = testCompiler.References.Where(r => r is PortableExecutableReference).Select(per => ((PortableExecutableReference)per).FilePath).ToList(); paths.AddRange(projectCompiler.References.Where(r => r is PortableExecutableReference).Select(per => ((PortableExecutableReference)per).FilePath)); paths = paths.Distinct().ToList(); dependencies = paths.Select(File.ReadAllBytes).ToArray(); interopsAssembly = new WebClient().DownloadData(interopsLocation); var interopsMetadata = AssemblyMetadata.CreateFromImage(interopsAssembly); projectCompiler = FixProject(myProject.Documents, projectCompiler, interopsMetadata); var instrumentedProjectCompiler = InstrumentProject(projectCompiler, interopsMetadata, myProject.Solution.Workspace); var instrumentedAssembly = CompileAssembly(instrumentedProjectCompiler); testCompiler = testCompiler.ReplaceReference(testCompiler.References.Single(r => r is CompilationReference && ((CompilationReference)r).Compilation.AssemblyName == projectCompiler.AssemblyName), projectCompiler.ToMetadataReference()); testAssembly = CompileAssembly(testCompiler); CollectCoverage(instrumentedAssembly); }