public Profile Load(XElement profilesXml, List<PipelineStatus> pipelineStatuses)
        {
            var profile = new Profile();

            if (profilesXml == null)
            {
                return profile;
            }

            var xElement = profilesXml.Element("WhiteList");
            if (xElement != null)
            {
                var groupNodes = xElement.Elements("Group");

                var i = 0;
                foreach (var groupNode in groupNodes)
                {
                    var xAttribute = groupNode.Attribute("name");
                    var groupName = xAttribute != null ? xAttribute.Value : i++.ToString(CultureInfo.InvariantCulture);

                    xAttribute = groupNode.Attribute("showName");
                    var showName = true;
                    if (xAttribute != null)
                    {
                        bool.TryParse(xAttribute.Value, out showName);
                    }

                    var groupPipelineNodes = groupNode.Elements("Pipeline");

                    var profilePipelines = LoadProfilePipelines(groupPipelineNodes);

                    var groupedPipeline = new GroupedPipeline
                        {
                            Name = groupName,
                            ProfilePipelines = profilePipelines,
                            ShowName = showName
                        };
                    profile.PipelineGroups.Add(groupedPipeline);
                }
            }

            var statusList = new List<PipelineStatus>();

            if (pipelineStatuses.Any())
            {
                statusList = pipelineStatuses;
            }
            else
            {
                var statusXml = profilesXml.Element("Statuses");
                if (statusXml.HasElements)
                {
                    var statusElements = statusXml.Elements();
                    foreach (var statusElement in statusElements)
                    {
                        if (statusElement.Name == "Failed")
                            statusList.Add(PipelineStatus.Failed);
                        if (statusElement.Name == "Passed")
                            statusList.Add(PipelineStatus.Passed);
                        if (statusElement.Name == "Building")
                            statusList.Add(PipelineStatus.Building);
                    }
                }
            }

            profile.Statuses = statusList;

            bool showPassedCount;
            bool.TryParse(
                (profilesXml.Element("ShowPassedCount") ?? XElement.Parse("<ShowPassedCount>false</ShowPassedCount>"))
                    .Value, out showPassedCount);

            profile.ShowPassedCount = showPassedCount;

            return profile;
        }
Exemple #2
0
        public void Should_WhiteList_By_Pipeline_Names()
        {
            var group = new GroupedPipeline
            {
                Name = "Name",
                ProfilePipelines = new List<ProfilePipeline>
                        {
                            new ProfilePipeline{HideBuildInfo = true, Name = "Pipeline1"},
                            new ProfilePipeline{HideBuildInfo = true, Name = "Pipeline2"}
                        }

            };
            var profile = new Profile
            {
                PipelineGroups = new List<GroupedPipeline> { group }
            };

            var pipelines = new List<DisplayablePipeline>
                                {
                                    new DisplayablePipeline("Pipeline1", "passed"){Stages = new List<IStage>(){new FailedStage("", "", DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"))}},
                                    new DisplayablePipeline("Pipeline2", "failed"){Stages = new List<IStage>(){new FailedStage("", "", DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"))}},
                                    new DisplayablePipeline("Pipeline3", "passed"){Stages = new List<IStage>(){new FailedStage("", "", DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"))}},
                                    new DisplayablePipeline("Pipeline4", "passed"){Stages = new List<IStage>(){new FailedStage("", "", DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"))}}
                                };

            var pipelineFilter = new PipelineFilter(pipelines);

            var filteredPipelines = pipelineFilter.Filter(profile);

            Assert.That(filteredPipelines[0].Pipelines.Count, Is.EqualTo(2));
            Assert.That(filteredPipelines[0].Pipelines[0].Name, Is.EqualTo("Pipeline1"));
            Assert.That(filteredPipelines[0].Pipelines[1].Name, Is.EqualTo("Pipeline2"));
        }