Beispiel #1
0
        public void Clone_Should_Reset_BuildDefinitionId()
        {
            var tfsBuild = new TfsBuild
            {
                BuildDefinitionId = 1
            };

            var clone = tfsBuild.Clone() as TfsBuild;

            Assert.AreEqual(0, clone.BuildDefinitionId);
        }
        /// <summary>
        /// Tfs returns associated changes from last successful build. That mean, for failed build it can return change that was reported for previous failed build.
        /// This method - clear previously reported changes of previous failed build
        /// </summary>
        private static ICollection <TfsScmChange> GetFilteredBuildChanges(TfsApis tfsManager, TfsBuildInfo buildInfo, TfsBuild build, ICollection <TfsScmChange> changes)
        {
            //put changes in map
            Dictionary <string, TfsScmChange> changesMap = new Dictionary <string, TfsScmChange>();

            foreach (TfsScmChange change in changes)
            {
                changesMap[change.Id] = change;
            }

            //find previous failed build
            IList <TfsBuild> previousBuilds           = tfsManager.GetPreviousFailedBuilds(buildInfo.ProjectId, build.StartTime);
            TfsBuild         foundPreviousFailedBuild = null;

            foreach (TfsBuild previousBuild in previousBuilds)
            {
                //pick only build that done on the same branch
                if (build.SourceBranch.Equals(previousBuild.SourceBranch))
                {
                    foundPreviousFailedBuild = previousBuild;
                    break;
                }
            }

            if (foundPreviousFailedBuild != null)
            {
                //remove changes from previous build
                var previousChanges = tfsManager.GetBuildChanges(buildInfo.ProjectId, foundPreviousFailedBuild.Id.ToString());
                foreach (TfsScmChange previousChange in previousChanges)
                {
                    changesMap.Remove(previousChange.Id);
                }

                int removedCount = changes.Count - changesMap.Count;
                if (removedCount == 0)
                {
                    Log.Debug($"Build {buildInfo} - build {build.Id} contains {changes.Count} associated changes. No one of them was already reported in previous build {foundPreviousFailedBuild.Id}");
                }
                else
                {
                    Log.Debug($"Build {buildInfo} - build {build.Id} contains {changes.Count} associated changes while {removedCount} changes were already reported in build {foundPreviousFailedBuild.Id}");
                }
            }

            return(changesMap.Values);
        }
 public static string GetPathName(TfsBuild tfsBuild)
 {
     return(tfsBuild.Name);
 }
 public TfsBuildNode(TfsBuildsNode parent, TfsBuild tfsBuild) : base(parent.NodeContext, tfsBuild, GetPathName(tfsBuild))
 {
     Parent      = parent;
     TfsBuild    = tfsBuild;
     PathSegment = parent.PathSegment + new PathSegment(GetPathName(tfsBuild));
 }