public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing)
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     VersioningMode = versioningMode;
     GitTagPrefix = gitTagPrefix;
     Tag = tag;
     NextVersion = nextVersion;
     Increment = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget = trackMergeTarget;
     MajorVersionBumpMessage = majorVersionBumpMessage;
     MinorVersionBumpMessage = minorVersionBumpMessage;
     PatchVersionBumpMessage = patchVersionBumpMessage;
     CommitMessageIncrementing = commitMessageIncrementing;
 }
        private void VerifyAssemblyInfoFile(
            string assemblyFileContent,
            string fileName,
            AssemblyVersioningScheme versioningScheme     = AssemblyVersioningScheme.MajorMinorPatch,
            Action <IFileSystem, VersionVariables> verify = null)
        {
            fileSystem = Substitute.For <IFileSystem>();
            var version = new SemanticVersion
            {
                BuildMetaData = new SemanticVersionBuildMetaData("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0),
                Major         = 2,
                Minor         = 3,
                Patch         = 1
            };

            fileSystem.Exists(fileName).Returns(true);
            fileSystem.ReadAllText(fileName).Returns(assemblyFileContent);
            fileSystem.When(f => f.WriteAllText(fileName, Arg.Any <string>())).Do(c =>
            {
                assemblyFileContent = c.ArgAt <string>(1);
                fileSystem.ReadAllText(fileName).Returns(assemblyFileContent);
            });

            var config    = new TestEffectiveConfiguration(assemblyVersioningScheme: versioningScheme);
            var variables = variableProvider.GetVariablesFor(version, config, false);

            verify?.Invoke(fileSystem, variables);
        }
示例#3
0
        private static void VerifyAssemblyInfoFile(
            string assemblyFileContent,
            string fileName,
            AssemblyVersioningScheme versioningScheme            = AssemblyVersioningScheme.MajorMinorPatch,
            Action <Mock <IFileSystem>, VersionVariables> verify = null)
        {
            var version = new SemanticVersion
                          (
                major: 2,
                minor: 3,
                patch: 1,
                buildMetadata: new BuildMetadata(3, "foo", "hash", DateTimeOffset.Now)
                          );

            var fileSystem = new Mock <IFileSystem>();

            fileSystem.Setup(f => f.Exists(fileName))
            .Returns(true);

            fileSystem.Setup(f => f.ReadAllText(fileName))
            .Returns(assemblyFileContent);

            fileSystem.Setup(f => f.WriteAllText(fileName, It.IsAny <string>()))
            .Callback <string, string>((name, content) =>
            {
                fileSystem.Setup(f => f.ReadAllText(name))
                .Returns(content);
            });

            var config    = new TestEffectiveConfiguration(assemblyVersioningScheme: versioningScheme);
            var variables = version.ToVersionVariables(config);

            verify?.Invoke(fileSystem, variables);
        }
        public void GetAssemblyVersionTest(AssemblyVersioningScheme scheme, int major, int minor, int patch, int tag, string versionString)
        {
            var semVer          = new SemanticVersion(major, minor, patch, preReleaseTag: new PreReleaseTag("Test", tag));
            var assemblyVersion = semVer.GetAssemblyVersion(scheme);

            Assert.That(assemblyVersion, Is.EqualTo(versionString));
        }
示例#5
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     AssemblyFileVersioningScheme assemblyFileVersioningScheme,
     string?assemblyInformationalFormat,
     string?assemblyVersioningFormat,
     string?assemblyFileVersioningFormat,
     VersioningMode versioningMode, string?gitTagPrefix,
     string?tag, string?nextVersion, IncrementStrategy increment,
     string?branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string?tagNumberPattern,
     string?continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string?majorVersionBumpMessage,
     string?minorVersionBumpMessage,
     string?patchVersionBumpMessage,
     string?noBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing,
     int legacySemVerPaddding,
     int buildMetaDataPadding,
     int commitsSinceVersionSourcePadding,
     IEnumerable <IVersionFilter> versionFilters,
     bool tracksReleaseBranches,
     bool isCurrentBranchRelease,
     string?commitDateFormat,
     bool updateBuildNumber,
     int preReleaseWeight,
     int tagPreReleaseWeight)
 {
     AssemblyVersioningScheme     = assemblyVersioningScheme;
     AssemblyFileVersioningScheme = assemblyFileVersioningScheme;
     AssemblyInformationalFormat  = assemblyInformationalFormat;
     AssemblyVersioningFormat     = assemblyVersioningFormat;
     AssemblyFileVersioningFormat = assemblyFileVersioningFormat;
     VersioningMode     = versioningMode;
     GitTagPrefix       = gitTagPrefix;
     Tag                = tag;
     NextVersion        = nextVersion;
     Increment          = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget                 = trackMergeTarget;
     MajorVersionBumpMessage          = majorVersionBumpMessage;
     MinorVersionBumpMessage          = minorVersionBumpMessage;
     PatchVersionBumpMessage          = patchVersionBumpMessage;
     NoBumpMessage                    = noBumpMessage;
     CommitMessageIncrementing        = commitMessageIncrementing;
     LegacySemVerPadding              = legacySemVerPaddding;
     BuildMetaDataPadding             = buildMetaDataPadding;
     CommitsSinceVersionSourcePadding = commitsSinceVersionSourcePadding;
     VersionFilters                   = versionFilters;
     TracksReleaseBranches            = tracksReleaseBranches;
     IsCurrentBranchRelease           = isCurrentBranchRelease;
     CommitDateFormat                 = commitDateFormat;
     UpdateBuildNumber                = updateBuildNumber;
     PreReleaseWeight                 = preReleaseWeight;
     TagPreReleaseWeight              = tagPreReleaseWeight;
 }
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
    {
        var semanticVersion = new SemanticVersion
        {
            Major         = 2,
            Minor         = 3,
            Patch         = 4,
            BuildMetaData = new SemanticVersionBuildMetaData(5,
                                                             "master",
                                                             new ReleaseDate
            {
                OriginalCommitSha = "originalCommitSha",
                OriginalDate      = DateTimeOffset.Parse("2014-03-01 00:00:01Z"),
                CommitSha         = "commitSha",
                Date = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
            }),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder
        {
            SemanticVersion          = semanticVersion,
            AssemblyVersioningScheme = avs,
        };

        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText();

        Approvals.Verify(assemblyInfoText);
        var syntaxTree  = SyntaxTree.ParseText(assemblyInfoText);
        var references  = new[] { new MetadataFileReference(typeof(object).Assembly.Location), };
        var compilation = Compilation.Create("Greeter.dll", new CompilationOptions(OutputKind.NetModule), new[] { syntaxTree }, references);
        var emitResult  = compilation.Emit(new MemoryStream());

        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Info)));
    }
        public static AssemblyMetaData Process(
            SemanticVersion sv,
            AssemblyVersioningScheme scheme,
            bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion)
        {
            var    fileVersion = GetStrictAssemblyFileVersion(sv, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);
            string version;

            switch (scheme)
            {
            case AssemblyVersioningScheme.None:
                version = "1.0.0.0";
                break;

            case AssemblyVersioningScheme.Major:
                version = string.Format("{0}.0.0.0", sv.Major);
                break;

            case AssemblyVersioningScheme.MajorMinorPatch:
                version = GetStrictAssemblyFileVersion(sv, false);
                break;

            default:
                throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
            }

            return(new AssemblyMetaData(version, fileVersion));
        }
