public void VerifyNullGuard2()
        {
            var commit = GitToolsTestingExtensions.CreateMockCommit();
            var sut    = new ShaVersionFilter(new[] { commit.Sha });

            Should.Throw <ArgumentNullException>(() => sut.Exclude(null, out _));
        }
        public void CanInheritVersioningMode(VersioningMode mode)
        {
            using var fixture = new EmptyRepositoryFixture();

            var config = new ConfigurationBuilder()
                         .Add(new Config {
                VersioningMode = mode
            })
                         .Build();

            const string branchName = MainBranch;

            var mockCommit = GitToolsTestingExtensions.CreateMockCommit();
            var mockBranch = GitToolsTestingExtensions.CreateMockBranch(branchName, 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 context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config);

            context.Configuration.VersioningMode.ShouldBe(mode);
        }
        public void WhenShaMismatchShouldNotExclude()
        {
            var commit  = GitToolsTestingExtensions.CreateMockCommit();
            var version = new BaseVersion("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  = GitToolsTestingExtensions.CreateMockCommit();
            var version = new BaseVersion("dummy", false, new SemanticVersion(1), commit, string.Empty);
            var sut     = new ShaVersionFilter(new[] { commit.Sha });

            sut.Exclude(version, out var reason).ShouldBeTrue();
            reason.ShouldNotBeNullOrWhiteSpace();
        }
Example #5
0
        public void WhenShaMismatchShouldNotExclude()
        {
            var commit   = GitToolsTestingExtensions.CreateMockCommit();
            var version  = new BaseVersion("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();
        }
Example #6
0
        public void WhenCommitShouldExcludeWithReason()
        {
            var commit     = GitToolsTestingExtensions.CreateMockCommit();
            var version    = new BaseVersion("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 UsesFirstBranchConfigWhenMultipleMatch()
        {
            using var fixture = new EmptyRepositoryFixture();

            var branchConfig = new BranchConfig
            {
                VersioningMode = VersioningMode.Mainline,
                Increment      = IncrementStrategy.None,
                PreventIncrementOfMergedBranchVersion = false,
                TrackMergeTarget      = false,
                TracksReleaseBranches = false,
                IsReleaseBranch       = false,
                SourceBranches        = new HashSet <string>()
            };
            var config = new ConfigurationBuilder()
                         .Add(new Config
            {
                VersioningMode = VersioningMode.ContinuousDelivery,
                Branches       =
                {
                    { "release/latest", new BranchConfig(branchConfig)
                            {
                                Increment = IncrementStrategy.None, Regex = "release/latest"
                            } },
                    { "release", new BranchConfig(branchConfig)
                            {
                                Increment = IncrementStrategy.Patch, Regex = "releases?[/-]"
                            } }
                }
            })
                         .Build();

            var releaseLatestBranch  = GitToolsTestingExtensions.CreateMockBranch("release/latest", GitToolsTestingExtensions.CreateMockCommit());
            var releaseVersionBranch = GitToolsTestingExtensions.CreateMockBranch("release/1.0.0", GitToolsTestingExtensions.CreateMockCommit());

            var branches = Substitute.For <IBranchCollection>();

            branches.GetEnumerator().Returns(_ => ((IEnumerable <IBranch>) new[] { releaseLatestBranch, releaseVersionBranch }).GetEnumerator());

            var mockRepository = Substitute.For <IGitRepository>();

            mockRepository.Branches.Returns(branches);
            mockRepository.Head.Returns(releaseLatestBranch);
            mockRepository.Commits.Returns(releaseLatestBranch.Commits);

            var latestContext = GetGitVersionContext(fixture.RepositoryPath, mockRepository, releaseLatestBranch.Name.Canonical, config);

            latestContext.Configuration.Increment.ShouldBe(IncrementStrategy.None);

            mockRepository.Head.Returns(releaseVersionBranch);
            var versionContext = GetGitVersionContext(fixture.RepositoryPath, mockRepository, releaseVersionBranch.Name.Canonical, config);

            versionContext.Configuration.Increment.ShouldBe(IncrementStrategy.Patch);
        }
Example #8
0
        private GitVersionContextBuilder AddBranch(string branchName)
        {
            var mockCommit = GitToolsTestingExtensions.CreateMockCommit();
            var mockBranch = GitToolsTestingExtensions.CreateMockBranch(branchName, mockCommit);

            var branches = repository.Branches.ToList();

            branches.Add(mockBranch);
            repository.Branches.GetEnumerator().Returns(_ => ((IEnumerable <IBranch>)branches).GetEnumerator());
            repository.Head.Returns(mockBranch);
            return(this);
        }
Example #9
0
        private static IGitRepository CreateRepository()
        {
            var mockCommit = GitToolsTestingExtensions.CreateMockCommit();
            var mockBranch = GitToolsTestingExtensions.CreateMockBranch(TestBase.MainBranch, mockCommit);
            var branches   = Substitute.For <IBranchCollection>();

            branches.GetEnumerator().Returns(_ => ((IEnumerable <IBranch>) new[] { mockBranch }).GetEnumerator());

            var mockRepository = Substitute.For <IGitRepository>();

            mockRepository.Branches.Returns(branches);
            mockRepository.Head.Returns(mockBranch);
            mockRepository.Commits.Returns(mockBranch.Commits);

            return(mockRepository);
        }
        public void UsesBranchSpecificConfigOverTopLevelDefaults()
        {
            using var fixture = new EmptyRepositoryFixture();

            const string branchName = "develop";
            var          config     = new ConfigurationBuilder()
                                      .Add(new Config
            {
                VersioningMode = VersioningMode.ContinuousDelivery,
                Branches       =
                {
                    {
                        branchName, new BranchConfig
                        {
                            VersioningMode = VersioningMode.ContinuousDeployment,
                            Tag            = "alpha"
                        }
                    }
                }
            })
                                      .Build();

            var main    = GitToolsTestingExtensions.CreateMockBranch(MainBranch, GitToolsTestingExtensions.CreateMockCommit());
            var develop = GitToolsTestingExtensions.CreateMockBranch(branchName, GitToolsTestingExtensions.CreateMockCommit());

            var branches = Substitute.For <IBranchCollection>();

            branches.GetEnumerator().Returns(_ => ((IEnumerable <IBranch>) new[] { main, develop }).GetEnumerator());

            var mockRepository = Substitute.For <IGitRepository>();

            mockRepository.Head.Returns(develop);
            mockRepository.Branches.Returns(branches);
            mockRepository.Commits.Returns(develop.Commits);

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

            context.Configuration.Tag.ShouldBe("alpha");
        }