public void TagPreReleaseWeightIsNotConfigured_GitFlowReleaseIsFinished_WeightedPreReleaseNumberShouldBeTheDefaultValue()
        {
            // Arrange
            var config = new TestableConfig()
            {
                AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
                VersioningMode = VersioningMode.ContinuousDeployment
            };

            config.ApplyDefaults();

            // Act
            using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
            fixture.Checkout("master");
            fixture.MergeNoFF("develop");
            fixture.Checkout("develop");
            fixture.MakeACommit("Feature commit 1");
            fixture.BranchTo("release/1.1.0");
            fixture.MakeACommit("Release commit 1");
            fixture.AssertFullSemver("1.1.0-beta.1", config);
            fixture.ApplyTag("1.1.0");
            var version = fixture.GetVersion(config);

            // Assert
            version.AssemblySemFileVer.ShouldBe("1.1.0.60000");
        }
        public void CommitsSinceVersionSourceShouldNotGoDownUponMergingFeatureOnlyToDevelop()
        {
            var config = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDeployment
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit("commit in master - 1");
            fixture.ApplyTag("1.1.0");
            fixture.BranchTo("develop");
            fixture.MakeACommit("commit in develop - 1");
            fixture.AssertFullSemver("1.2.0-alpha.1");
            fixture.BranchTo("release/1.2.0");
            fixture.MakeACommit("commit in release - 1");
            fixture.MakeACommit("commit in release - 2");
            fixture.MakeACommit("commit in release - 3");
            fixture.AssertFullSemver("1.2.0-beta.1+3");
            fixture.ApplyTag("1.2.0");
            fixture.Checkout("develop");
            fixture.MakeACommit("commit in develop - 2");
            fixture.AssertFullSemver("1.3.0-alpha.1");
            fixture.MergeNoFF("release/1.2.0");
            fixture.AssertFullSemver("1.3.0-alpha.5");
            fixture.SequenceDiagram.Destroy("release/1.2.0");
            fixture.Repository.Branches.Remove("release/1.2.0");

            var expectedFullSemVer = "1.3.0-alpha.5";

            fixture.AssertFullSemver(expectedFullSemVer, config);
        }
        public void MergeOnReleaseBranchShouldNotResetCount()
        {
            var config = new TestableConfig
            {
                AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag,
                VersioningMode           = VersioningMode.ContinuousDeployment,
            };

            using var fixture = new EmptyRepositoryFixture();
            const string taggedVersion = "1.0.3";

            fixture.Repository.MakeATaggedCommit(taggedVersion);
            fixture.Repository.CreateBranch("develop");
            fixture.Checkout("develop");
            fixture.Repository.MakeACommit();

            fixture.Repository.CreateBranch("release/2.0.0");

            fixture.Repository.CreateBranch("release/2.0.0-xxx");
            fixture.Checkout("release/2.0.0-xxx");
            fixture.Repository.MakeACommit();
            fixture.AssertFullSemver("2.0.0-beta.1", config);

            fixture.Checkout("release/2.0.0");
            fixture.Repository.MakeACommit();
            fixture.AssertFullSemver("2.0.0-beta.1", config);

            fixture.Repository.MergeNoFF("release/2.0.0-xxx");
            fixture.AssertFullSemver("2.0.0-beta.2", config);
        }
        public void MergingFeatureBranchThatIncrementsMinorNumberIncrementsMinorVersionOfMaster()
        {
            var currentConfig = new TestableConfig
            {
                VersioningMode = VersioningMode.Mainline,
                Branches       = new Dictionary <string, BranchConfig>
                {
                    {
                        "feature", new BranchConfig
                        {
                            VersioningMode = VersioningMode.ContinuousDeployment,
                            Increment      = IncrementStrategy.Minor
                        }
                    }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit("first in master");
            fixture.MakeATaggedCommit("1.0.0");
            fixture.AssertFullSemver("1.0.0", currentConfig);

            fixture.BranchTo("feature/foo", "foo");
            fixture.MakeACommit("first in foo");
            fixture.MakeACommit("second in foo");
            fixture.AssertFullSemver("1.1.0-foo.2", currentConfig);

            fixture.Checkout("master");
            fixture.MergeNoFF("feature/foo");
            fixture.AssertFullSemver("1.1.0", currentConfig);
        }
        public void CanInheritVersioningMode(VersioningMode mode)
        {
            using var fixture = new EmptyRepositoryFixture();

            var config = new TestableConfig
            {
                VersioningMode = mode
            };

            config.Reset();

            var branchName = "master";
            var mockBranch = new MockBranch(branchName)
            {
                new MockCommit {
                    CommitterEx = Generate.SignatureNow()
                }
            };
            var mockRepository = new MockRepository
            {
                Head     = mockBranch,
                Branches = new MockBranchCollection
                {
                    mockBranch
                }
            };

            var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config);

            context.Configuration.VersioningMode.ShouldBe(mode);
        }
        public void CanFindParentBranchForInheritingIncrementStrategy()
        {
            var config = new TestableConfig
            {
                Branches =
                {
                    { "develop", new BranchConfig {
                          Increment = IncrementStrategy.Major
                      } },
                    { "feature", new BranchConfig {
                          Increment = IncrementStrategy.Inherit
                      } }
                }
            }.ApplyDefaults();

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeACommit();
            Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("develop"));
            fixture.Repository.MakeACommit();
            var featureBranch = fixture.Repository.CreateBranch("feature/foo");

            Commands.Checkout(fixture.Repository, featureBranch);
            fixture.Repository.MakeACommit();

            var context = GetGitVersionContext(fixture.RepositoryPath, fixture.Repository, "develop", config);

            context.Configuration.Increment.ShouldBe(IncrementStrategy.Major);
        }
            public void ShouldPickUpVersionFromMasterAfterReleaseBranchCreated()
            {
                var config = new TestableConfig
                {
                    Branches = new Dictionary <string, BranchConfig>
                    {
                        {
                            "master", new BranchConfig
                            {
                                TracksReleaseBranches = true,
                                Regex = "master"
                            }
                        }
                    }
                };

                using var fixture = new EmptyRepositoryFixture();
                // Create release branch
                fixture.MakeACommit();
                fixture.BranchTo("release/1.0");
                fixture.MakeACommit();
                fixture.Checkout("master");
                fixture.MakeACommit();
                fixture.AssertFullSemver("1.0.1+1", config);

                // create a feature branch from master and verify the version
                fixture.BranchTo("feature/test");
                fixture.AssertFullSemver("1.0.1-test.1+1", config);
            }
                public void ShouldPickUpVersionFromMasterAfterReleaseBranchMergedBack()
                {
                    var config = new TestableConfig
                    {
                        Branches = new Dictionary <string, BranchConfig>
                        {
                            {
                                "master", new BranchConfig
                                {
                                    TracksReleaseBranches = true,
                                    Regex = "master"
                                }
                            }
                        }
                    };

                    using var fixture = new EmptyRepositoryFixture();
                    // Create release branch
                    fixture.MakeACommit();
                    fixture.BranchTo("release/1.0");
                    fixture.MakeACommit();

                    // merge release into master
                    fixture.Checkout("master");
                    fixture.MergeNoFF("release/1.0");
                    fixture.AssertFullSemver("1.0.1+2", config);

                    // create a misnamed feature branch (i.e. it uses the default config) from master and verify the version
                    fixture.BranchTo("misnamed");
                    fixture.AssertFullSemver("1.0.1-misnamed.1+2", config);
                }
        public void CanUseBranchNameOffAReleaseBranch()
        {
            var config = new TestableConfig
            {
                Branches =
                {
                    { "release", new BranchConfig {
                          Tag = "build"
                      } },
                    { "feature", new BranchConfig {
                          Tag = "useBranchName"
                      } }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit();
            fixture.BranchTo("release/0.3.0");
            fixture.MakeATaggedCommit("v0.3.0-build.1");
            fixture.MakeACommit();
            fixture.BranchTo("feature/PROJ-1");
            fixture.MakeACommit();

            fixture.AssertFullSemver("0.3.0-PROJ-1.1+2", config);
        }
        public void ShouldBePossibleToMergeDevelopForALongRunningBranchWhereDevelopAndMasterAreEqual()
        {
            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeATaggedCommit("v1.0.0");

            fixture.Repository.CreateBranch("develop");
            Commands.Checkout(fixture.Repository, "develop");

            fixture.Repository.CreateBranch("feature/longrunning");
            Commands.Checkout(fixture.Repository, "feature/longrunning");
            fixture.Repository.MakeACommit();

            Commands.Checkout(fixture.Repository, "develop");
            fixture.Repository.MakeACommit();

            Commands.Checkout(fixture.Repository, "master");
            fixture.Repository.Merge(fixture.Repository.Branches["develop"], Generate.SignatureNow());
            fixture.Repository.ApplyTag("v1.1.0");

            Commands.Checkout(fixture.Repository, "feature/longrunning");
            fixture.Repository.Merge(fixture.Repository.Branches["develop"], Generate.SignatureNow());

            var configuration = new TestableConfig {
                VersioningMode = VersioningMode.ContinuousDeployment
            };

            fixture.AssertFullSemver("1.2.0-longrunning.2", configuration);
        }
        public void PreReleaseTagCanUseBranchName()
        {
            var config = new TestableConfig
            {
                NextVersion = "1.0.0",
                Branches    = new Dictionary <string, BranchConfig>
                {
                    {
                        "custom", new BranchConfig
                        {
                            Regex          = "custom/",
                            Tag            = "useBranchName",
                            SourceBranches = new List <string>()
                        }
                    }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit();
            fixture.BranchTo("develop");
            fixture.MakeACommit();
            fixture.BranchTo("custom/foo");
            fixture.MakeACommit();

            fixture.AssertFullSemver("1.0.0-foo.1+2", config);
        }
        public void PreReleaseNumberShouldBeScopeToPreReleaseLabelInContinuousDelivery()
        {
            var config = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDelivery,
                Branches       = new Dictionary <string, BranchConfig>
                {
                    {
                        "master", new BranchConfig
                        {
                            Tag = "beta"
                        }
                    },
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeACommit();

            fixture.Repository.CreateBranch("feature/test");
            Commands.Checkout(fixture.Repository, "feature/test");
            fixture.Repository.MakeATaggedCommit("0.1.0-test.1");
            fixture.Repository.MakeACommit();

            fixture.AssertFullSemver("0.1.0-test.2+2", config);

            Commands.Checkout(fixture.Repository, "master");
            fixture.Repository.Merge(fixture.Repository.FindBranch("feature/test"), Generate.SignatureNow());

            fixture.AssertFullSemver("0.1.0-beta.1+2", config);
        }
        public void FeatureOnReleaseFeatureBranchNotDeleted()
        {
            var config = new TestableConfig
            {
                AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag,
                VersioningMode           = VersioningMode.ContinuousDeployment
            };

            using var fixture = new EmptyRepositoryFixture();
            var release450    = "release/4.5.0";
            var featureBranch = "feature/some-bug-fix";

            fixture.Repository.MakeACommit("initial");
            fixture.Repository.CreateBranch("develop");
            Commands.Checkout(fixture.Repository, "develop");

            // begin the release branch
            fixture.Repository.CreateBranch(release450);
            Commands.Checkout(fixture.Repository, release450);
            fixture.AssertFullSemver("4.5.0-beta.0", config);

            fixture.Repository.CreateBranch(featureBranch);
            Commands.Checkout(fixture.Repository, featureBranch);
            fixture.Repository.MakeACommit("blabla");                             // commit 1
            Commands.Checkout(fixture.Repository, release450);
            fixture.Repository.MergeNoFF(featureBranch, Generate.SignatureNow()); // commit 2

            fixture.AssertFullSemver("4.5.0-beta.2", config);
        }
        public void CommitOnDevelopAfterReleaseBranchMergeToDevelopShouldNotResetCount()
        {
            var config = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDeployment
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit("initial");
            fixture.BranchTo("develop");

            // Create release from develop
            fixture.BranchTo("release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.0", config);

            // Make some commits on release
            fixture.MakeACommit("release 1");
            fixture.MakeACommit("release 2");
            fixture.AssertFullSemver("2.0.0-beta.2", config);

            // First forward merge release to develop
            fixture.Checkout("develop");
            fixture.MergeNoFF("release-2.0.0");

            // Make some new commit on release
            fixture.Checkout("release-2.0.0");
            fixture.Repository.MakeACommit("release 3 - after first merge");
            fixture.AssertFullSemver("2.0.0-beta.3", config);

            // Make new commit on develop
            fixture.Checkout("develop");
            // Checkout to release (no new commits)
            fixture.Checkout("release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.3", config);
            fixture.Checkout("develop");
            fixture.Repository.MakeACommit("develop after merge");

            // Checkout to release (no new commits)
            fixture.Checkout("release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.3", config);

            // Make some new commit on release
            fixture.Repository.MakeACommit("release 4");
            fixture.Repository.MakeACommit("release 5");
            fixture.AssertFullSemver("2.0.0-beta.5", config);

            // Second merge release to develop
            fixture.Checkout("develop");
            fixture.Repository.MergeNoFF("release-2.0.0", Generate.SignatureNow());

            // Checkout to release (no new commits)
            fixture.Checkout("release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.5", config);
        }
        public void ReleaseBranchWithNextVersionSetInConfig()
        {
            var config = new TestableConfig
            {
                NextVersion = "2.0.0"
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeCommits(5);
            fixture.BranchTo("release-2.0.0");

            fixture.AssertFullSemver("2.0.0-beta.1+0", config);
            fixture.Repository.MakeCommits(2);
            fixture.AssertFullSemver("2.0.0-beta.1+2", config);
        }
        public void TakesVersionFromMergeOfConfiguredReleaseBranch(string message, string releaseBranch, string expectedVersion)
        {
            var config = new TestableConfig();

            if (releaseBranch != null)
            {
                config.Branches[releaseBranch] = new BranchConfig {
                    IsReleaseBranch = true
                }
            }
            ;
            var parents = GetParents(true);

            AssertMergeMessage(message, expectedVersion, parents, config);
        }
Example #17
0
        public void GivenARepositoryWithTagAndNextVersionInConfigVersionShouldMatchVersionTxtFile()
        {
            const string expectedNextVersion = "1.1.0";
            var          config = new TestableConfig {
                NextVersion = expectedNextVersion
            };

            using var fixture = new EmptyRepositoryFixture();
            const string taggedVersion = "1.0.3";

            fixture.Repository.MakeATaggedCommit(taggedVersion);
            fixture.Repository.MakeCommits(5);

            fixture.AssertFullSemver("1.1.0+5", config);
        }
Example #18
0
        public void FeatureOnHotfixFeatureBranchDeleted()
        {
            var config = new TestableConfig
            {
                AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag,
                VersioningMode           = VersioningMode.ContinuousDeployment
            };

            using var fixture = new EmptyRepositoryFixture();
            var release450    = "release/4.5.0";
            var hotfix451     = "hotfix/4.5.1";
            var support45     = "support/4.5";
            var tag450        = "4.5.0";
            var featureBranch = "feature/some-bug-fix";

            fixture.Repository.MakeACommit("initial");
            fixture.Repository.CreateBranch("develop");
            Commands.Checkout(fixture.Repository, "develop");

            // create release branch
            fixture.Repository.CreateBranch(release450);
            Commands.Checkout(fixture.Repository, release450);
            fixture.AssertFullSemver("4.5.0-beta.0", config);
            fixture.Repository.MakeACommit("blabla");
            Commands.Checkout(fixture.Repository, "develop");
            fixture.Repository.MergeNoFF(release450, Generate.SignatureNow());
            Commands.Checkout(fixture.Repository, "master");
            fixture.Repository.MergeNoFF(release450, Generate.SignatureNow());

            // create support branch
            fixture.Repository.CreateBranch(support45);
            Commands.Checkout(fixture.Repository, support45);
            fixture.Repository.ApplyTag(tag450);
            fixture.AssertFullSemver("4.5.0", config);

            // create hotfix branch
            fixture.Repository.CreateBranch(hotfix451);
            Commands.Checkout(fixture.Repository, hotfix451);

            // feature branch from hotfix
            fixture.Repository.CreateBranch(featureBranch);
            Commands.Checkout(fixture.Repository, featureBranch);
            fixture.Repository.MakeACommit("blabla");                             // commit 1
            Commands.Checkout(fixture.Repository, hotfix451);
            fixture.Repository.MergeNoFF(featureBranch, Generate.SignatureNow()); // commit 2
            fixture.Repository.Branches.Remove(featureBranch);
            fixture.AssertFullSemver("4.5.1-beta.2", config);
        }
Example #19
0
        public void TakesVersionFromNameOfBranchThatIsReleaseByConfig()
        {
            var config = new TestableConfig
            {
                Branches = new Dictionary <string, BranchConfig> {
                    { "support", new BranchConfig {
                          IsReleaseBranch = true
                      } }
                }
            };

            using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
            fixture.BranchTo("support/2.0.0");

            fixture.AssertFullSemver("2.0.0+1", config);
        }
Example #20
0
        public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Config configuration = null, IRepository repository = null, string commitId = null, bool onlyTrackedBranches = true, string branch = null)
        {
            if (configuration == null)
            {
                configuration = new TestableConfig();
                configuration.Reset();
            }

            repository ??= fixture.Repository;

            var options = Options.Create(new GitVersionOptions
            {
                WorkingDirectory = repository.Info.WorkingDirectory,
                ConfigInfo       = { OverrideConfig = configuration },
                RepositoryInfo   =
                {
                    TargetBranch = branch,
                    CommitId     = commitId,
                },
                Settings = { OnlyTrackedBranches = onlyTrackedBranches }
            });

            var sp = ConfigureServices(services =>
            {
                services.AddSingleton(options);
            });

            var variableProvider      = sp.GetService <IVariableProvider>();
            var nextVersionCalculator = sp.GetService <INextVersionCalculator>();
            var contextOptions        = sp.GetService <Lazy <GitVersionContext> >();

            var context = contextOptions.Value;

            try
            {
                var executeGitVersion = nextVersionCalculator.FindVersion();
                var variables         = variableProvider.GetVariablesFor(executeGitVersion, context.Configuration, context.IsCurrentCommitTagged);

                return(variables);
            }
            catch (Exception)
            {
                Console.WriteLine("Test failing, dumping repository graph");
                repository.DumpGraph();
                throw;
            }
        }
        public void UsesBranchSpecificConfigOverTopLevelDefaults()
        {
            using var fixture = new EmptyRepositoryFixture();

            var branchName = "develop";
            var config     = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDelivery,
                Branches       =
                {
                    {
                        branchName, new BranchConfig
                        {
                            VersioningMode = VersioningMode.ContinuousDeployment,
                            Tag            = "alpha"
                        }
                    }
                }
            };

            config.Reset();
            var develop = new MockBranch(branchName)
            {
                new MockCommit {
                    CommitterEx = Generate.SignatureNow()
                }
            };
            var mockRepository = new MockRepository
            {
                Head     = develop,
                Branches = new MockBranchCollection
                {
                    new MockBranch("master")
                    {
                        new MockCommit {
                            CommitterEx = Generate.SignatureNow()
                        }
                    },
                    develop
                }
            };

            var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config);

            context.Configuration.Tag.ShouldBe("alpha");
        }
        public void AssemblySemFileVerShouldBeWeightedByDefaultPreReleaseWeight()
        {
            var config = new TestableConfig
            {
                AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeATaggedCommit("1.0.3");
            fixture.Repository.MakeCommits(5);
            fixture.Repository.CreateBranch("release-2.0.0");
            fixture.Checkout("release-2.0.0");
            config.Reset();
            var variables = fixture.GetVersion(config);

            Assert.AreEqual(variables.AssemblySemFileVer, "2.0.0.30001");
        }
        public void FeatureFromReleaseBranchShouldNotResetCount()
        {
            var config = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDeployment
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeACommit("initial");
            fixture.Repository.CreateBranch("develop");
            Commands.Checkout(fixture.Repository, "develop");
            fixture.Repository.CreateBranch("release-2.0.0");
            Commands.Checkout(fixture.Repository, "release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.0", config);

            // Make some commits on release
            fixture.Repository.MakeCommits(10);
            fixture.AssertFullSemver("2.0.0-beta.10", config);

            // Create feature from release
            fixture.BranchTo("feature/xxx");
            fixture.Repository.MakeACommit("feature 1");
            fixture.Repository.MakeACommit("feature 2");

            // Check version on release
            Commands.Checkout(fixture.Repository, "release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.10", config);
            fixture.Repository.MakeACommit("release 11");
            fixture.AssertFullSemver("2.0.0-beta.11", config);

            // Make new commit on feature
            Commands.Checkout(fixture.Repository, "feature/xxx");
            fixture.Repository.MakeACommit("feature 3");

            // Checkout to release (no new commits)
            Commands.Checkout(fixture.Repository, "release-2.0.0");
            fixture.AssertFullSemver("2.0.0-beta.11", config);

            // Merge feature to release
            fixture.Repository.MergeNoFF("feature/xxx", Generate.SignatureNow());
            fixture.AssertFullSemver("2.0.0-beta.15", config);

            fixture.Repository.MakeACommit("release 13 - after feature merge");
            fixture.AssertFullSemver("2.0.0-beta.16", config);
        }
Example #24
0
        public void EmptyTagPrefix(string prefix)
        {
            // Arrange
            var message = "Updated some code.";
            var config  = new TestableConfig {
                TagPrefix = prefix
            };

            // Act
            var sut = new MergeMessage(message, config);

            // Assert
            sut.TargetBranch.ShouldBeNull();
            sut.MergedBranch.ShouldBeEmpty();
            sut.IsMergedPullRequest.ShouldBeFalse();
            sut.PullRequestNumber.ShouldBeNull();
            sut.Version.ShouldBeNull();
        }
        public void TagPreReleaseWeightIsNotConfigured_HeadIsATaggedCommit_WeightedPreReleaseNumberShouldBeTheDefaultValue()
        {
            // Arrange
            var config = new TestableConfig()
            {
                AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
            };

            config.ApplyDefaults();

            // Act
            using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
            fixture.MakeATaggedCommit("1.1.0");
            var version = fixture.GetVersion(config);

            // Assert
            version.AssemblySemFileVer.ShouldBe("1.1.0.60000");
        }
Example #26
0
        public void AreTagsNotAdheringToTagPrefixIgnored()
        {
            var config = new TestableConfig {
                TagPrefix = ""
            };

            using var fixture = new EmptyRepositoryFixture();
            var taggedVersion = "version-1.0.3";

            fixture.Repository.MakeATaggedCommit(taggedVersion);
            fixture.Repository.MakeCommits(5);

            fixture.AssertFullSemver("0.1.0+5", config);    //Fallback version + 5 commits since tag

            taggedVersion = "bad/1.0.3";
            fixture.Repository.MakeATaggedCommit(taggedVersion);

            fixture.AssertFullSemver("0.1.0+6", config);   //Fallback version + 6 commits since tag
        }
Example #27
0
        public void CanHandleContinuousDelivery()
        {
            var config = new TestableConfig
            {
                Branches =
                {
                    { "develop", new BranchConfig
                        {
                            VersioningMode = VersioningMode.ContinuousDelivery
                        } }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeATaggedCommit("1.0.0");
            Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("develop"));
            fixture.Repository.MakeATaggedCommit("1.1.0-alpha7");
            fixture.AssertFullSemver("1.1.0-alpha.7", config);
        }
        public void PickUpVersionFromMasterMarkedWithIsTracksReleaseBranches()
        {
            var config = new TestableConfig
            {
                VersioningMode = VersioningMode.ContinuousDelivery,
                Branches       = new Dictionary <string, BranchConfig>
                {
                    {
                        "master", new BranchConfig
                        {
                            Tag = "pre",
                            TracksReleaseBranches = true,
                        }
                    },
                    {
                        "release", new BranchConfig
                        {
                            IsReleaseBranch = true,
                            Tag             = "rc",
                        }
                    }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit();

            // create a release branch and tag a release
            fixture.BranchTo("release/0.10.0");
            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.AssertFullSemver("0.10.0-rc.1+2", config);

            // switch to master and verify the version
            fixture.Checkout("master");
            fixture.MakeACommit();
            fixture.AssertFullSemver("0.10.1-pre.1+1", config);

            // create a feature branch from master and verify the version
            fixture.BranchTo("MyFeatureD");
            fixture.AssertFullSemver("0.10.1-MyFeatureD.1+1", config);
        }
        public void ShouldHaveAGreaterSemVerAfterDevelopIsMergedIntoFeature()
        {
            var config = new TestableConfig
            {
                VersioningMode                   = VersioningMode.ContinuousDeployment,
                AssemblyVersioningScheme         = AssemblyVersioningScheme.Major,
                AssemblyFileVersioningFormat     = "{MajorMinorPatch}.{env:WeightedPreReleaseNumber ?? 0}",
                LegacySemVerPadding              = 4,
                BuildMetaDataPadding             = 4,
                CommitsSinceVersionSourcePadding = 4,
                CommitMessageIncrementing        = CommitMessageIncrementMode.Disabled,
                Branches = new Dictionary <string, BranchConfig>
                {
                    {
                        "develop", new BranchConfig
                        {
                            PreventIncrementOfMergedBranchVersion = true
                        }
                    },
                    {
                        "feature", new BranchConfig
                        {
                            Tag = "feat-{BranchName}"
                        }
                    }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.MakeACommit();
            fixture.BranchTo("develop");
            fixture.MakeACommit();
            fixture.ApplyTag("16.23.0");
            fixture.MakeACommit();
            fixture.BranchTo("feature/featX");
            fixture.MakeACommit();
            fixture.Checkout("develop");
            fixture.MakeACommit();
            fixture.Checkout("feature/featX");
            fixture.MergeNoFF("develop");
            fixture.AssertFullSemver("16.24.0-feat-featX.4", config);
        }
Example #30
0
        public void CanHandleContinuousDeployment()
        {
            var config = new TestableConfig
            {
                Branches =
                {
                    {
                        "master", new BranchConfig
                        {
                            VersioningMode = VersioningMode.ContinuousDeployment
                        }
                    }
                }
            };

            using var fixture = new EmptyRepositoryFixture();
            fixture.Repository.MakeATaggedCommit("1.0.0");
            fixture.Repository.MakeCommits(2);
            fixture.AssertFullSemver("1.0.1-ci.2", config);
        }