Exemple #1
0
        private void AssertVariablesAreWrittenToFile(string f)
        {
            var writes          = new List <string>();
            var semanticVersion = new SemanticVersion
            {
                Major         = 1,
                Minor         = 2,
                Patch         = 3,
                PreReleaseTag = "beta1",
                BuildMetaData = "5"
            };

            semanticVersion.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
            semanticVersion.BuildMetaData.Sha        = "commitSha";

            var config = new TestEffectiveConfiguration();

            var variables = variableProvider.GetVariablesFor(semanticVersion, config, false);

            var j = new Jenkins(environment, log, f);

            j.WriteIntegration(writes.Add, variables);

            writes[1].ShouldBe("1.2.3-beta.1+5");

            File.Exists(f).ShouldBe(true);

            var props = File.ReadAllText(f);

            props.ShouldContain("GitVersion_Major=1");
            props.ShouldContain("GitVersion_Minor=2");
        }
Exemple #2
0
        public VersionVariables CalculateVersionVariables()
        {
            gitPreparer.Prepare(); //we need to prepare the repository before using it for version calculation

            var gitVersionOptions = options.Value;

            var cacheKey = cacheKeyFactory.Create(gitVersionOptions.ConfigInfo.OverrideConfig);

            var versionVariables = gitVersionOptions.Settings.NoCache ? default : gitVersionCache.LoadVersionVariablesFromDiskCache(cacheKey);

                                   if (versionVariables != null)
                                   {
                                       return(versionVariables);
                                   }

                                   var semanticVersion = nextVersionCalculator.FindVersion();

                                   versionVariables = variableProvider.GetVariablesFor(semanticVersion, context.Configuration, context.IsCurrentCommitTagged);

                                   if (gitVersionOptions.Settings.NoCache)
                                   {
                                       return(versionVariables);
                                   }
                                   try
                                   {
                                       gitVersionCache.WriteVariablesToDiskCache(cacheKey, versionVariables);
                                   }
                                   catch (AggregateException e)
                                   {
                                       log.Warning($"One or more exceptions during cache write:{System.Environment.NewLine}{e}");
                                   }

                                   return(versionVariables);
        }
        private VersionVariables ExecuteInternal(Arguments arguments)
        {
            var configuration = configProvider.Provide(overrideConfig: arguments.OverrideConfig);

            using var repo = new Repository(arguments.DotGitDirectory);
            var targetBranch      = repo.GetTargetBranch(arguments.TargetBranch);
            var gitVersionContext = new GitVersionContext(repo, log, targetBranch, configuration, commitId: arguments.CommitId);
            var semanticVersion   = nextVersionCalculator.FindVersion(gitVersionContext);

            return(variableProvider.GetVariablesFor(semanticVersion, gitVersionContext.Configuration, gitVersionContext.IsCurrentCommitTagged));
        }
Exemple #4
0
        public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string xml)
        {
            using var projectFileUpdater = new ProjectFileUpdater(log, fileSystem);

            var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
            var xmlRoot   = XElement.Parse(xml);

            projectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);

            var expectedXml = XElement.Parse(@"
<Project Sdk=""Microsoft.NET.Sdk"">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </PropertyGroup>
</Project>");

            xmlRoot.ToString().ShouldBe(expectedXml.ToString());
        }
Exemple #5
0
        private VersionVariables ExecuteInternal(string targetBranch, string commitId, Config overrideConfig)
        {
            var configuration = configProvider.Provide(overrideConfig: overrideConfig);

            using var repo = new Repository(gitPreparer.GetDotGitDirectory());

            var gitVersionContext = new GitVersionContext(repo, log, targetBranch, configuration, commitId: commitId);
            var semanticVersion   = nextVersionCalculator.FindVersion(gitVersionContext);

            return(variableProvider.GetVariablesFor(semanticVersion, gitVersionContext.Configuration, gitVersionContext.IsCurrentCommitTagged));
        }
        public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(string fileExtension)
        {
            var workingDir       = Path.GetTempPath();
            var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
            var fullPath         = Path.Combine(workingDir, assemblyInfoFile);
            var variables        = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);

            using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
            assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));

            fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
        }
        public void ProvidesVariablesInContinuousDeliveryModeForPreRelease()
        {
            var semVer = new SemanticVersion
            {
                Major         = 1,
                Minor         = 2,
                Patch         = 3,
                PreReleaseTag = "unstable.4",
                BuildMetaData = "5.Branch.develop"
            };

            semVer.BuildMetaData.VersionSourceSha = "versionSourceSha";
            semVer.BuildMetaData.Sha        = "commitSha";
            semVer.BuildMetaData.ShortSha   = "commitShortSha";
            semVer.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");


            var config = new TestEffectiveConfiguration();

            var vars = variableProvider.GetVariablesFor(semVer, config, false);

            JsonOutputFormatter.ToJson(vars).ShouldMatchApproved(c => c.SubFolder("Approved"));
        }
Exemple #8
0
        public void ShouldLogWarningWhenUsingDefaultInformationalVersionInCustomFormat()
        {
            var semVer = new SemanticVersion
            {
                Major = 1,
                Minor = 2,
                Patch = 3,
            };

#pragma warning disable CS0618 // Type or member is obsolete
            var propertyName = nameof(SemanticVersionFormatValues.DefaultInformationalVersion);
#pragma warning restore CS0618 // Type or member is obsolete
            var config = new TestEffectiveConfiguration(assemblyInformationalFormat: $"{{{propertyName}}}");
            variableProvider.GetVariablesFor(semVer, config, false);
            logMessages.ShouldContain(message => message.Trim().StartsWith("WARN") && message.Contains(propertyName), 1, $"Expected a warning to be logged when using the variable {propertyName} in a configuration format template");
        }
        private VersionVariables ExecuteInternal()
        {
            var semanticVersion = nextVersionCalculator.FindVersion();

            return(variableProvider.GetVariablesFor(semanticVersion, context.Configuration, context.IsCurrentCommitTagged));
        }