示例#8
0
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs, string assemblyInformationalFormat = null)
    {
        var semanticVersion = new SemanticVersion
        {
            Major         = 2,
            Minor         = 3,
            Patch         = 4,
            PreReleaseTag = "beta.5",
            BuildMetaData = new SemanticVersionBuildMetaData(6,
                                                             "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder();


        var config = new TestEffectiveConfiguration(assemblyVersioningScheme: avs, assemblyInformationalFormat: assemblyInformationalFormat);

        var versionVariables = VariableProvider.GetVariablesFor(semanticVersion, config, false);
        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(versionVariables, "Fake");

        Approvals.Verify(assemblyInfoText);

        var compilation = CSharpCompilation.Create("Fake.dll")
                          .WithOptions(new CSharpCompilationOptions(OutputKind.NetModule))
                          .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
                          .AddSyntaxTrees(CSharpSyntaxTree.ParseText(assemblyInfoText));

        var emitResult = compilation.Emit(new MemoryStream());

        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }
示例#9
0
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
     AssemblyInformationalVersioningScheme assemblyInformationalVersioningScheme = AssemblyInformationalVersioningScheme.FullInformationalVersion,
     VersioningMode versioningMode = VersioningMode.ContinuousDelivery,
     string gitTagPrefix           = "v",
     string tag                = "",
     string nextVersion        = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false,
     string majorMessage   = null,
     string minorMessage   = null,
     string patchMessage   = null,
     CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
     int legacySemVerPadding  = 4,
     int buildMetaDataPadding = 4) :
     base(assemblyVersioningScheme, assemblyInformationalVersioningScheme, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
          branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
          trackMergeTarget,
          majorMessage, minorMessage, patchMessage,
          commitMessageMode, legacySemVerPadding, buildMetaDataPadding)
 {
 }
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
    {
        var semanticVersion = new SemanticVersion
        {
            Major = 2,
            Minor = 3,
            Patch = 4,
            BuildMetaData = new SemanticVersionBuildMetaData(5,
                "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder
        {
            CachedVersion = new CachedVersion
            {
                SemanticVersion = semanticVersion
            },
        };

        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(new TestEffectiveConfiguration(assemblyVersioningScheme: avs));
        Approvals.Verify(assemblyInfoText);

        var compilation = CSharpCompilation.Create("Fake.dll")
        .WithOptions(new CSharpCompilationOptions(OutputKind.NetModule))
        .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
        .AddSyntaxTrees(CSharpSyntaxTree.ParseText(assemblyInfoText));

        var emitResult = compilation.Emit(new MemoryStream());
        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }
        public void AssemblyVersion(
            int major, int minor, int patch, string buildMetadata,
            AssemblyVersioningScheme versioningScheme, bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion,
            string version, string fileVersion)
        {
            var semVer = new SemanticVersion
            {
                Major = major,
                Minor = minor,
                Patch = patch,
                BuildMetaData = buildMetadata
            };

            semVer.BuildMetaData.ReleaseDate = new ReleaseDate
                            {
                                OriginalCommitSha = "originalCommitSha",
                                OriginalDate = DateTimeOffset.Parse("2014-03-01 00:00:01Z"),
                                CommitSha = "commitSha",
                                Date = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
                            };

            var vars = VariableProvider.GetVariablesFor(semVer, versioningScheme, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);

            vars[VariableProvider.AssemblyVersion].ShouldBe(version);
            vars[VariableProvider.AssemblyFileVersion].ShouldBe(fileVersion);
        }
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme         = AssemblyVersioningScheme.MajorMinorPatch,
     AssemblyFileVersioningScheme assemblyFileVersioningScheme = AssemblyFileVersioningScheme.MajorMinorPatch,
     string?assemblyVersioningFormat     = null,
     string?assemblyFileVersioningFormat = null,
     string?assemblyInformationalFormat  = null,
     VersioningMode versioningMode       = VersioningMode.ContinuousDelivery,
     string gitTagPrefix       = "v",
     string tag                = "",
     string?nextVersion        = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string?tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false,
     string?majorMessage   = null,
     string?minorMessage   = null,
     string?patchMessage   = null,
     string?noBumpMessage  = null,
     CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
     int legacySemVerPadding                     = 4,
     int buildMetaDataPadding                    = 4,
     int commitsSinceVersionSourcePadding        = 4,
     IEnumerable <IVersionFilter>?versionFilters = null,
     bool tracksReleaseBranches                  = false,
     bool isRelease          = false,
     string commitDateFormat = "yyyy-MM-dd",
     bool updateBuildNumber  = false) :
     base(assemblyVersioningScheme,
          assemblyFileVersioningScheme,
          assemblyInformationalFormat,
          assemblyVersioningFormat,
          assemblyFileVersioningFormat,
          versioningMode,
          gitTagPrefix,
          tag,
          nextVersion,
          IncrementStrategy.Patch,
          branchPrefixToTrim,
          preventIncrementForMergedBranchVersion,
          tagNumberPattern,
          continuousDeploymentFallbackTag,
          trackMergeTarget,
          majorMessage,
          minorMessage,
          patchMessage,
          noBumpMessage,
          commitMessageMode,
          legacySemVerPadding,
          buildMetaDataPadding,
          commitsSinceVersionSourcePadding,
          versionFilters ?? Enumerable.Empty <IVersionFilter>(),
          tracksReleaseBranches,
          isRelease,
          commitDateFormat,
          updateBuildNumber,
          0,
          0)
 {
 }
示例#13
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing)
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     VersioningMode           = versioningMode;
     GitTagPrefix             = gitTagPrefix;
     Tag                = tag;
     NextVersion        = nextVersion;
     Increment          = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget          = trackMergeTarget;
     MajorVersionBumpMessage   = majorVersionBumpMessage;
     MinorVersionBumpMessage   = minorVersionBumpMessage;
     PatchVersionBumpMessage   = patchVersionBumpMessage;
     CommitMessageIncrementing = commitMessageIncrementing;
 }
示例#14
0
        public static string GetAssemblyVersion(
            this SemanticVersion sv,
            AssemblyVersioningScheme scheme)
        {
            switch (scheme)
            {
            case AssemblyVersioningScheme.Major:
                return($"{sv.Major}.0.0.0");

            case AssemblyVersioningScheme.MajorMinor:
                return($"{sv.Major}.{sv.Minor}.0.0");

            case AssemblyVersioningScheme.MajorMinorPatch:
                return($"{sv.Major}.{sv.Minor}.{sv.Patch}.0");

            case AssemblyVersioningScheme.MajorMinorPatchTag:
                return($"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}");

            case AssemblyVersioningScheme.None:
                return(null);

            default:
                throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme));
            }
        }
示例#15
0
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
    {
        var semanticVersion = new SemanticVersion
        {
            Major         = 2,
            Minor         = 3,
            Patch         = 4,
            BuildMetaData = new SemanticVersionBuildMetaData(5,
                                                             "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder
        {
            CachedVersion = new CachedVersion
            {
                SemanticVersion   = semanticVersion,
                MasterReleaseDate = DateTimeOffset.Parse("2014-03-01 00:00:01Z")
            },
        };

        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(new Config {
            AssemblyVersioningScheme = avs
        });

        Approvals.Verify(assemblyInfoText);

        var compilation = CSharpCompilation.Create("Fake.dll")
                          .WithOptions(new CSharpCompilationOptions(OutputKind.NetModule))
                          .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
                          .AddSyntaxTrees(CSharpSyntaxTree.ParseText(assemblyInfoText));

        var emitResult = compilation.Emit(new MemoryStream());

        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }
        public void AssemblyVersion(
            int major, int minor, int patch, string buildMetadata,
            AssemblyVersioningScheme versioningScheme, bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion,
            string version, string fileVersion)
        {
            var semVer = new SemanticVersion
            {
                Major         = major,
                Minor         = minor,
                Patch         = patch,
                BuildMetaData = buildMetadata
            };

            semVer.BuildMetaData.ReleaseDate = new ReleaseDate
            {
                OriginalCommitSha = "originalCommitSha",
                OriginalDate      = DateTimeOffset.Parse("2014-03-01 00:00:01Z"),
                CommitSha         = "commitSha",
                Date = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
            };

            var vars = VariableProvider.GetVariablesFor(semVer, versioningScheme, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);

            vars[VariableProvider.AssemblyVersion].ShouldBe(version);
            vars[VariableProvider.AssemblyFileVersion].ShouldBe(fileVersion);
        }
示例#17
0
    static void VerifyAssemblyVersion(ICompiler compiler, AssemblyVersioningScheme avs, string assemblyInformationalFormat = null)
    {
        var semanticVersion = new SemanticVersion
        {
            Major         = 2,
            Minor         = 3,
            Patch         = 4,
            PreReleaseTag = "beta.5",
            BuildMetaData = new SemanticVersionBuildMetaData(6,
                                                             "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };

        var config = new TestEffectiveConfiguration(assemblyVersioningScheme: avs, assemblyInformationalFormat: assemblyInformationalFormat);

        var versionVariables = VariableProvider.GetVariablesFor(semanticVersion, config, false);
        var assemblyInfoText = compiler.Builder.GetAssemblyInfoText(versionVariables, "Fake");

        assemblyInfoText.ShouldMatchApproved(c => c.UseCallerLocation().SubFolder(compiler.ApprovedSubFolder));

        var compilation = compiler.Compile(assemblyInfoText);

        var emitResult = compilation.Emit(new MemoryStream());

        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
    {
        var semanticVersion = new SemanticVersion
        {
            Major = 2,
            Minor = 3,
            Patch = 4,
            BuildMetaData = new SemanticVersionBuildMetaData(5,
                "master",
                new ReleaseDate
                {
                    OriginalCommitSha = "originalCommitSha",
                    OriginalDate = DateTimeOffset.Parse("2014-03-01 00:00:01Z"),
                    CommitSha = "commitSha",
                    Date = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
                }),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder
        {
            SemanticVersion = semanticVersion,
            AssemblyVersioningScheme = avs,
        };

        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText();
        Approvals.Verify(assemblyInfoText);
        var syntaxTree = SyntaxTree.ParseText(assemblyInfoText);
        var references = new[] { new MetadataFileReference(typeof(object).Assembly.Location), };
        var compilation = Compilation.Create("Greeter.dll", new CompilationOptions(OutputKind.NetModule), new[] { syntaxTree }, references);
        var emitResult = compilation.Emit(new MemoryStream());
        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Info)));
    }
        public static AssemblyMetaData Process(
            SemanticVersion sv,
            AssemblyVersioningScheme scheme,
            bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion)
        {
            var fileVersion = GetStrictAssemblyFileVersion(sv, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);
            string version;

            switch (scheme)
            {
                case AssemblyVersioningScheme.None:
                    version = "1.0.0.0";
                    break;

                case AssemblyVersioningScheme.Major:
                    version = string.Format("{0}.0.0.0", sv.Major);
                    break;

                case AssemblyVersioningScheme.MajorMinor:
                    version = string.Format("{0}.{1}.0.0", sv.Major, sv.Minor);
                    break;

                case AssemblyVersioningScheme.MajorMinorPatch:
                    version = GetStrictAssemblyFileVersion(sv, false);
                    break;

                default:
                    throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
            }

            return new AssemblyMetaData(version, fileVersion);
        }
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch, 
     string assemblyInformationalFormat = null,
     VersioningMode versioningMode = VersioningMode.ContinuousDelivery, 
     string gitTagPrefix = "v", 
     string tag = "",
     string nextVersion = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false,
     string majorMessage = null,
     string minorMessage = null,
     string patchMessage = null,
     CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
     int legacySemVerPadding = 4,
     int buildMetaDataPadding = 4,
     int commitsSinceVersionSourcePadding = 4) : 
         base(assemblyVersioningScheme, assemblyInformationalFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch, 
             branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
             trackMergeTarget,
             majorMessage, minorMessage, patchMessage,
             commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceVersionSourcePadding)
 {
 }
        public static string GetAssemblyVersion(
            this SemanticVersion sv,
            AssemblyVersioningScheme scheme)
        {
            switch (scheme)
            {
            case AssemblyVersioningScheme.Major:
                return(string.Format("{0}.0.0.0", sv.Major));

            case AssemblyVersioningScheme.MajorMinor:
                return(string.Format("{0}.{1}.0.0", sv.Major, sv.Minor));

            case AssemblyVersioningScheme.MajorMinorPatch:
                return(string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch));

            case AssemblyVersioningScheme.MajorMinorPatchTag:
                return(string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.PreReleaseTag.Number ?? 0));

            case AssemblyVersioningScheme.None:
                return(null);

            default:
                throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
            }
        }
示例#22
0
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme         = AssemblyVersioningScheme.MajorMinorPatch,
     AssemblyFileVersioningScheme assemblyFileVersioningScheme = AssemblyFileVersioningScheme.MajorMinorPatch,
     string assemblyInformationalFormat = null,
     VersioningMode versioningMode      = VersioningMode.ContinuousDelivery,
     string tagPrefix          = "v",
     string tag                = "",
     string nextVersion        = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false,
     string majorMessage   = null,
     string minorMessage   = null,
     string patchMessage   = null,
     string noBumpMessage  = null,
     CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
     int buildMetaDataPadding                    = 4,
     int commitsSinceVersionSourcePadding        = 4,
     IEnumerable <IVersionFilter> versionFilters = null,
     bool tracksReleaseBranches                  = false,
     bool isRelease          = false,
     string commitDateFormat = "yyyy-MM-dd",
     int taggedCommitsLimit  = 10) :
     base(assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, versioningMode, tagPrefix, tag, nextVersion, IncrementStrategyType.Patch,
          branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
          trackMergeTarget,
          majorMessage, minorMessage, patchMessage, noBumpMessage,
          commitMessageMode, buildMetaDataPadding, commitsSinceVersionSourcePadding,
          versionFilters ?? Enumerable.Empty <IVersionFilter>(),
          tracksReleaseBranches, isRelease, commitDateFormat,
          GetDefaultBaseVersionStrategies(), taggedCommitsLimit)
 {
 }
 public static string GetAssemblyVersion(this SemanticVersion sv, AssemblyVersioningScheme scheme)
 {
     return(scheme switch
     {
         AssemblyVersioningScheme.Major => $"{sv.Major}.0.0.0",
         AssemblyVersioningScheme.MajorMinor => $"{sv.Major}.{sv.Minor}.0.0",
         AssemblyVersioningScheme.MajorMinorPatch => $"{sv.Major}.{sv.Minor}.{sv.Patch}.0",
         AssemblyVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}",
         AssemblyVersioningScheme.None => null,
         _ => throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme))
     });
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     AssemblyFileVersioningScheme assemblyFileVersioningScheme,
     string assemblyInformationalFormat,
     VersioningMode versioningMode, string tagPrefix,
     string tag, string nextVersion, IncrementStrategyType increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     string noBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing,
     int buildMetaDataPadding,
     int commitsSinceVersionSourcePadding,
     IEnumerable <IVersionFilter> versionFilters,
     bool tracksReleaseBranches,
     bool isCurrentBranchRelease,
     string commitDateFormat,
     IEnumerable <IBaseVersionStrategy> baseVersionStrategies,
     int taggedCommitsLimit)
 {
     AssemblyVersioningScheme     = assemblyVersioningScheme;
     AssemblyFileVersioningScheme = assemblyFileVersioningScheme;
     AssemblyInformationalFormat  = assemblyInformationalFormat;
     VersioningMode     = versioningMode;
     TagPrefix          = tagPrefix;
     Tag                = tag;
     NextVersion        = nextVersion;
     Increment          = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget                 = trackMergeTarget;
     MajorVersionBumpMessage          = majorVersionBumpMessage;
     MinorVersionBumpMessage          = minorVersionBumpMessage;
     PatchVersionBumpMessage          = patchVersionBumpMessage;
     NoBumpMessage                    = noBumpMessage;
     CommitMessageIncrementing        = commitMessageIncrementing;
     BuildMetaDataPadding             = buildMetaDataPadding;
     CommitsSinceVersionSourcePadding = commitsSinceVersionSourcePadding;
     VersionFilters                   = versionFilters;
     TracksReleaseBranches            = tracksReleaseBranches;
     IsCurrentBranchRelease           = isCurrentBranchRelease;
     CommitDateFormat                 = commitDateFormat;
     BaseVersionStrategies            = baseVersionStrategies;
     TaggedCommitsLimit               = taggedCommitsLimit;
 }
