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
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -426,3 +426,11 @@ dotnet_diagnostic.RCS1102.severity = suggestion

# RCS1213: Remove unused member declaration
dotnet_diagnostic.RCS1213.severity = warning

###############################
# Test Files
###############################
[*Tests.cs]

# Disable async suffix requirement for test methods
dotnet_naming_rule.async_methods_should_end_with_async.severity = none
7 changes: 2 additions & 5 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<Project>

<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
Expand All @@ -19,8 +18,6 @@

<!-- Testing -->
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="TUnit" Version="1.8.1" />
</ItemGroup>

</Project>
</Project>
5 changes: 5 additions & 0 deletions global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="TUnit" />
</ItemGroup>

<ItemGroup>
Expand Down
120 changes: 59 additions & 61 deletions tests/SimpleBranchVersioning.Tests/VersionCalculatorTests.cs
Original file line number Diff line number Diff line change
@@ -1,111 +1,109 @@
using Xunit;

namespace SimpleBranchVersioning.Tests;

public class VersionCalculatorTests
{
[Theory]
[InlineData("release/v1.2.3", "abc1234", "1.2.3", "1.2.3+abc1234", "1.2.3.0")]
[InlineData("release/1.2.3", "abc1234", "1.2.3", "1.2.3+abc1234", "1.2.3.0")]
[InlineData("release/v0.0.1", "def5678", "0.0.1", "0.0.1+def5678", "0.0.1.0")]
[InlineData("release/v10.20.30", "ghi9012", "10.20.30", "10.20.30+ghi9012", "10.20.30.0")]
public void Calculate_ReleaseBranch_ReturnsCorrectVersions(
[Test]
[Arguments("release/v1.2.3", "abc1234", "1.2.3", "1.2.3+abc1234", "1.2.3.0")]
[Arguments("release/1.2.3", "abc1234", "1.2.3", "1.2.3+abc1234", "1.2.3.0")]
[Arguments("release/v0.0.1", "def5678", "0.0.1", "0.0.1+def5678", "0.0.1.0")]
[Arguments("release/v10.20.30", "ghi9012", "10.20.30", "10.20.30+ghi9012", "10.20.30.0")]
public async Task Calculate_ReleaseBranch_ReturnsCorrectVersions(
string branch, string commitId, string expectedVersion, string expectedPackageVersion, string expectedAssemblyVersion)
{
var result = VersionCalculator.Calculate(branch, commitId);

Assert.Equal(expectedVersion, result.Version);
Assert.Equal(expectedPackageVersion, result.PackageVersion);
Assert.Equal(expectedAssemblyVersion, result.AssemblyVersion);
Assert.Equal(expectedAssemblyVersion, result.FileVersion);
Assert.Equal(expectedPackageVersion, result.InformationalVersion);
await Assert.That(result.Version).IsEqualTo(expectedVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
await Assert.That(result.AssemblyVersion).IsEqualTo(expectedAssemblyVersion);
await Assert.That(result.FileVersion).IsEqualTo(expectedAssemblyVersion);
await Assert.That(result.InformationalVersion).IsEqualTo(expectedPackageVersion);
}

[Theory]
[InlineData("release/v1.2.3-beta", "abc1234", "1.2.3-beta", "1.2.3-beta+abc1234", "1.2.3-beta.0")]
[InlineData("release/v1.2.3-rc.1", "abc1234", "1.2.3-rc.1", "1.2.3-rc.1+abc1234", "1.2.3-rc.1.0")]
[InlineData("release/1.0.0-alpha", "def5678", "1.0.0-alpha", "1.0.0-alpha+def5678", "1.0.0-alpha.0")]
public void Calculate_ReleaseBranchWithPrerelease_ReturnsCorrectVersions(
[Test]
[Arguments("release/v1.2.3-beta", "abc1234", "1.2.3-beta", "1.2.3-beta+abc1234", "1.2.3-beta.0")]
[Arguments("release/v1.2.3-rc.1", "abc1234", "1.2.3-rc.1", "1.2.3-rc.1+abc1234", "1.2.3-rc.1.0")]
[Arguments("release/1.0.0-alpha", "def5678", "1.0.0-alpha", "1.0.0-alpha+def5678", "1.0.0-alpha.0")]
public async Task Calculate_ReleaseBranchWithPrerelease_ReturnsCorrectVersions(
string branch, string commitId, string expectedVersion, string expectedPackageVersion, string expectedAssemblyVersion)
{
var result = VersionCalculator.Calculate(branch, commitId);

Assert.Equal(expectedVersion, result.Version);
Assert.Equal(expectedPackageVersion, result.PackageVersion);
Assert.Equal(expectedAssemblyVersion, result.AssemblyVersion);
await Assert.That(result.Version).IsEqualTo(expectedVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
await Assert.That(result.AssemblyVersion).IsEqualTo(expectedAssemblyVersion);
}

[Theory]
[InlineData("feature/login", "abc1234", "feature.login.abc1234", "0.0.0-feature.login+abc1234")]
[InlineData("feature/user-auth", "def5678", "feature.user-auth.def5678", "0.0.0-feature.user-auth+def5678")]
[InlineData("bugfix/issue-42", "ghi9012", "bugfix.issue-42.ghi9012", "0.0.0-bugfix.issue-42+ghi9012")]
[InlineData("hotfix/critical", "jkl3456", "hotfix.critical.jkl3456", "0.0.0-hotfix.critical+jkl3456")]
public void Calculate_FeatureOrBugfixBranch_ReturnsCorrectVersions(
[Test]
[Arguments("feature/login", "abc1234", "feature.login.abc1234", "0.0.0-feature.login+abc1234")]
[Arguments("feature/user-auth", "def5678", "feature.user-auth.def5678", "0.0.0-feature.user-auth+def5678")]
[Arguments("bugfix/issue-42", "ghi9012", "bugfix.issue-42.ghi9012", "0.0.0-bugfix.issue-42+ghi9012")]
[Arguments("hotfix/critical", "jkl3456", "hotfix.critical.jkl3456", "0.0.0-hotfix.critical+jkl3456")]
public async Task Calculate_FeatureOrBugfixBranch_ReturnsCorrectVersions(
string branch, string commitId, string expectedVersion, string expectedPackageVersion)
{
var result = VersionCalculator.Calculate(branch, commitId);

Assert.Equal(expectedVersion, result.Version);
Assert.Equal(expectedPackageVersion, result.PackageVersion);
Assert.Equal("0.0.0.0", result.AssemblyVersion);
Assert.Equal("0.0.0.0", result.FileVersion);
Assert.Equal(expectedPackageVersion, result.InformationalVersion);
await Assert.That(result.Version).IsEqualTo(expectedVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
await Assert.That(result.AssemblyVersion).IsEqualTo("0.0.0.0");
await Assert.That(result.FileVersion).IsEqualTo("0.0.0.0");
await Assert.That(result.InformationalVersion).IsEqualTo(expectedPackageVersion);
}

[Theory]
[InlineData("main", "abc1234", "main.abc1234", "0.0.0-main+abc1234")]
[InlineData("master", "def5678", "master.def5678", "0.0.0-master+def5678")]
[InlineData("develop", "ghi9012", "develop.ghi9012", "0.0.0-develop+ghi9012")]
public void Calculate_MainBranch_ReturnsCorrectVersions(
[Test]
[Arguments("main", "abc1234", "main.abc1234", "0.0.0-main+abc1234")]
[Arguments("master", "def5678", "master.def5678", "0.0.0-master+def5678")]
[Arguments("develop", "ghi9012", "develop.ghi9012", "0.0.0-develop+ghi9012")]
public async Task Calculate_MainBranch_ReturnsCorrectVersions(
string branch, string commitId, string expectedVersion, string expectedPackageVersion)
{
var result = VersionCalculator.Calculate(branch, commitId);

Assert.Equal(expectedVersion, result.Version);
Assert.Equal(expectedPackageVersion, result.PackageVersion);
Assert.Equal("0.0.0.0", result.AssemblyVersion);
await Assert.That(result.Version).IsEqualTo(expectedVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
await Assert.That(result.AssemblyVersion).IsEqualTo("0.0.0.0");
}

[Theory]
[InlineData("user/john/feature", "abc1234", "user.john.feature.abc1234", "0.0.0-user.john.feature+abc1234")]
[InlineData("refs/heads/main", "def5678", "refs.heads.main.def5678", "0.0.0-refs.heads.main+def5678")]
public void Calculate_NestedBranch_ReplacesAllSlashes(
[Test]
[Arguments("user/john/feature", "abc1234", "user.john.feature.abc1234", "0.0.0-user.john.feature+abc1234")]
[Arguments("refs/heads/main", "def5678", "refs.heads.main.def5678", "0.0.0-refs.heads.main+def5678")]
public async Task Calculate_NestedBranch_ReplacesAllSlashes(
string branch, string commitId, string expectedVersion, string expectedPackageVersion)
{
var result = VersionCalculator.Calculate(branch, commitId);

Assert.Equal(expectedVersion, result.Version);
Assert.Equal(expectedPackageVersion, result.PackageVersion);
await Assert.That(result.Version).IsEqualTo(expectedVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
}

[Fact]
public void Calculate_ReleaseWithoutVersion_TreatedAsNonReleaseBranch()
[Test]
public async Task Calculate_ReleaseWithoutVersion_TreatedAsNonReleaseBranch()
{
var result = VersionCalculator.Calculate("release/feature-x", "abc1234");

Assert.Equal("release.feature-x.abc1234", result.Version);
Assert.Equal("0.0.0-release.feature-x+abc1234", result.PackageVersion);
Assert.Equal("0.0.0.0", result.AssemblyVersion);
await Assert.That(result.Version).IsEqualTo("release.feature-x.abc1234");
await Assert.That(result.PackageVersion).IsEqualTo("0.0.0-release.feature-x+abc1234");
await Assert.That(result.AssemblyVersion).IsEqualTo("0.0.0.0");
}

[Theory]
[InlineData("release/v1.2.3", "abc1234", false, "1.2.3")]
[InlineData("feature/login", "abc1234", false, "0.0.0-feature.login")]
[InlineData("main", "def5678", false, "0.0.0-main")]
public void Calculate_WithoutMetadata_OmitsCommitId(
[Test]
[Arguments("release/v1.2.3", "abc1234", false, "1.2.3")]
[Arguments("feature/login", "abc1234", false, "0.0.0-feature.login")]
[Arguments("main", "def5678", false, "0.0.0-main")]
public async Task Calculate_WithoutMetadata_OmitsCommitId(
string branch, string commitId, bool includeMetadata, string expectedPackageVersion)
{
var result = VersionCalculator.Calculate(branch, commitId, includeMetadata);

Assert.Equal(expectedPackageVersion, result.PackageVersion);
Assert.Equal(expectedPackageVersion, result.InformationalVersion);
await Assert.That(result.PackageVersion).IsEqualTo(expectedPackageVersion);
await Assert.That(result.InformationalVersion).IsEqualTo(expectedPackageVersion);
}

[Fact]
public void Calculate_DefaultIncludesMetadata()
[Test]
public async Task Calculate_DefaultIncludesMetadata()
{
var result = VersionCalculator.Calculate("release/v1.0.0", "abc1234");

Assert.Equal("1.0.0+abc1234", result.PackageVersion);
await Assert.That(result.PackageVersion).IsEqualTo("1.0.0+abc1234");
}
}