Esempio n. 1
0
        /// <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")));
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        public void GetChildItem_TargetsFromValidInputXml_ShouldInitializeAllTwoTargets()
        {
            string inputValue = File.ReadAllText("TestData/TestProject.xml");

            IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue);

            Assert.AreEqual(2, project.GetChildren <IMsBuildTarget>().Count);
        }
Esempio n. 7
0
        public void Load_FromValidInputXml_ShouldInitializeInitializeTargets()
        {
            string inputValue = File.ReadAllText("TestData/TestProject.xml");

            IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue);

            Assert.AreEqual("TestTargetB", project.InitialTargets[0]);
        }
Esempio n. 8
0
        public void Load_FromValidInputXml_ShouldInitializeMsBuildToolsVersion()
        {
            string inputValue = File.ReadAllText("TestData/TestProject.xml");

            IMsBuildProject project = MsBuildProjectFile.LoadContent(inputValue);

            Assert.AreEqual("15.0", project.MsBuildVersion);
        }
Esempio n. 9
0
        /// <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;
        }
Esempio n. 10
0
        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());
        }
Esempio n. 11
0
        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")));
        }
Esempio n. 15
0
        /// <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);
        }
Esempio n. 20
0
        /// <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);
        }