示例#25
0
        void CreateTempAssemblyInfo(SemanticVersion semanticVersion, AssemblyVersioningScheme avs)
        {
            var assemblyInfoBuilder = new AssemblyInfoBuilder
            {
                SemanticVersion          = semanticVersion,
                AssemblyVersioningScheme = avs,
                AppendRevision           = AppendRevision
            };
            var assemblyInfo = assemblyInfoBuilder.GetAssemblyInfoText();

            var tempFileName = string.Format("AssemblyInfo_{0}_{1}.g.cs", Path.GetFileNameWithoutExtension(ProjectFile), Path.GetRandomFileName());

            AssemblyInfoTempFilePath = Path.Combine(TempFileTracker.TempPath, tempFileName);
            File.WriteAllText(AssemblyInfoTempFilePath, assemblyInfo);
        }
 public static string GetAssemblyFileVersion(
     this SemanticVersion sv,
     AssemblyVersioningScheme scheme)
 {
     switch (scheme)
     {
         case AssemblyVersioningScheme.Major:
         case AssemblyVersioningScheme.MajorMinor:
         case AssemblyVersioningScheme.MajorMinorPatch:
             return string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch);
         case AssemblyVersioningScheme.MajorMinorPatchMetadata:
             return string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.BuildMetaData.CommitsSinceTag ?? 0);
         default:
             throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
     }
 }
示例#27
0
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
     VersioningMode versioningMode = VersioningMode.ContinuousDelivery,
     string gitTagPrefix           = "v",
     string tag                = "",
     string nextVersion        = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false) :
     base(assemblyVersioningScheme, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
          branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
          trackMergeTarget)
 {
 }
 public TestEffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
     VersioningMode versioningMode = VersioningMode.ContinuousDelivery,
     string gitTagPrefix = "v",
     string tag = "",
     string nextVersion = null,
     string branchPrefixToTrim = "",
     bool preventIncrementForMergedBranchVersion = false,
     string tagNumberPattern = null,
     string continuousDeploymentFallbackTag = "ci",
     bool trackMergeTarget = false)
     : base(assemblyVersioningScheme, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch, 
             branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
             trackMergeTarget)
 {
 }
示例#29
0
        public static Dictionary <string, string> GetVariablesFor(
            SemanticVersion semanticVersion,
            AssemblyVersioningScheme assemblyVersioningScheme          = AssemblyVersioningScheme.MajorMinorPatch,
            bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion = true)
        {
            var bmd       = semanticVersion.BuildMetaData;
            var formatter = bmd.Branch == "develop" ? new CiFeedFormatter() : null;

            var assemblyMetaData = AssemblyVersionsGenerator.Process(
                semanticVersion, assemblyVersioningScheme, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);

            var variables = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase)
            {
                { Major, semanticVersion.Major.ToString() },
                { Minor, semanticVersion.Minor.ToString() },
                { Patch, semanticVersion.Patch.ToString() },
                { PreReleaseTag, semanticVersion.PreReleaseTag },
                { PreReleaseTagWithDash, semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null },
                { BuildMetaData, bmd },
                { FullBuildMetaData, bmd.ToString("f") },
                { MajorMinorPatch, string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch) },
                { SemVer, semanticVersion.ToString(null, formatter) },
                { LegacySemVer, semanticVersion.ToString("l", formatter) },
                { LegacySemVerPadded, semanticVersion.ToString("lp", formatter) },
                { AssemblySemVer, semanticVersion.ToString("j") + ".0" },
                { FullSemVer, semanticVersion.ToString("f", formatter) },
                { InformationalVersion, semanticVersion.ToString("i", formatter) },
                { ClassicVersion, string.Format("{0}.{1}", semanticVersion.ToString("j"), (bmd.CommitsSinceTag ?? 0)) },
                { ClassicVersionWithTag, string.Format("{0}.{1}{2}", semanticVersion.ToString("j"),
                                                       bmd.CommitsSinceTag ?? 0,
                                                       semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null) },
                { BranchName, bmd.Branch },
                { Sha, bmd.Sha },
                { AssemblyVersion, assemblyMetaData.Version },
                { AssemblyFileVersion, assemblyMetaData.FileVersion },
                { OriginalRelease, string.Format("{0}.{1}",
                                                 bmd.ReleaseDate.OriginalCommitSha,
                                                 bmd.ReleaseDate.OriginalDate.UtcDateTime.ToString("u")) },
            };

            // Use ToLower() to fix a bug where Beta and beta are different in NuGet
            variables[NuGetVersionV2] = variables[LegacySemVerPadded].ToLower();
            //variables[NuGetVersionV3] = variables[LegacySemVerPadded].ToLower(); // TODO: when v3 is released, determine what to use
            variables[NuGetVersion] = variables[NuGetVersionV2];

            return(variables);
        }
示例#30
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     string assemblyInformationalFormat,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     string noBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing,
     int legacySemVerPaddding,
     int buildMetaDataPadding,
     int commitsSinceVersionSourcePadding,
     IEnumerable<IVersionFilter> versionFilters,
     bool isCurrentBranchDevelop,
     bool isCurrentBranchRelease)
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     AssemblyInformationalFormat = assemblyInformationalFormat;
     VersioningMode = versioningMode;
     GitTagPrefix = gitTagPrefix;
     Tag = tag;
     NextVersion = nextVersion;
     Increment = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget = trackMergeTarget;
     MajorVersionBumpMessage = majorVersionBumpMessage;
     MinorVersionBumpMessage = minorVersionBumpMessage;
     PatchVersionBumpMessage = patchVersionBumpMessage;
     NoBumpMessage = noBumpMessage;
     CommitMessageIncrementing = commitMessageIncrementing;
     LegacySemVerPadding = legacySemVerPaddding;
     BuildMetaDataPadding = buildMetaDataPadding;
     CommitsSinceVersionSourcePadding = commitsSinceVersionSourcePadding;
     VersionFilters = versionFilters;
     IsCurrentBranchDevelop = isCurrentBranchDevelop;
     IsCurrentBranchRelease = isCurrentBranchRelease;
 }
示例#31
0
        private static void VerifyAssemblyInfoFile(
            string assemblyFileContent,
            string assemblyInfoFile,
            AssemblyVersioningScheme versioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
            Action <string> verify = null)
        {
            var workingDir = Path.GetTempPath();
            var fileName   = Path.Combine(workingDir, assemblyInfoFile);

            VerifyAssemblyInfoFile(assemblyFileContent, fileName, versioningScheme, (mock, variables) =>
            {
                using (var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, mock.Object, false))
                {
                    assemblyInfoFileUpdater.Update();
                    verify?.Invoke(mock.Object.ReadAllText(fileName));
                }
            });
        }
        public static string GetAssemblyFileVersion(
            this SemanticVersion sv,
            AssemblyVersioningScheme scheme)
        {
            switch (scheme)
            {
            case AssemblyVersioningScheme.Major:
            case AssemblyVersioningScheme.MajorMinor:
            case AssemblyVersioningScheme.MajorMinorPatch:
                return(string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch));

            case AssemblyVersioningScheme.MajorMinorPatchMetadata:
                return(string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.BuildMetaData.CommitsSinceTag ?? 0));

            default:
                throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
            }
        }
 public static string GetAssemblyVersion(
     this SemanticVersion sv,
     AssemblyVersioningScheme scheme)
 {
     switch (scheme)
     {
         case AssemblyVersioningScheme.Major:
             return string.Format("{0}.0.0.0", sv.Major);
         case AssemblyVersioningScheme.MajorMinor:
             return string.Format("{0}.{1}.0.0", sv.Major, sv.Minor);
         case AssemblyVersioningScheme.MajorMinorPatch:
             return string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch);
         case AssemblyVersioningScheme.MajorMinorPatchTag:
             return string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.PreReleaseTag.Number ?? 0);
         default:
             throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
     }
 }
        public static Dictionary<string, string> GetVariablesFor(
            SemanticVersion semanticVersion,
            AssemblyVersioningScheme assemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
            bool addNumberOfCommitsSinceTagOnMasterBranchToFileVersion = true)
        {
            var bmd = semanticVersion.BuildMetaData;
            var formatter = bmd.Branch == "develop" ? new CiFeedFormatter() : null;

            var assemblyMetaData = AssemblyVersionsGenerator.Process(
                semanticVersion, assemblyVersioningScheme, addNumberOfCommitsSinceTagOnMasterBranchToFileVersion);

            var variables = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
            {
                {Major, semanticVersion.Major.ToString()},
                {Minor, semanticVersion.Minor.ToString()},
                {Patch, semanticVersion.Patch.ToString()},
                {PreReleaseTag, semanticVersion.PreReleaseTag},
                {PreReleaseTagWithDash, semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null},
                {BuildMetaData, bmd},
                {FullBuildMetaData, bmd.ToString("f")},
                {MajorMinorPatch, string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch)},
                {SemVer, semanticVersion.ToString(null, formatter)},
                {LegacySemVer, semanticVersion.ToString("l", formatter)},
                {LegacySemVerPadded, semanticVersion.ToString("lp", formatter)},
                {AssemblySemVer, semanticVersion.ToString("j") + ".0"},
                {FullSemVer, semanticVersion.ToString("f", formatter)},
                {InformationalVersion, semanticVersion.ToString("i", formatter)},
                {ClassicVersion, string.Format("{0}.{1}", semanticVersion.ToString("j"), (bmd.CommitsSinceTag ?? 0))},
                {ClassicVersionWithTag, string.Format("{0}.{1}{2}", semanticVersion.ToString("j"),
                    bmd.CommitsSinceTag ?? 0,
                    semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null)},
                {BranchName, bmd.Branch},
                {Sha, bmd.Sha},
                {AssemblyVersion, assemblyMetaData.Version},
                {AssemblyFileVersion, assemblyMetaData.FileVersion},
                {OriginalRelease, string.Format("{0}.{1}",
                    bmd.ReleaseDate.OriginalCommitSha,
                    bmd.ReleaseDate.OriginalDate.UtcDateTime.ToString("u"))},
            };

            return variables;
        }
