public void ShouldFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config { Ignore = fakeIgnoreConfig }).Build(); var higherVersion = new BaseVersion(context, "exclude", false, new SemanticVersion(2), new MockCommit(), null); var lowerVersion = new BaseVersion(context, "dummy", false, new SemanticVersion(1), new MockCommit(), null); var sp = ConfigureServices(services => { services.RemoveAll <IVersionStrategy>(); services.AddSingleton <IVersionStrategy>(new TestVersionStrategy(higherVersion, lowerVersion)); }); var versionCalculator = sp.GetService <IBaseVersionCalculator>(); var baseVersion = versionCalculator.GetBaseVersion(context); baseVersion.Source.ShouldNotBe(higherVersion.Source); baseVersion.SemanticVersion.ShouldNotBe(higherVersion.SemanticVersion); baseVersion.Source.ShouldBe(lowerVersion.Source); baseVersion.SemanticVersion.ShouldBe(lowerVersion.SemanticVersion); }
private static void AssertMergeMessage(string message, string expectedVersion, IEnumerable <ICommit> parents, Config config = null) { var commit = GitToolsTestingExtensions.CreateMockCommit(); commit.Message.Returns(message); commit.Parents.Returns(parents); var mockBranch = GitToolsTestingExtensions.CreateMockBranch(MainBranch, commit, GitToolsTestingExtensions.CreateMockCommit()); var mockRepository = Substitute.For <IGitRepository>(); mockRepository.Head.Returns(mockBranch); mockRepository.Commits.Returns(mockBranch.Commits); var contextBuilder = new GitVersionContextBuilder() .WithConfig(config ?? new Config()) .WithRepository(mockRepository); contextBuilder.Build(); var strategy = contextBuilder.ServicesProvider.GetServiceForType <IVersionStrategy, MergeMessageVersionStrategy>(); var baseVersion = strategy.GetVersions().SingleOrDefault(); if (expectedVersion == null) { baseVersion.ShouldBe(null); } else { baseVersion.ShouldNotBeNull(); baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } }
public void ShouldNotAllowIncrementOfVersion() { // When a branch is merged in you want to start building stable packages of that version // So we shouldn't bump the version var mockCommit = GitToolsTestingExtensions.CreateMockCommit(); mockCommit.Message.Returns("Merge branch 'release-0.1.5'"); mockCommit.Parents.Returns(GetParents(true)); var mockBranch = GitToolsTestingExtensions.CreateMockBranch(MainBranch, mockCommit); var branches = Substitute.For <IBranchCollection>(); branches.GetEnumerator().Returns(_ => ((IEnumerable <IBranch>) new[] { mockBranch }).GetEnumerator()); var mockRepository = Substitute.For <IGitRepository>(); mockRepository.Head.Returns(mockBranch); mockRepository.Branches.Returns(branches); mockRepository.Commits.Returns(mockBranch.Commits); var contextBuilder = new GitVersionContextBuilder().WithRepository(mockRepository); contextBuilder.Build(); var strategy = contextBuilder.ServicesProvider.GetServiceForType <IVersionStrategy, MergeMessageVersionStrategy>(); var baseVersion = strategy.GetVersions().Single(); baseVersion.ShouldIncrement.ShouldBe(false); }
public void DoesNotIncrementWhenBaseVersionSaysNotTo() { var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 1, MainBranch, "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now, 0); var contextBuilder = new GitVersionContextBuilder(); contextBuilder .OverrideServices(services => { var testBaseVersionCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), GitToolsTestingExtensions.CreateMockCommit()); services.AddSingleton <IBaseVersionCalculator>(testBaseVersionCalculator); services.AddSingleton <IMainlineVersionCalculator>(new TestMainlineVersionCalculator(semanticVersionBuildMetaData)); }) .WithConfig(new Config()) .Build(); contextBuilder.ServicesProvider.ShouldNotBeNull(); var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService <INextVersionCalculator>(); nextVersionCalculator.ShouldNotBeNull(); var version = nextVersionCalculator.FindVersion(); version.ToString().ShouldBe("1.0.0"); }
private void AssertMergeMessage(string message, string expectedVersion, IList <ICommit> parents, Config config = null) { var commit = new MockCommit { MessageEx = message, ParentsEx = parents }; var contextBuilder = new GitVersionContextBuilder() .WithConfig(config ?? new Config()) .WithRepository(new MockRepository { Head = new MockBranch("master") { commit, new MockCommit() } }); contextBuilder.Build(); var strategy = contextBuilder.ServicesProvider.GetServiceForType <IVersionStrategy, MergeMessageVersionStrategy>(); var baseVersion = strategy.GetVersions().SingleOrDefault(); if (expectedVersion == null) { baseVersion.ShouldBe(null); } else { baseVersion.ShouldNotBeNull(); baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } }
static void AssertMergeMessage(string message, string expectedVersion, List <Commit> parents, Config config = null) { var commit = new MockCommit { MessageEx = message, ParentsEx = parents }; var context = new GitVersionContextBuilder() .WithConfig(config ?? new Config()) .WithRepository(new MockRepository { Head = new MockBranch("master") { commit, new MockCommit() } }) .Build(); var sut = new MergeMessageBaseVersionStrategy(); var baseVersion = sut.GetVersions(context).SingleOrDefault(); if (expectedVersion == null) { baseVersion.ShouldBe(null); } else { baseVersion.ShouldNotBeNull(); baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } }
public void ReturnsNullWhenNoNextVersionIsInConfig() { var contextBuilder = new GitVersionContextBuilder(); var sut = new ConfigNextVersionBaseVersionStrategy(); var baseVersion = sut.GetVersions(contextBuilder.Build()).SingleOrDefault(); baseVersion.ShouldBe(null); }
public void ExcludeShouldAcceptVersionWithNullCommit() { var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), null, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); sut.Exclude(version, out var reason).ShouldBeFalse(); reason.ShouldBeNull(); }
private static IBaseVersionCalculator GetBaseVersionCalculator(Action <GitVersionContextBuilder> contextBuilderAction) { var contextBuilder = new GitVersionContextBuilder(); contextBuilderAction.Invoke(contextBuilder); contextBuilder.Build(); contextBuilder.ServicesProvider.ShouldNotBeNull(); return(contextBuilder.ServicesProvider.GetRequiredService <IBaseVersionCalculator>()); }
public void ExcludeShouldAcceptVersionWithNullCommit() { var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), null, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void ExcludeShouldAcceptVersionWithNullCommit() { var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), null, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); sut.Exclude(version, out var reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); sut.Exclude(version, out var reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void WhenShaMatchShouldExcludeWithReason() { var commit = new MockCommit(); var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { commit.Sha }); sut.Exclude(version, out var reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public void WhenShaMatchShouldExcludeWithReason() { var commit = new MockCommit(); var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { commit.Sha }); string reason; sut.Exclude(version, out reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void ExcludeShouldAcceptVersionWithNullCommit() { var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), null, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void ShouldNotAllowVersionIncrementWhenTagComesFromCurrentCommit() { var context = new GitVersionContextBuilder() .WithTaggedMaster() .Build(); var sut = new HighestTagBaseVersionStrategy(); var baseVersion = sut.GetVersion(context); baseVersion.ShouldIncrement.ShouldBe(false); }
public void WhenCommitShouldExcludeWithReason() { var context = new GitVersionContextBuilder().Build(); var commit = new MockCommit(); //when = UtcNow var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); sut.Exclude(version, out var reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); //when = UtcNow var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var pastDate = DateTimeOffset.UtcNow.AddYears(-1); var sut = new MinDateVersionFilter(pastDate); sut.Exclude(version, out var reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void ShouldAllowVersionIncrement() { var context = new GitVersionContextBuilder() .WithTaggedMaster() .AddCommit() .Build(); var sut = new HighestTagBaseVersionStrategy(); var baseVersion = sut.GetVersion(context); baseVersion.ShouldIncrement.ShouldBe(true); }
public void DoesNotIncrementWhenBaseVersionSaysNotTo() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 1, "master", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var config = new Config(); var context = new GitVersionContextBuilder().WithConfig(config).Build(); var version = sut.FindVersion(context); version.ToString().ShouldBe("1.0.0"); }
public void WhenCommitShouldExcludeWithReason() { var context = new GitVersionContextBuilder().Build(); var commit = new MockCommit(); //when = UtcNow var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); string reason; sut.Exclude(version, out reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); //when = UtcNow var context = new GitVersionContextBuilder().Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(1), commit, string.Empty); var pastDate = DateTimeOffset.UtcNow.AddYears(-1); var sut = new MinDateVersionFilter(pastDate); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void DoesNotIncrementWhenBaseVersionSaysNotTo() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var config = new Config(); var context = new GitVersionContextBuilder().WithConfig(config).Build(); var version = sut.FindVersion(context); version.ToString().ShouldBe("1.0.0"); }
public void ChoosesHighestVersionReturnedFromStrategies() { var context = new GitVersionContextBuilder().Build(); var dateTimeOffset = DateTimeOffset.Now; var sut = new BaseVersionCalculator(new V1Strategy(DateTimeOffset.Now), new V2Strategy(dateTimeOffset)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(dateTimeOffset); }
public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder() { var context = new GitVersionContextBuilder().Build(); var when = DateTimeOffset.Now; var sut = new BaseVersionCalculator(new V1Strategy(null), new V2Strategy(when)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(when); }
public void ShouldIncrementVersionBasedOnConfig() { var baseCalculator = new TestBaseVersionCalculator(true, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var config = new Config(); var context = new GitVersionContextBuilder().WithConfig(config).Build(); var version = sut.FindVersion(context); version.ToString().ShouldBe("1.0.1"); }
public void ChoosesHighestVersionReturnedFromStrategies() { var context = new GitVersionContextBuilder().Build(); var dateTimeOffset = DateTimeOffset.Now; var sut = new BaseVersionCalculator(log, new V1Strategy(DateTimeOffset.Now), new V2Strategy(dateTimeOffset)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(dateTimeOffset); }
public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder() { var context = new GitVersionContextBuilder().Build(); var when = DateTimeOffset.Now; var sut = new BaseVersionCalculator(log, new V1Strategy(null), new V2Strategy(when)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(when); }
public void NextVersionCanHaveEnormousMinorVersion() { var contextBuilder = new GitVersionContextBuilder() .WithConfig(new Config { NextVersion = "2.118998723" }); var sut = new ConfigNextVersionBaseVersionStrategy(); var baseVersion = sut.GetVersions(contextBuilder.Build()).Single(); baseVersion.SemanticVersion.ToString().ShouldBe("2.118998723.0"); }
public void AppliesBranchPreReleaseTag() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(2, "develop", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var context = new GitVersionContextBuilder() .WithDevelopBranch() .Build(); var version = sut.FindVersion(context); version.ToString("f").ShouldBe("1.0.0-alpha.1+2"); }
public void NextVersionCanHavePatch() { var contextBuilder = new GitVersionContextBuilder() .WithConfig(new Config { NextVersion = "2.12.654651698" }); var sut = new ConfigNextVersionBaseVersionStrategy(); var baseVersion = sut.GetVersions(contextBuilder.Build()).Single(); baseVersion.SemanticVersion.ToString().ShouldBe("2.12.654651698"); }
public void AppliesBranchPreReleaseTag() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(2, "develop", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var context = new GitVersionContextBuilder() .WithDevelopBranch() .Build(); var version = sut.FindVersion(context); version.ToString("f").ShouldBe("1.0.0-unstable.1+2"); }
public void AppliesBranchPreReleaseTag() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 2, "develop", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var context = new GitVersionContextBuilder() .WithDevelopBranch() .Build(); var version = sut.FindVersion(context); version.ToString("f").ShouldBe("1.0.0-alpha.1+2"); }
public void NextVersionCanBeInteger() { var contextBuilder = new GitVersionContextBuilder() .WithConfig(new Config { NextVersion = "2" }); var sut = new ConfigNextVersionVersionStrategy(); var baseVersion = sut.GetVersions(contextBuilder.Build()).Single(); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); }
public void ShouldNotBeIncremented() { var contextBuilder = new GitVersionContextBuilder() .WithConfig(new Config { NextVersion = "1.0.0" }); var sut = new ConfigNextVersionBaseVersionStrategy(); var baseVersion = sut.GetVersions(contextBuilder.Build()).Single(); baseVersion.ShouldIncrement.ShouldBe(false); baseVersion.SemanticVersion.ToString().ShouldBe("1.0.0"); }
private static BaseVersion GetBaseVersion(Config config = null) { var contextBuilder = new GitVersionContextBuilder(); if (config != null) { contextBuilder = contextBuilder.WithConfig(config); } contextBuilder.Build(); var strategy = contextBuilder.ServicesProvider.GetServiceForType <IVersionStrategy, ConfigNextVersionVersionStrategy>(); return(strategy.GetVersions().SingleOrDefault()); }
public void ShouldNotFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config() { Ignore = fakeIgnoreConfig }).Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(2), new MockCommit(), null); var sut = new BaseVersionCalculator(log, new TestVersionStrategy(version)); var baseVersion = sut.GetBaseVersion(context); baseVersion.Source.ShouldBe(version.Source); baseVersion.ShouldIncrement.ShouldBe(version.ShouldIncrement); baseVersion.SemanticVersion.ShouldBe(version.SemanticVersion); }
public void DoesNotIncrementWhenBaseVersionSaysNotTo() { var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 1, "master", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now); var sp = ConfigureServices(services => { services.AddSingleton <IBaseVersionCalculator>(new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit())); services.AddSingleton <IMetaDataCalculator>(new TestMetaDataCalculator(semanticVersionBuildMetaData)); }); var nextVersionCalculator = sp.GetService <INextVersionCalculator>(); var context = new GitVersionContextBuilder().WithConfig(new Config()).Build(); var version = nextVersionCalculator.FindVersion(context); version.ToString().ShouldBe("1.0.0"); }
public void ShouldNotAllowIncrementOfVersion() { // When a branch is merged in you want to start building stable packages of that version // So we shouldn't bump the version var context = new GitVersionContextBuilder().WithRepository(new MockRepository { Head = new MockBranch("master") { new MockCommit { MessageEx = "Merge branch 'hotfix-0.1.5'", ParentsEx = GetParents(true) } } }).Build(); var sut = new MergeMessageBaseVersionStrategy(); var baseVersion = sut.GetVersions(context).Single(); baseVersion.ShouldIncrement.ShouldBe(false); }
public void PreReleaseTagCanUseBranchName() { var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()); var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(2, "develop", "b1a34e", DateTimeOffset.Now); var sut = new NextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData)); var config = new Config(); config.Branches.Add("custom/", new BranchConfig { Tag = "useBranchName" }); var context = new GitVersionContextBuilder() .WithConfig(config) .WithDevelopBranch() .AddBranch("custom/foo") .Build(); var version = sut.FindVersion(context); version.ToString("f").ShouldBe("1.0.0-foo.1+2"); }
public void ShouldNotFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config() { Ignore = fakeIgnoreConfig }).Build(); var version = new BaseVersion("dummy", false, new SemanticVersion(2), new MockCommit(), null); var sut = new BaseVersionCalculator(new TestVersionStrategy(version)); var baseVersion = sut.GetBaseVersion(context); baseVersion.Source.ShouldBe(version.Source); baseVersion.ShouldIncrement.ShouldBe(version.ShouldIncrement); baseVersion.SemanticVersion.ShouldBe(version.SemanticVersion); }
static void AssertMergeMessage(string message, string expectedVersion, List<Commit> parents) { var commit = new MockCommit { MessageEx = message, ParentsEx = parents }; var context = new GitVersionContextBuilder() .WithRepository(new MockRepository { Head = new MockBranch("master") { commit, new MockCommit() } }) .Build(); var sut = new MergeMessageBaseVersionStrategy(); var baseVersion = sut.GetVersions(context).SingleOrDefault(); if (expectedVersion == null) { baseVersion.ShouldBe(null); } else { baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } }