public void NextVersionWithInvalidAutoIncrementThrows()
        {
            var opts = new VersionCalculationOptions()
            {
                AutoIncrement = VersionPart.None,
            };

            Assert.Throws <InvalidOperationException>(() => VersionCalculator.NextVersion(new SemVer(1, 0, 0), opts));
        }
        public void NextVersion(string versionStr, VersionPart part, string expectedNextStr)
        {
            var version      = SemVer.Parse(versionStr);
            var expectedNext = SemVer.Parse(expectedNextStr);
            var opts         = new VersionCalculationOptions()
            {
                AutoIncrement = part,
            };

            var actualNext = VersionCalculator.NextVersion(version, opts);

            actualNext.Should().Be(expectedNext);
        }
        public void CheckVersionBumps(string?versionStr, string?minVer, int height, string resultStr)
        {
            var options = new VersionCalculationOptions()
            {
                MinimumVersion = SemVer.Parse(minVer ?? "0.1.0"),
            };

            var version = versionStr is null ? (SemVer?)null: SemVer.Parse(versionStr);
            var result  = SemVer.Parse(resultStr);

            var gotVersion = VersionCalculator.FromTagInfomation(version, options, height);

            gotVersion.Should().Be(result);
            gotVersion.ToString().Should().Be(resultStr);
        }
Exemplo n.º 4
0
        private async Task <bool> ExecuteAsync()
        {
            var log = new MsBuildLogger(Log)
            {
                Verbosity = DecodeVerbosity(Verbosity, nameof(Verbosity)),
            };
            var commandRunner = new MsBuildCommandRunner(
                new SystemCommandRunner(),
                Log);

            var opts = new VersionCalculationOptions();
            {
                FilterTags = FilterTags.Trim();

                bool disableTagPrefix = bool.TryParse(DisableTagPrefix, out bool parsedBool) && parsedBool;
                if (disableTagPrefix)
                {
                    if (!string.IsNullOrWhiteSpace(TagPrefix))
                    {
                        throw new MsBuildException("TagPrefix cannot be set with DisablePrefix.");
                    }
                    opts.TagPrefix = "";
                }
                else if (!string.IsNullOrWhiteSpace(TagPrefix))
                {
                    opts.TagPrefix = TagPrefix;
                }

                if (!string.IsNullOrWhiteSpace(DefaultPrereleasePhase))
                {
                    opts.DefaultPrereleasePhase = DefaultPrereleasePhase;
                }

                if (!string.IsNullOrWhiteSpace(MinimumVersion))
                {
                    opts.MinimumVersion = DecodeVersion(
                        MinimumVersion, nameof(MinimumVersion));
                }

                if (!string.IsNullOrWhiteSpace(PrereleaseBaseHeight))
                {
                    opts.PrereleaseBaseHeight = DecodeInt(
                        PrereleaseBaseHeight, nameof(PrereleaseBaseHeight));
                }

                if (!string.IsNullOrWhiteSpace(VersionOverride))
                {
                    opts.VersionOverride = DecodeVersion(
                        VersionOverride, nameof(VersionOverride));
                }

                if (!string.IsNullOrWhiteSpace(BuildMetadata))
                {
                    opts.BuildMetadata = BuildMetadata;
                }

                if (!string.IsNullOrWhiteSpace(AutoIncrement))
                {
                    opts.AutoIncrement = DecodeVersionPart(
                        AutoIncrement, nameof(AutoIncrement));
                }
            }

            var version = opts.VersionOverride ?? new SemVer();

            if (opts.VersionOverride is null)
            {
                var repo = await GitRepoInspector.FromPath(ProjectDirectory, log, commandRunner);


                ITagFilter?tagFilter = null;
                if (!string.IsNullOrWhiteSpace(FilterTags))
                {
                    tagFilter = new CommandTagFilter(commandRunner, log, FilterTags, ProjectDirectory);
                }

                version = await VersionCalculator.FromRepository(repo, opts, log, tagFilter);
            }

            Version              = version.ToString();
            VersionMajor         = version.Major.ToString(CultureInfo.InvariantCulture);
            VersionMinor         = version.Minor.ToString(CultureInfo.InvariantCulture);
            VersionPatch         = version.Patch.ToString(CultureInfo.InvariantCulture);
            VersionPrerelease    = version.Prerelease ?? string.Empty;
            VersionBuildMetadata = version.BuildMetadata ?? string.Empty;
            return(true);
        }