示例#35
0
        public static VersionVariables GetVariablesFor(
            SemanticVersion semanticVersion, AssemblyVersioningScheme assemblyVersioningScheme,
            VersioningMode mode, string continuousDeploymentFallbackTag,
            bool currentCommitIsTagged)
        {
            var bmd = semanticVersion.BuildMetaData;

            if (mode == VersioningMode.ContinuousDeployment && !currentCommitIsTagged)
            {
                semanticVersion = new SemanticVersion(semanticVersion);
                // Continuous Delivery always requires a pre-release tag unless the commit is tagged
                if (!semanticVersion.PreReleaseTag.HasTag())
                {
                    semanticVersion.PreReleaseTag.Name = continuousDeploymentFallbackTag;
                }

                // For continuous deployment the commits since tag gets promoted to the pre-release number
                semanticVersion.PreReleaseTag.Number          = semanticVersion.BuildMetaData.CommitsSinceTag;
                semanticVersion.BuildMetaData.CommitsSinceTag = null;
            }

            var variables = new VersionVariables(
                major: semanticVersion.Major.ToString(),
                minor: semanticVersion.Minor.ToString(),
                patch: semanticVersion.Patch.ToString(),
                preReleaseTag: semanticVersion.PreReleaseTag,
                preReleaseTagWithDash: semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null,
                buildMetaData: bmd,
                fullBuildMetaData: bmd.ToString("f"),
                majorMinorPatch: string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch),
                semVer: semanticVersion.ToString(),
                legacySemVer: semanticVersion.ToString("l"),
                legacySemVerPadded: semanticVersion.ToString("lp"),
                assemblySemVer: semanticVersion.GetAssemblyVersion(assemblyVersioningScheme),
                fullSemVer: semanticVersion.ToString("f"),
                informationalVersion: semanticVersion.ToString("i"),
                branchName: bmd.Branch,
                sha: bmd.Sha,
                commitDate: bmd.CommitDate.UtcDateTime.ToString("yyyy-MM-dd"));

            return(variables);
        }
示例#36
0
        private static void VerifyAssemblyInfoFile(
            string assemblyFileContent,
            string assemblyInfoFile,
            AssemblyVersioningScheme versioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
            Expression <Func <string, bool> > match   = null)
        {
            var workingDir = Path.GetTempPath();
            var fileName   = Path.Combine(workingDir, assemblyInfoFile);

            VerifyAssemblyInfoFile(assemblyFileContent, fileName, versioningScheme, (mock, variables) =>
            {
                using (var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, mock.Object, false))
                {
                    assemblyInfoFileUpdater.Update();

                    mock.Verify(f => f.WriteAllText(fileName, It.Is(match)),
                                Times.Once());
                }
            });
        }
示例#37
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     string assemblyInformationalFormat,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing,
     int legacySemVerPaddding,
     int buildMetaDataPadding,
     int commitsSinceVersionSourcePadding,
     IEnumerable <IVersionFilter> versionFilters
     )
 {
     AssemblyVersioningScheme    = assemblyVersioningScheme;
     AssemblyInformationalFormat = assemblyInformationalFormat;
     VersioningMode     = versioningMode;
     GitTagPrefix       = gitTagPrefix;
     Tag                = tag;
     NextVersion        = nextVersion;
     Increment          = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget                 = trackMergeTarget;
     MajorVersionBumpMessage          = majorVersionBumpMessage;
     MinorVersionBumpMessage          = minorVersionBumpMessage;
     PatchVersionBumpMessage          = patchVersionBumpMessage;
     CommitMessageIncrementing        = commitMessageIncrementing;
     LegacySemVerPadding              = legacySemVerPaddding;
     BuildMetaDataPadding             = buildMetaDataPadding;
     CommitsSinceVersionSourcePadding = commitsSinceVersionSourcePadding;
     VersionFilters = versionFilters;
 }
示例#38
0
        public static VersionVariables GetVariablesFor(
            SemanticVersion semanticVersion, AssemblyVersioningScheme assemblyVersioningScheme,
            VersioningMode mode, string continuousDeploymentFallbackTag,
            bool currentCommitIsTagged)
        {
            var bmd = semanticVersion.BuildMetaData;
            if (mode == VersioningMode.ContinuousDeployment && !currentCommitIsTagged)
            {
                semanticVersion = new SemanticVersion(semanticVersion);
                // Continuous Deployment always requires a pre-release tag unless the commit is tagged
                if (!semanticVersion.PreReleaseTag.HasTag())
                {
                    semanticVersion.PreReleaseTag.Name = continuousDeploymentFallbackTag;
                }

                // For continuous deployment the commits since tag gets promoted to the pre-release number
                semanticVersion.PreReleaseTag.Number = semanticVersion.BuildMetaData.CommitsSinceTag;
                semanticVersion.BuildMetaData.CommitsSinceTag = null;
            }

            var variables = new VersionVariables(
                major: semanticVersion.Major.ToString(),
                minor: semanticVersion.Minor.ToString(),
                patch: semanticVersion.Patch.ToString(),
                preReleaseTag: semanticVersion.PreReleaseTag,
                preReleaseTagWithDash: semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null,
                buildMetaData: bmd,
                fullBuildMetaData: bmd.ToString("f"),
                majorMinorPatch: string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch),
                semVer: semanticVersion.ToString(),
                legacySemVer: semanticVersion.ToString("l"),
                legacySemVerPadded: semanticVersion.ToString("lp"),
                assemblySemVer: semanticVersion.GetAssemblyVersion(assemblyVersioningScheme),
                fullSemVer: semanticVersion.ToString("f"),
                informationalVersion: semanticVersion.ToString("i"),
                branchName: bmd.Branch,
                sha: bmd.Sha,
                commitDate: bmd.CommitDate.UtcDateTime.ToString("yyyy-MM-dd"));

            return variables;
        }
示例#39
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget)
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     VersioningMode           = versioningMode;
     GitTagPrefix             = gitTagPrefix;
     Tag                = tag;
     NextVersion        = nextVersion;
     Increment          = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget = trackMergeTarget;
 }
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     string assemblyInformationalFormat,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     bool disableMergeMessageStrategy,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget,
     string majorVersionBumpMessage,
     string minorVersionBumpMessage,
     string patchVersionBumpMessage,
     CommitMessageIncrementMode commitMessageIncrementing,
     int legacySemVerPaddding,
     int buildMetaDataPadding
     )
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     AssemblyInformationalFormat = assemblyInformationalFormat;
     VersioningMode = versioningMode;
     GitTagPrefix = gitTagPrefix;
     Tag = tag;
     NextVersion = nextVersion;
     Increment = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     DisableMergeMessageStrategy = disableMergeMessageStrategy;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget = trackMergeTarget;
     MajorVersionBumpMessage = majorVersionBumpMessage;
     MinorVersionBumpMessage = minorVersionBumpMessage;
     PatchVersionBumpMessage = patchVersionBumpMessage;
     CommitMessageIncrementing = commitMessageIncrementing;
     LegacySemVerPadding = legacySemVerPaddding;
     BuildMetaDataPadding = buildMetaDataPadding;
 }
