示例#1
0
        public void Should_create_artifact_dependency(
            IBuildConfigXmlClient buildConfigXmlClient,
            string dependencyBuildConfigId,
            bool cleanDestination,
            string revisionName,
            string revisionValue,
            string pathRules)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true).Create();

            var dependencyToCreate = new CreateArtifactDependency(Arg.Any <string>(), dependencyBuildConfigId);

            dependencyToCreate.CleanDestinationDirectory = cleanDestination;
            dependencyToCreate.RevisionName  = revisionName;
            dependencyToCreate.RevisionValue = revisionValue;
            dependencyToCreate.PathRules     = pathRules;

            buildConfigXml.CreateArtifactDependency(dependencyToCreate);

            var dependencyElement = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/artifact-dependencies/dependency[@sourceBuildTypeId='" + dependencyBuildConfigId + "']");

            Assert.Equal(dependencyBuildConfigId, dependencyElement?.Attributes["sourceBuildTypeId"].Value);
            Assert.Equal(cleanDestination.ToString().ToLower(), dependencyElement?.Attributes["cleanDestination"].Value);

            var revisionRuleElement = dependencyElement?.SelectSingleNode("revisionRule");

            Assert.Equal(revisionName, revisionRuleElement?.Attributes?["name"].Value);
            Assert.Equal(revisionValue, revisionRuleElement?.Attributes?["revision"].Value);

            var artifactElement = dependencyElement?.SelectSingleNode("artifact");

            Assert.Equal(pathRules, artifactElement?.Attributes?["sourcePath"].Value);
        }
示例#2
0
        public void Should_add_parameter_value_when_does_not_exists(IBuildConfigXmlClient buildConfigXmlClient, string paramName, string paramVal)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true).Create();

            buildConfigXml.SetParameterValue(paramName, paramVal);

            Assert.Equal(paramVal, buildConfigXml.Xml.SelectSingleNode("/build-type/settings/parameters/param[@name='" + paramName + "']").Attributes["value"].Value);
        }
示例#3
0
        public void Should_copy_xml_config(IBuildConfigXmlClient buildConfigXmlClient, string newBuildTypeId, string newConfigurationName)
        {
            var original = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true).Create();

            var clone        = original.CopyBuildConfiguration(newBuildTypeId, newConfigurationName);
            var originalUuid = original.Xml.SelectSingleNode("/build-type").Attributes["uuid"].Value;
            var cloneUuid    = clone.Xml.SelectSingleNode("/build-type").Attributes["uuid"].Value;

            Assert.NotEqual(originalUuid, cloneUuid);
            Assert.Equal(newBuildTypeId, clone.BuildConfigId);
            Assert.Equal(original.ProjectId, clone.ProjectId);
            Assert.Equal(newConfigurationName, clone.Xml.SelectSingleNode("/build-type/name").InnerText);
        }
示例#4
0
        public void Should_freeze_parameters(
            IBuildConfigXmlClient buildConfigXmlClient,
            List <Property> sourceParameters)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                                 .WithParameter(sourceParameters[0].Name, Arg.Any <string>())
                                 .Create();

            buildConfigXml.FreezeParameters(sourceParameters);

            var paramElement = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/parameters/param[@name='" + sourceParameters[0].Name + "']");

            Assert.Equal(sourceParameters[0].Value, paramElement.Attributes["value"].Value);
        }
示例#5
0
        public void Should_delete_snapshot_dependency(
            IBuildConfigXmlClient buildConfigXmlClient,
            string buildConfigId,
            string dependencyBuildConfigId)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                                 .WithSnapshotDependency(new CreateSnapshotDependency(Arg.Any <string>(), dependencyBuildConfigId))
                                 .Create();

            buildConfigXml.DeleteSnapshotDependency(dependencyBuildConfigId);

            var dependOnElement = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/dependencies/depend-on[@sourceBuildTypeId='" + dependencyBuildConfigId + "']");

            Assert.Null(dependOnElement);
        }
