Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/NerdBank.GitVersioning/ReleaseManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ private void UpdateVersion(LibGit2Context context, SemanticVersion oldVersion, S

if (!EqualityComparer<SemanticVersion>.Default.Equals(versionOptions.Version, newVersion))
{
if (versionOptions.VersionHeightPosition.HasValue && SemanticVersion.WillVersionChangeResetVersionHeight(versionOptions.Version, newVersion, versionOptions.VersionHeightPosition.Value))
if (versionOptions.VersionHeightOffset != -1 && versionOptions.VersionHeightPosition.HasValue && SemanticVersion.WillVersionChangeResetVersionHeight(versionOptions.Version, newVersion, versionOptions.VersionHeightPosition.Value))
{
// The version will be reset by this change, so remove the version height offset property.
versionOptions.VersionHeightOffset = null;
Expand Down
38 changes: 38 additions & 0 deletions test/Nerdbank.GitVersioning.Tests/ReleaseManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,44 @@ public void PrepareRelease_ResetsVersionHeightOffset()
Assert.Equal(expectedReleaseVersionOptions, releaseVersion);
}

[Fact]
public void PrepareRelease_DoesNotResetNegativeVersionHeightOffset()
{
// create and configure repository
this.InitializeSourceControl();

var initialVersionOptions = new VersionOptions
{
Version = SemanticVersion.Parse("1.0-beta"),
VersionHeightOffset = -1,
};

var expectedReleaseVersionOptions = new VersionOptions
{
Version = SemanticVersion.Parse("1.0"),
VersionHeightOffset = -1,
};

var expectedMainVersionOptions = new VersionOptions
{
Version = SemanticVersion.Parse("1.1-alpha"),
VersionHeightOffset = -1,
};

// create version.json
this.WriteVersionFile(initialVersionOptions);

var releaseManager = new ReleaseManager();
releaseManager.PrepareRelease(this.RepoPath);

this.SetContextToHead();
VersionOptions newVersion = this.Context.VersionFile.GetVersion();
Assert.Equal(expectedMainVersionOptions, newVersion);

VersionOptions releaseVersion = this.GetVersionOptions(committish: this.LibGit2Repository.Branches["v1.0"].Tip.Sha);
Assert.Equal(expectedReleaseVersionOptions, releaseVersion);
}

[Theory]
[InlineData("1.0-beta", "{0} Custom commit message pattern", "1.0 Custom commit message pattern")]
[InlineData("1.0-beta", "Custom commit message pattern - {0} custom message", "Custom commit message pattern - 1.0 custom message")]
Expand Down