示例#41
0
 public EffectiveConfiguration(
     AssemblyVersioningScheme assemblyVersioningScheme,
     VersioningMode versioningMode, string gitTagPrefix,
     string tag, string nextVersion, IncrementStrategy increment,
     string branchPrefixToTrim,
     bool preventIncrementForMergedBranchVersion,
     string tagNumberPattern,
     string continuousDeploymentFallbackTag,
     bool trackMergeTarget)
 {
     AssemblyVersioningScheme = assemblyVersioningScheme;
     VersioningMode = versioningMode;
     GitTagPrefix = gitTagPrefix;
     Tag = tag;
     NextVersion = nextVersion;
     Increment = increment;
     BranchPrefixToTrim = branchPrefixToTrim;
     PreventIncrementForMergedBranchVersion = preventIncrementForMergedBranchVersion;
     TagNumberPattern = tagNumberPattern;
     ContinuousDeploymentFallbackTag = continuousDeploymentFallbackTag;
     TrackMergeTarget = trackMergeTarget;
 }
    static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
    {
        var semanticVersion = new SemanticVersion
        {
            Major = 2,
            Minor = 3,
            Patch = 4,
            PreReleaseTag = "beta.5",
            BuildMetaData = new SemanticVersionBuildMetaData(6,
                "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };
        var assemblyInfoBuilder = new AssemblyInfoBuilder();
        var versionVariables = VariableProvider.GetVariablesFor(semanticVersion, avs, VersioningMode.ContinuousDelivery, "ci", false);
        var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(versionVariables);
        Approvals.Verify(assemblyInfoText);

        var compilation = CSharpCompilation.Create("Fake.dll")
        .WithOptions(new CSharpCompilationOptions(OutputKind.NetModule))
        .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
        .AddSyntaxTrees(CSharpSyntaxTree.ParseText(assemblyInfoText));

        var emitResult = compilation.Emit(new MemoryStream());
        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }
    private static void VerifyAssemblyInfoFile(
        string assemblyFileContent,
        string fileName,
        AssemblyVersioningScheme versioningScheme = AssemblyVersioningScheme.MajorMinorPatch,
        Action<IFileSystem, VersionVariables> verify = null)
    {
        var fileSystem = Substitute.For<IFileSystem>();
        var version = new SemanticVersion
        {
            BuildMetaData = new SemanticVersionBuildMetaData(3, "foo", "hash", DateTimeOffset.Now),
            Major = 2,
            Minor = 3,
            Patch = 1
        };

        fileSystem.Exists(fileName).Returns(true);
        fileSystem.ReadAllText(fileName).Returns(assemblyFileContent);
        fileSystem.When(f => f.WriteAllText(fileName, Arg.Any<string>())).Do(c =>
        {
            assemblyFileContent = c.ArgAt<string>(1);
            fileSystem.ReadAllText(fileName).Returns(assemblyFileContent);
        });

        var config = new TestEffectiveConfiguration(assemblyVersioningScheme: versioningScheme);
        var variables = VariableProvider.GetVariablesFor(version, config, false);

        verify(fileSystem, variables);
    }
 public static string?GetAssemblyVersion(this SemanticVersion sv, AssemblyVersioningScheme scheme) =>
 scheme switch
 {
示例#45
0
        void CreateTempAssemblyInfo(SemanticVersion semanticVersion, AssemblyVersioningScheme avs)
        {
            var assemblyInfoBuilder = new AssemblyInfoBuilder
                                      {
                                          SemanticVersion = semanticVersion,
                                          AssemblyVersioningScheme = avs,
                                          AppendRevision = AppendRevision
                                      };
            var assemblyInfo = assemblyInfoBuilder.GetAssemblyInfoText();

            var tempFileName = string.Format("AssemblyInfo_{0}_{1}.g.cs", Path.GetFileNameWithoutExtension(ProjectFile), Path.GetRandomFileName());
            AssemblyInfoTempFilePath = Path.Combine(TempFileTracker.TempPath, tempFileName);
            File.WriteAllText(AssemblyInfoTempFilePath, assemblyInfo);
        }
    static void VerifyAssemblyVersion(ICompiler compiler, AssemblyVersioningScheme avs, string assemblyInformationalFormat = null)
    {
        var semanticVersion = new SemanticVersion
        {
            Major = 2,
            Minor = 3,
            Patch = 4,
            PreReleaseTag = "beta.5",
            BuildMetaData = new SemanticVersionBuildMetaData(6,
                "master", "commitSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")),
        };

        var config = new TestEffectiveConfiguration(assemblyVersioningScheme: avs, assemblyInformationalFormat: assemblyInformationalFormat);

        var versionVariables = VariableProvider.GetVariablesFor(semanticVersion, config, false);
        var assemblyInfoText = compiler.Builder.GetAssemblyInfoText(versionVariables, "Fake");
        assemblyInfoText.ShouldMatchApproved(c => c.UseCallerLocation().SubFolder(compiler.ApprovedSubFolder));

        var compilation = compiler.Compile(assemblyInfoText);

        var emitResult = compilation.Emit(new MemoryStream());
        Assert.IsTrue(emitResult.Success, string.Join(Environment.NewLine, emitResult.Diagnostics.Select(x => x.Descriptor)));
    }