示例#6
0
        public void Should_delete_all_snapshot_dependencies(
            IBuildConfigXmlClient buildConfigXmlClient,
            string buildConfigId,
            string dependencyBuildConfigId)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                                 .WithSnapshotDependency(new CreateSnapshotDependency(Arg.Any <string>(), Arg.Any <string>()))
                                 .WithSnapshotDependency(new CreateSnapshotDependency(Arg.Any <string>(), Arg.Any <string>()))
                                 .Create();

            var dependenciesElement = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/dependencies");

            buildConfigXml.DeleteAllSnapshotDependencies();

            Assert.True(dependenciesElement.ChildNodes.Count == 0);
        }
示例#7
0
        public void Should_freeze_all_artifact_dependencies(
            IBuildConfigXmlClient buildConfigXmlClient,
            string dependencyBuildConfigId,
            CreateArtifactDependency artifactDependency,
            Build asOfBuild)
        {
            artifactDependency.DependencyBuildConfigId    = dependencyBuildConfigId;
            asOfBuild.ArtifactDependencies[0].BuildTypeId = dependencyBuildConfigId;

            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                                 .WithArtifactDependency(artifactDependency)
                                 .Create();

            buildConfigXml.FreezeAllArtifactDependencies(asOfBuild);

            var dependencyElement   = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/artifact-dependencies/dependency[@sourceBuildTypeId='" + dependencyBuildConfigId + "']");
            var revisionRuleElement = (XmlElement)dependencyElement?.SelectSingleNode("revisionRule");

            Assert.Equal("buildNumber", revisionRuleElement?.Attributes["name"].Value);
            Assert.Equal(asOfBuild.ArtifactDependencies[0].Number, revisionRuleElement?.Attributes["revision"].Value);
        }
示例#8
0
        public void Should_update_artifact_dependency(
            IBuildConfigXmlClient buildConfigXmlClient,
            string dependencyBuildConfigId,
            CreateArtifactDependency before,
            string newSourceBuildConfigId,
            string newRevisionName,
            string newRevisionValue)
        {
            before.DependencyBuildConfigId = dependencyBuildConfigId;

            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                                 .WithArtifactDependency(before)
                                 .Create();

            buildConfigXml.UpdateArtifactDependency(dependencyBuildConfigId, newSourceBuildConfigId, newRevisionName, newRevisionValue);

            var dependencyElement   = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/artifact-dependencies/dependency[@sourceBuildTypeId='" + newSourceBuildConfigId + "']");
            var revisionRuleElement = (XmlElement)dependencyElement?.SelectSingleNode("revisionRule");

            Assert.Equal(newRevisionName, revisionRuleElement?.Attributes["name"].Value);
            Assert.Equal(newRevisionValue, revisionRuleElement?.Attributes["revision"].Value);
        }
示例#9
0
        public void Should_create_snapshot_dependency(IBuildConfigXmlClient buildConfigXmlClient, string dependencyBuildConfigId, bool takeStartedBuildWithSameRevisions, bool takeSuccessFulBuildsOnly)
        {
            var buildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true).Create();

            var dependencyToCreate = new CreateSnapshotDependency(Arg.Any <string>(), dependencyBuildConfigId);

            dependencyToCreate.TakeStartedBuildWithSameRevisions = takeStartedBuildWithSameRevisions;
            dependencyToCreate.TakeSuccessFulBuildsOnly          = takeSuccessFulBuildsOnly;

            buildConfigXml.CreateSnapshotDependency(dependencyToCreate);

            var dependOnElement = (XmlElement)buildConfigXml.Xml.SelectSingleNode("/build-type/settings/dependencies/depend-on[@sourceBuildTypeId='" + dependencyBuildConfigId + "']");

            Assert.Equal(dependencyBuildConfigId, dependOnElement.Attributes["sourceBuildTypeId"].Value);

            var option1 = dependOnElement.SelectSingleNode("options/option[@name='take-started-build-with-same-revisions']").Attributes["value"].Value;

            Assert.Equal(takeStartedBuildWithSameRevisions.ToString().ToLower(), option1);

            var option2 = dependOnElement.SelectSingleNode("options/option[@name='take-successful-builds-only']").Attributes["value"].Value;

            Assert.Equal(takeSuccessFulBuildsOnly.ToString().ToLower(), option2);
        }
