/// <summary> /// Constructor /// </summary> /// <param name="file">File object representing the msbuild project file</param> /// <param name="documentBuilder">Factory for creating the output documentation file</param> public ProjectOverviewGenerator(IFile file, IFormattableDocumentBuilder documentBuilder) { _printableDocumentBuilder = new PrintableDocument <T>(documentBuilder); _msBuildProject = LoadMsBuildProject(file); _outputDocument = CreateOutputDocument(file, _printableDocumentBuilder); }
public void Load_FromExistentTestFileWithTwoTargets_ShouldReturnObjectContainingNoNotExistentTarget() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IList <IMsBuildTarget> targets = projectFile.GetChildren <IMsBuildTarget>(); Assert.IsFalse(targets.Any(t => t.Name.Equals("NotExistentTarget"))); }
public void Load_FromExistentTestFileWithPropertyNamedAuthor_ShouldReturnObjectContainingAnPropertyNamedAuthor() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IList <IMsBuildProperty> properties = projectFile.GetChildren <IMsBuildProperty>(); Assert.IsTrue(properties.Any(p => p.Name.Equals("Author"))); }
/// <summary> /// Constructor /// </summary> /// <param name="project">MsBuild-Project file to generate the documentation for</param> /// <param name="file">File object representing the msbuild project file</param> public ProjectOverviewGenerator(IMsBuildProject project, IFile file) { _msBuildProject = project; _printableDocumentBuilder = new PrintableDocument <T>(new FileWriter()); _outputDocument = CreateOutputDocument(file, _printableDocumentBuilder); }
/// <summary> /// Constructor /// </summary> /// <param name="project">MsBuild-Project file to generate the documentation for</param> /// <param name="file">File object representing the msbuild project file</param> /// <param name="printableDocument">Object representing output documentation file</param> public ProjectOverviewGenerator(IMsBuildProject project, IFile file, PrintableDocument <T> printableDocument) { _msBuildProject = project; _printableDocumentBuilder = printableDocument; _outputDocument = CreateOutputDocument(file, _printableDocumentBuilder); }
public void GetChildItem_TargetsFromValidInputXml_ShouldInitializeAllTwoTargets() { string inputValue = File.ReadAllText("TestData/TestProject.xml"); IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue); Assert.AreEqual(2, project.GetChildren <IMsBuildTarget>().Count); }
public void Load_FromValidInputXml_ShouldInitializeInitializeTargets() { string inputValue = File.ReadAllText("TestData/TestProject.xml"); IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue); Assert.AreEqual("TestTargetB", project.InitialTargets[0]); }
public void Load_FromValidInputXml_ShouldInitializeMsBuildToolsVersion() { string inputValue = File.ReadAllText("TestData/TestProject.xml"); IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue); Assert.AreEqual("15.0", project.MsBuildVersion); }
/// <summary> /// Constructor /// </summary> /// <param name="file">File object representing the msbuild project file</param> public ProjectOverviewGenerator(IFile file) { var formattableDocumentBuilder = new PrintableDocument <T>(); _msBuildProject = LoadMsBuildProject(file); _outputDocument = CreateOutputDocument(file, formattableDocumentBuilder); _printableDocumentBuilder = formattableDocumentBuilder; }
public void GetChildItem_PropertyGroupFromValidInputXmlAndNotExistentChild_ShouldReturnEmptyList() { string inputValue = File.ReadAllText("TestData/TestProject.xml"); IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue); Assert.AreEqual(0, project.GetChildren <IMsBuildPropertyGroup>() .SelectMany(x => x.GetChildren <IMsBuildOnError>()).Count()); }
public void GetChildItem_PropertyFromValidInputXml_ShouldInitializeAllThreeProperties() { string inputValue = File.ReadAllText("TestData/TestProject.xml"); IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue); Assert.AreEqual(3, project.GetChildren <IMsBuildProperty>() .Count()); }
Load_FromExistentTestFileWithTargetExecutedBeforeOtherTarget_ShouldReturnObjectContainingTargetWithCorrectBeforeTargetValue() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IMsBuildTarget target = projectFile.GetChildren <IMsBuildTarget>().First(t => t.Name.Equals("BeforeCompile")); Assert.AreEqual("CoreCompile", target.BeforeTargets.First()); }
Load_FromExistentTestFileWithPropertyNamedAuthor_ShouldReturnObjectContainingAnPropertyNamedAuthorWithCorrectValue() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IList <IMsBuildProperty> properties = projectFile.GetChildren <IMsBuildProperty>(); Assert.IsTrue(properties.Any(p => p.Name.Equals("Author"))); Assert.AreEqual("Viktor-Fabian Müller", properties.FirstOrDefault(p => p.Name.Equals("Author"))?.Value); }
Load_FromExistentTestFileWithTwoTargets_ShouldReturnObjectWithTwoContainingTargetsWithCorrectInitializedName() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IList <IMsBuildTarget> targets = projectFile.GetChildren <IMsBuildTarget>(); Assert.IsTrue(targets.Any(t => t.Name.Equals("CheckFileNameSyntax"))); Assert.IsTrue(targets.Any(t => t.Name.Equals("BeforeCompile"))); }
/// <summary> /// Creates the documentation by appending all required sections and prints the file to /// the given output directory. /// </summary> /// <param name="outputPath">Directory in which the documentation should be crated</param> public void CreateDocumentation(string outputPath) { PrepareOutputDirectory(outputPath); IFile file = FileSystem.Accessor.GetFile(_filePath); IMsBuildProject msBuildProject = MsBuildProjectFile.LoadContent(file.ReadAllText()); CreateProjectOverview(msBuildProject, file, outputPath); CreateTargetDocumentation(outputPath, msBuildProject.GetChildren <IMsBuildTarget>()); }
Load_FromExistentTestFileWithOneTargetContainingOnErrorImplementation_ShouldContainTargetWithCorrectNamedOnErrorImplementation() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/TargetWithOnError.tcsproj"); IMsBuildTarget target = projectFile.GetChildren <IMsBuildTarget>().First(t => t.Name.Equals("BeforeCompile")); Assert.AreEqual(1, target.OnErrorTargets.Count); Assert.AreEqual("CheckFileNameSyntax", target.OnErrorTargets.First()); }
public void Load_FromExistentTestFileWithTargetContainingComment_ShouldInitializeTargetsOnErrorImplementation() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/TargetWithOnError.tcsproj"); IMsBuildTarget target = projectFile.GetChildren <IMsBuildTarget>().First(t => t.Name.Equals("BeforeCompile")); Assert.IsNotNull(target.OnErrorTargets); Assert.AreNotEqual(0, target.OnErrorTargets.Count); }
Load_FromExistentTestFileWithDocumentedTargetNamedCheckFileNameSyntax_ShouldContainTargetWithXmlHelp() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); IMsBuildTarget target = projectFile.GetChildren <IMsBuildTarget>() .First(t => t.Name.Equals("CheckFileNameSyntax")); Assert.AreEqual("Checks the files from @(RelevantFiles) if it ends with '*.json'.", target.Help.GetSectionContent("Synopsis", StringComparison.OrdinalIgnoreCase)); Assert.AreEqual( "Prints an error with information about the item when it does not\nmatches the file extension 'json'. The printed error contains\ninformation about the affected item.", target.Help.GetSectionContent("DESCRIPTION", StringComparison.OrdinalIgnoreCase)); }
Load_FromExistentTestFileWithTargetImplementingComplexConditionalOverwritableProperty_ShouldReturnProjectContainingTargetWithOverwritableProperty() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/TargetWithProperties.tcsproj"); IMsBuildTarget target = projectFile.GetChildren <IMsBuildTarget>() .First(t => t.Name.Equals("WithComplexConditionalOverwritableProperty")); IMsBuildProperty overwritableProperty = target.GetChildren <IMsBuildPropertyGroup>().First().GetChildren <IMsBuildProperty>() .First(p => p.Name.Equals("OverwritableProperty")); Assert.AreEqual(true, overwritableProperty.HasPublicSetter); }
/// <summary> /// Creates the documentation overview for the given MsBuild project and stores it /// into the given output directory. /// </summary> /// <param name="msBuildProject">The msbuild project to create the documentation for.</param> /// <param name="file">The file system entry representing the msbuild project</param> /// <param name="outputPath">Directory to store the documentation in</param> /// <exception cref="DocumentationGeneratorException">Throws if the body of the documentation could nt be created</exception> private void CreateProjectOverview(IMsBuildProject msBuildProject, IFile file, string outputPath) { ProjectOverviewGenerator <T> projectOverviewDocumentationGenerator = new ProjectOverviewGenerator <T>(msBuildProject, file, _printableDocument); if (!projectOverviewDocumentationGenerator.CreateBody()) { throw new DocumentationGeneratorException("Body for project overview could not be created!"); } string outputFilePath = Path.Combine( outputPath, string.Format( CultureInfo.InvariantCulture, "{0}.{1}", file.FileName, projectOverviewDocumentationGenerator.OutputDocument.DefaultFileExtension ) ); if (!_printableDocument.Save(outputFilePath, projectOverviewDocumentationGenerator.OutputDocument)) { throw new IOException("The documentation could not be saved."); } }
Load_FromExistentTestFileWithOnePropertyGroupContainingThreeProperties_ShouldReturnObjectContainingThreeProperties() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); Assert.AreEqual(3, projectFile.GetChildren <IMsBuildProperty>().Count); }
public void Load_FromExistentTestFileWithTwoTargets_ShouldReturnObjectWithTwoContainingTargets() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); Assert.AreEqual(2, projectFile.GetChildren <IMsBuildTarget>().Count); }
public void Load_FromExistentTestFile_ShouldNotReturnNullObject() { IMsBuildProject projectFile = MsBuildProjectFile.Load("TestData/ProjectFiles/Test.tcsproj"); Assert.IsNotNull(projectFile); }