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); }
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); }
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); }
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); }
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); }
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"); }
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 }
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); }
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); }