示例#10
0
        public void Should_update_template_and_git_repo_to_current_state(
            IBuildConfigXmlClient buildConfigXmlClient,
            IBuildConfigClient buildConfigClient,
            IFixture fixture,
            string buildConfigId,
            string currentRepoPath)
        {
            var oldVersion = new BuildConfigXmlGenerator(buildConfigXmlClient, buildNonStubVersion: true)
                             .WithId(buildConfigId)
                             .WithTemplateId("CPlusPlusTemplate_v1")
                             .Create();

            var currentVersion = fixture.Build <BuildConfig>()
                                 .WithId(buildConfigId)
                                 .WithParameters(new Properties {
                Property = new PropertyList()
                {
                    new Property(ParameterName.GitRepoPath, currentRepoPath),
                }
            })
                                 .WithTemplates(new Templates {
                BuildType = new List <Template>()
                {
                    new Template()
                    {
                        Id = "BaseTemplateV5GitLab"
                    }
                }
            })
                                 .Create();

            oldVersion.SwitchTemplateAndRepoToCurrentState(currentVersion);

            Assert.Equal("BaseTemplateV5GitLab", oldVersion.Xml.SelectSingleNode("/build-type/settings").Attributes["ref"].Value);
            Assert.Equal(currentRepoPath, oldVersion.Xml.SelectSingleNode("/build-type/settings/parameters/param[@name='" + ParameterName.GitRepoPath + "']").Attributes["value"].Value);
        }
示例#11
0
        public SingleBuildScenario(
            IFixture fixture,
            ITeamCityClient client,
            IBuildConfigXmlClient buildConfigXmlClient,
            long buildId,
            string buildConfigId   = null,
            string buildConfigName = null,
            List <ScenarioDependency> dependencies = null,
            Properties buildParameters             = null)
        {
            var projectId = fixture.Create <string>();

            buildConfigId = buildConfigId ?? fixture.Create <string>();

            BuildConfig = fixture.Build <BuildConfig>()
                          .WithId(buildConfigId)
                          .WithProjectId(projectId)
                          .WithName(buildConfigName ?? fixture.Create <string>())
                          .WithParameters(buildParameters ?? fixture.Create <Properties>())
                          .WithDependencies(dependencies?.Select(d => d.AsDependencyDefinition()).ToArray() ??
                                            fixture.CreateMany <DependencyDefinition>().ToArray())
                          .Create();

            BuildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient)
                             .WithProjectId(projectId)
                             .WithId(buildConfigId)
                             .WithName(buildConfigName ?? fixture.Create <string>())
                             .WithParameters(buildParameters ?? fixture.Create <Properties>())
                             .WithDependencies(dependencies?.Select(d => d.AsDependencyDefinition()).ToArray() ??
                                               fixture.CreateMany <DependencyDefinition>().ToArray())
                             .Create();

            Build = fixture.Build <Build>()
                    .WithId(buildId)
                    .WithDependencies(dependencies?.Select(d => d.AsDependency()).ToArray() ??
                                      fixture.CreateMany <Dependency>().ToArray())
                    .WithBuildConfigSummary(BuildConfig)
                    .Create();

            Project = fixture.Build <Project>()
                      .WithId(Build.BuildConfig.ProjectId)
                      .WithBuildConfigSummary(BuildConfig)
                      .Create();

            client.Builds
            .ById(buildId)
            .Returns(Task.FromResult(Build));

            client.Builds
            .ByNumber(Build.Number, BuildConfig.Id)
            .Returns(Task.FromResult(Build));

            client.Projects
            .GetById(Project.Id)
            .Returns(Task.FromResult(Project));

            client.BuildConfigs
            .GetByConfigurationId(BuildConfig.Id)
            .Returns(Task.FromResult(BuildConfig));

            buildConfigXmlClient
            .Read(BuildConfigXml.ProjectId, BuildConfigXml.BuildConfigId)
            .Returns(BuildConfigXml);

            buildConfigXmlClient
            .ReadAsOf(BuildConfigXml.ProjectId, BuildConfigXml.BuildConfigId, Arg.Any <DateTime>())
            .Returns(BuildConfigXml);

            var clonedBuildConfig = BuildConfig.CloneViaJson();

            clonedBuildConfig.Id   = BuildConfig.Id + "_Clone";
            clonedBuildConfig.Name = buildConfigName + Consts.SuffixSeparator + "Clone";

            client.BuildConfigs.GenerateUniqueBuildConfigId(projectId, clonedBuildConfig.Name)
            .Returns(Task.FromResult(clonedBuildConfig.Id));
        }