Skip to content

Commit a7ccc3c

Browse files
committed
Fill in test hole and fix the bugs it exposed
1 parent 2d9e57c commit a7ccc3c

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -580,11 +580,15 @@ public async Task BuildNumber_SetInCI(VersionOptions versionOptions, IReadOnlyDi
580580

581581
[Theory]
582582
[PairwiseData]
583-
public async Task BuildNumber_VariousOptions(bool isPublic, VersionOptions.CloudBuildNumberCommitWhere where, VersionOptions.CloudBuildNumberCommitWhen when, [CombinatorialValues(0, 1, 2)] int extraBuildMetadataCount)
583+
public async Task BuildNumber_VariousOptions(bool isPublic, VersionOptions.CloudBuildNumberCommitWhere where, VersionOptions.CloudBuildNumberCommitWhen when, [CombinatorialValues(0, 1, 2)] int extraBuildMetadataCount, [CombinatorialValues(1, 2)] int semVer)
584584
{
585585
var versionOptions = BuildNumberVersionOptionsBasis;
586586
versionOptions.CloudBuild.BuildNumber.IncludeCommitId.Where = where;
587587
versionOptions.CloudBuild.BuildNumber.IncludeCommitId.When = when;
588+
versionOptions.NuGetPackageVersion = new VersionOptions.NuGetPackageVersionOptions
589+
{
590+
SemVer = semVer,
591+
};
588592
this.WriteVersionFile(versionOptions);
589593
this.InitializeSourceControl();
590594

@@ -841,6 +845,8 @@ private void AssertStandardProperties(VersionOptions versionOptions, BuildResult
841845
expectedBuildMetadata += "." + string.Join(".", additionalBuildMetadata);
842846
}
843847

848+
string expectedBuildMetadataWithoutCommitId = additionalBuildMetadata.Any() ? $"+{string.Join(".", additionalBuildMetadata)}" : string.Empty;
849+
844850
Assert.Equal($"{version}", buildResult.AssemblyFileVersion);
845851
Assert.Equal($"{idAsVersion.Major}.{idAsVersion.Minor}.{idAsVersion.Build}{versionOptions.Version.Prerelease}{expectedBuildMetadata}", buildResult.AssemblyInformationalVersion);
846852

@@ -861,10 +867,13 @@ private void AssertStandardProperties(VersionOptions versionOptions, BuildResult
861867
Assert.Equal(expectedBuildMetadata, buildResult.SemVerBuildSuffix);
862868

863869
// NuGet is now SemVer 2.0 and will pass additional build metadata if provided
864-
bool semVer1 = (versionOptions?.NuGetPackageVersion ?? VersionOptions.NuGetPackageVersionOptions.DefaultInstance).SemVer == 1;
865-
string pkgVersionSuffix = buildResult.PublicRelease
866-
? (semVer1 ? string.Empty : expectedBuildMetadata)
867-
: (semVer1 ? $"-g{commitIdShort}" : $"-g{commitIdShort}{(additionalBuildMetadata.Any() ? "+" : string.Empty)}{string.Join(".", additionalBuildMetadata)}");
870+
bool semVer2 = (versionOptions?.NuGetPackageVersion ?? VersionOptions.NuGetPackageVersionOptions.DefaultInstance).SemVer == 2;
871+
string pkgVersionSuffix = buildResult.PublicRelease ? string.Empty : $"-g{commitIdShort}";
872+
if (semVer2)
873+
{
874+
pkgVersionSuffix += expectedBuildMetadataWithoutCommitId;
875+
}
876+
868877
Assert.Equal($"{idAsVersion.Major}.{idAsVersion.Minor}.{idAsVersion.Build}{GetSemVerAppropriatePrereleaseTag(versionOptions)}{pkgVersionSuffix}", buildResult.NuGetPackageVersion);
869878

870879
var buildNumberOptions = versionOptions.CloudBuild?.BuildNumber ?? new VersionOptions.CloudBuildNumberOptions();

src/NerdBank.GitVersioning/VersionOracle.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,20 +276,22 @@ public IDictionary<string, string> CloudBuildVersionVars
276276
/// </summary>
277277
/// <remarks>
278278
/// We always put the commit ID in the -prerelease tag for non-public releases.
279-
/// But for public releases, we don't include it since it may be confusing for NuGet.
279+
/// But for public releases, we don't include it in the +buildMetadata section since it may be confusing for NuGet.
280280
/// See https://github.com/AArnott/Nerdbank.GitVersioning/pull/132#issuecomment-307208561
281281
/// </remarks>
282282
private string SemVer2BuildMetadata =>
283-
FormatBuildMetadata(this.PublicRelease ? this.BuildMetadata : this.BuildMetadataWithCommitId, true);
283+
(this.PublicRelease ? string.Empty : this.GitCommitIdShortForNonPublicPrereleaseTag) + FormatBuildMetadata(this.BuildMetadata);
284284

285285
private string PrereleaseVersionSemVer1 => MakePrereleaseSemVer1Compliant(this.PrereleaseVersion, SemVer1NumericIdentifierPadding);
286286

287+
private string GitCommitIdShortForNonPublicPrereleaseTag => (string.IsNullOrEmpty(this.PrereleaseVersion) ? "-" : ".") + $"g{this.GitCommitIdShort}";
288+
287289
private VersionOptions.CloudBuildNumberOptions CloudBuildNumberOptions { get; }
288290

289291
private int VersionHeightWithOffset => this.VersionHeight + this.VersionHeightOffset;
290292

291-
private static string FormatBuildMetadata(IEnumerable<string> identifiers, bool asSemVer2prerelease = false) =>
292-
(identifiers?.Any() ?? false) ? (asSemVer2prerelease ? "." : "+") + string.Join(".", identifiers) : string.Empty;
293+
private static string FormatBuildMetadata(IEnumerable<string> identifiers) =>
294+
(identifiers?.Any() ?? false) ? "+" + string.Join(".", identifiers) : string.Empty;
293295

294296
private static string FormatBuildMetadataSemVerV1(IEnumerable<string> identifiers) =>
295297
(identifiers?.Any() ?? false) ? "-" + string.Join("-", identifiers) : string.Empty;

0 commit comments

Comments
 (0)