private static ProjectInfo CreateProjectInfo(string name, string projectId, string fullFilePath, bool isTest, IEnumerable<string> files, string fileListFilePath, string fxCopReportPath, string coverageReportPath, string language) { ProjectInfo projectInfo = new ProjectInfo() { ProjectName = name, ProjectGuid = Guid.Parse(projectId), FullPath = fullFilePath, ProjectType = isTest ? ProjectType.Test : ProjectType.Product, AnalysisResults = new List<AnalysisResult>(), ProjectLanguage = language }; if (fxCopReportPath != null) { projectInfo.AddAnalyzerResult(AnalysisType.FxCop, fxCopReportPath); } if (coverageReportPath != null) { projectInfo.AddAnalyzerResult(AnalysisType.VisualStudioCodeCoverage, coverageReportPath); } if (files != null && files.Any()) { Assert.IsTrue(!string.IsNullOrWhiteSpace(fileListFilePath), "Test setup error: must supply the managedFileListFilePath as a list of files has been supplied"); File.WriteAllLines(fileListFilePath, files); projectInfo.AddAnalyzerResult(AnalysisType.FilesToAnalyze, fileListFilePath); } return projectInfo; }
public void FileGen_MissingFilesAreSkipped() { // Create project info with a managed file list and a content file list. // Each list refers to a file that does not exist on disk. // The missing files should not appear in the generated properties file. // Arrange string testDir = TestUtils.CreateTestSpecificFolder(this.TestContext); string projectBaseDir = TestUtils.CreateTestSpecificFolder(TestContext, "Project1"); string projectFullPath = CreateEmptyFile(projectBaseDir, "project1.proj"); string existingManagedFile = CreateEmptyFile(projectBaseDir, "File1.cs"); string existingContentFile = CreateEmptyFile(projectBaseDir, "Content1.txt"); string missingManagedFile = Path.Combine(projectBaseDir, "MissingFile1.cs"); string missingContentFile = Path.Combine(projectBaseDir, "MissingContent1.txt"); ProjectInfo projectInfo = new ProjectInfo() { FullPath = projectFullPath, AnalysisResults = new List<AnalysisResult>(), IsExcluded = false, ProjectGuid = Guid.NewGuid(), ProjectName = "project1.proj", ProjectType = ProjectType.Product }; string analysisFileList = CreateFileList(projectBaseDir, "filesToAnalyze.txt", existingManagedFile, missingManagedFile, existingContentFile, missingContentFile); projectInfo.AddAnalyzerResult(AnalysisType.FilesToAnalyze, analysisFileList); string projectInfoDir = TestUtils.CreateTestSpecificFolder(this.TestContext, "ProjectInfo1Dir"); string projectInfoFilePath = Path.Combine(projectInfoDir, FileConstants.ProjectInfoFileName); projectInfo.Save(projectInfoFilePath); TestLogger logger = new TestLogger(); AnalysisConfig config = new AnalysisConfig() { SonarProjectKey = "my_project_key", SonarProjectName = "my_project_name", SonarProjectVersion = "1.0", SonarOutputDir = testDir }; // Act ProjectInfoAnalysisResult result = PropertiesFileGenerator.GenerateFile(config, logger); string actual = File.ReadAllText(result.FullPropertiesFilePath); // Assert AssertFileIsReferenced(existingContentFile, actual); AssertFileIsReferenced(existingManagedFile, actual); AssertFileIsNotReferenced(missingContentFile, actual); AssertFileIsNotReferenced(missingManagedFile, actual); logger.AssertSingleWarningExists(missingManagedFile); logger.AssertSingleWarningExists(missingContentFile); }