dotnet-installer/test/core-sdk-tasks.Tests/CalculateTemplateVerionsTests.cs
Matt Mitchell f56648180f
Use aspnetcore version suffix for template install directory (#8625)
This change is required for RTM stable builds. When stable versions are generated the CalculateTemplateVersions task will fail.

For .NET 3.x, installer is partially on arcade. It uses its own versioning model, but the arcade generated versions are actually set (specifically VersionSuffix). So even when stable builds are generated, VersionSuffix is available. It is unused when the aspnetcore template versions are stable.

For .NET 5, installer is now fully on arcade versioning, which means VersionSuffix is not set when stable versions are generated.

Instead of using installer's version suffix if aspnetcore's template versions are unstable, use the version suffix of the aspnetcore template versions. This subtley affects the installer directory of the templates:

If the aspnetcore version is: 5.0.0-rc.1.1234.5
And the installer version is: 5.0.100-rc.1.9999.9
Then:

Template install dir before this change: .dotnet\templates\5.0.0-rc.1.9999.9
Template install dir after this change: .dotnet\templates\5.0.0-rc.1.1234.5
Of note: The overall template layout doesn't make a ton of sense. The aspnetcore template version is used for the install directory, but many different templates are put in this directory, including some that have completely different versions.
2020-09-22 14:32:10 -07:00

49 lines
1.7 KiB
C#

using FluentAssertions;
using Xunit;
using Microsoft.DotNet.Cli.Build;
namespace EndToEnd
{
public class CalculateTemplateVersionsTests
{
[Fact]
public void WhenAspNetCoreTemplateMajorVersionLowerthan3ItCanCalculateTemplateVersionsInStableBuilds()
{
var result = CalculateTemplateVersions.Calculate("3.1.0");
result.Should()
.Be(("3.1.1", "3.1", "3.1.1"),
"the patch is 1 higher than aspnetTemplateVersion " +
"due to https://github.com/dotnet/core-sdk/issues/6243");
}
[Fact]
public void WhenAspNetCoreTemplateMajorVersionLowerthan3ItCanCalculateTemplateVersionsInNonStableBuilds()
{
var result = CalculateTemplateVersions.Calculate("3.0.0-alpha.1.20071.6");
result.Should()
.Be(("3.0.1-alpha.1.20071.6", "3.0", "3.0.1"));
}
[Fact]
public void WhenAspNetCoreTemplateMajorVersionHigherthan3ItCanCalculateTemplateVersionsInStableBuilds()
{
var result = CalculateTemplateVersions.Calculate("5.1.0");
result.Should()
.Be(("5.1.0", "5.1", "5.1.0"),
"the patch align with AspNetCoreTemplateMajorVersion again, " +
"since there is no non-deterministic existing ComponentId under Major version 5.");
}
[Fact]
public void WhenAspNetCoreTemplateMajorVersionHigherthan3ItCanCalculateTemplateVersionsInNonStableBuilds()
{
var result = CalculateTemplateVersions.Calculate("5.0.0-alpha.1.20071.6");
result.Should()
.Be(("5.0.0-alpha.1.20071.6", "5.0", "5.0.0"));
}
}
}