Skip to content

Commit c4b64dc

Browse files
committed
Add new release status trait
Adding a new trait to the test runner that reports whether the version of .NET being tested is a released, preview, rc1 or rc2 version of .NET. Trait appears in the output as 'status='. To skip tests using this trait, in the tests JSON file enter: status=released status=preview status=rc Also updating test matrix
1 parent 4b256e1 commit c4b64dc

File tree

5 files changed

+80
-16
lines changed

5 files changed

+80
-16
lines changed

.github/workflows/ci.yml

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,24 @@ jobs:
1616
container_image:
1717
- quay.io/centos/centos:stream9
1818
- quay.io/centos/centos:stream10
19-
- registry.fedoraproject.org/fedora:40
2019
- registry.fedoraproject.org/fedora:41
20+
- registry.fedoraproject.org/fedora:42
2121
- registry.fedoraproject.org/fedora:rawhide
2222
- registry.access.redhat.com/ubi8
2323
- registry.access.redhat.com/ubi9
24+
- registry.access.redhat.com/ubi10
2425
dotnet_version:
2526
- "8.0"
2627
- "9.0"
28+
include:
29+
- container_image: registry.fedoraproject.org/fedora:42
30+
dotnet_version: "10.0"
31+
- container_image: registry.fedoraproject.org/fedora:rawhide
32+
dotnet_version: "10.0"
33+
- container_image: quay.io/centos/centos:stream10
34+
dotnet_version: "10.0"
35+
- container_image: registry.access.redhat.com/ubi10
36+
dotnet_version: "10.0"
2737

2838
container:
2939
image: ${{ matrix.container_image }}
@@ -34,12 +44,22 @@ jobs:
3444
timeout-minutes: 5
3545
run: |
3646
set -euo pipefail
47+
if [[ ${{ matrix.dotnet_version }} == 10.* ]]; then
48+
dnf install 'dnf-command(copr)' -y
49+
if grep centos /etc/os-release; then
50+
dnf copr enable @dotnet-sig/dotnet-preview centos-stream-10-x86_64 -y
51+
elif grep red_hat_enterprise_linux/10 /etc/os-release; then
52+
dnf copr enable @dotnet-sig/dotnet-preview rhel-10-x86_64 -y
53+
else
54+
dnf copr enable @dotnet-sig/dotnet-preview -y
55+
fi
56+
fi
3757
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make
3858
dnf install -y \
3959
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
4060
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
4161
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
42-
if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then
62+
if [[ ${{ matrix.dotnet_version }} != 8.* ]]; then
4363
dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }}
4464
fi
4565
@@ -78,14 +98,24 @@ jobs:
7898
container_image:
7999
- quay.io/centos/centos:stream9
80100
- quay.io/centos/centos:stream10
81-
- registry.fedoraproject.org/fedora:40
82101
- registry.fedoraproject.org/fedora:41
102+
- registry.fedoraproject.org/fedora:42
83103
- registry.fedoraproject.org/fedora:rawhide
84104
- registry.access.redhat.com/ubi8
85105
- registry.access.redhat.com/ubi9
106+
- registry.access.redhat.com/ubi10
86107
dotnet_version:
87108
- "8.0"
88109
- "9.0"
110+
include:
111+
- container_image: registry.fedoraproject.org/fedora:42
112+
dotnet_version: "10.0"
113+
- container_image: registry.fedoraproject.org/fedora:rawhide
114+
dotnet_version: "10.0"
115+
- container_image: quay.io/centos/centos:stream10
116+
dotnet_version: "10.0"
117+
- container_image: registry.access.redhat.com/ubi10
118+
dotnet_version: "10.0"
89119

90120
container:
91121
image: ${{ matrix.container_image }}
@@ -96,12 +126,22 @@ jobs:
96126
timeout-minutes: 5
97127
run: |
98128
set -euo pipefail
129+
if [[ ${{ matrix.dotnet_version }} == 10.* ]]; then
130+
dnf install 'dnf-command(copr)' -y
131+
if grep centos /etc/os-release; then
132+
dnf copr enable @dotnet-sig/dotnet-preview centos-stream-10-x86_64 -y
133+
elif grep red_hat_enterprise_linux/10 /etc/os-release; then
134+
dnf copr enable @dotnet-sig/dotnet-preview rhel-10-x86_64 -y
135+
else
136+
dnf copr enable @dotnet-sig/dotnet-preview -y
137+
fi
138+
fi
99139
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make
100140
dnf install -y \
101141
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
102142
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
103143
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
104-
if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then
144+
if [[ ${{ matrix.dotnet_version }} != 8.* ]]; then
105145
dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }}
106146
fi
107147

Turkey.Tests/ProgramTest.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Runtime.InteropServices;
44
using System.Linq;
55
using Xunit;
6+
using Microsoft.VisualBasic;
67

78
namespace Turkey.Tests
89
{
@@ -51,22 +52,24 @@ public static IEnumerable<object[]> SystemTraits_MemberData()
5152
Version runtimeVersion = Version.Parse("6.5");
5253
Version sdkVersion = Version.Parse("3.1");
5354

54-
string[] expectedVersionTraits = new[] { "version=6.5", "version=6" };
55+
var release = "released";
56+
57+
string[] expectedVersionTraits = new[] { "version=6.5", "version=6", "status=released" };
5558
string expectedArch = $"arch={OSArchitectureName}";
5659

5760
// default traits.
58-
yield return new object[] { runtimeVersion, sdkVersion, Array.Empty<string>(), false, Array.Empty<string>(), CombineTraits() };
61+
yield return new object[] { runtimeVersion, sdkVersion, release, Array.Empty<string>(), false, Array.Empty<string>(), CombineTraits() };
5962

6063
// 'runtime=mono'
61-
yield return new object[] { runtimeVersion, sdkVersion, Array.Empty<string>(), true, Array.Empty<string>(), CombineTraits(isMonoRuntime: true) };
64+
yield return new object[] { runtimeVersion, sdkVersion, release, Array.Empty<string>(), true, Array.Empty<string>(), CombineTraits(isMonoRuntime: true) };
6265

6366
// 'os=..' and 'rid=...' are added for the platform rids.
64-
yield return new object[] { runtimeVersion, sdkVersion, new[] { "linux-x64", "fedora.37-x64", "linux-musl-x64" }, false, Array.Empty<string>(),
67+
yield return new object[] { runtimeVersion, sdkVersion, release, new[] { "linux-x64", "fedora.37-x64", "linux-musl-x64" }, false, Array.Empty<string>(),
6568
CombineTraits(new[] { "os=linux", "os=fedora.37", "os=linux-musl",
6669
"rid=linux-x64", "rid=fedora.37-x64", "rid=linux-musl-x64" } ) };
6770

6871
// additional traits are added.
69-
yield return new object[] { runtimeVersion, sdkVersion, Array.Empty<string>(), false, new[] { "blue", "green" },
72+
yield return new object[] { runtimeVersion, sdkVersion, release, Array.Empty<string>(), false, new[] { "blue", "green" },
7073
CombineTraits(new[] { "blue", "green" } ) };
7174

7275
string[] CombineTraits(string[] expectedAdditionalTraits = null, bool isMonoRuntime = false)
@@ -79,9 +82,9 @@ string[] CombineTraits(string[] expectedAdditionalTraits = null, bool isMonoRunt
7982

8083
[Theory]
8184
[MemberData(nameof(SystemTraits_MemberData))]
82-
public void SystemTraits(Version runtimeVersion, Version sdkVersion, string[] rids, bool isMonoRuntime, string[] additionalTraits, string[] expectedTraits)
85+
public void SystemTraits(Version runtimeVersion, Version sdkVersion, string release, string[] rids, bool isMonoRuntime, string[] additionalTraits, string[] expectedTraits)
8386
{
84-
IReadOnlySet<string> systemTraits = Program.CreateTraits(runtimeVersion, sdkVersion, new List<string>(rids), isMonoRuntime, additionalTraits);
87+
IReadOnlySet<string> systemTraits = Program.CreateTraits(runtimeVersion, sdkVersion, new List<string>(rids), isMonoRuntime, release, additionalTraits);
8588

8689
Assert.Equal(expectedTraits.OrderBy(s => s), systemTraits.OrderBy(s => s));
8790
}

Turkey.Tests/VersionTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void VersionComparisons()
102102
public void TestToString()
103103
{
104104
var v1 = Version.Parse("1.0");
105-
Assert.Equal("1.0", v1.ToString());
105+
Assert.Equal("1.0.0", v1.ToString());
106106
}
107107
}
108108
}

Turkey/Program.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public static async Task<int> Run(string testRoot,
104104
var sanitizer = new EnvironmentVariableSanitizer();
105105
var envVars = sanitizer.SanitizeCurrentEnvironmentVariables();
106106

107-
var traits = CreateTraits(runtimeVersion, dotnet.LatestSdkVersion, platformIds, dotnet.IsMonoRuntime(runtimeVersion), trait);
107+
var traits = CreateTraits(runtimeVersion, dotnet.LatestSdkVersion, platformIds, dotnet.IsMonoRuntime(runtimeVersion), runtimeVersion.Release, trait);
108108
Console.WriteLine($"Tests matching these traits will be skipped: {string.Join(", ", traits.OrderBy(s => s))}.");
109109

110110
envVars["TestTargetFramework"] = $"net{runtimeVersion.Major}.{runtimeVersion.Minor}";
@@ -183,7 +183,7 @@ public static async Task<string> GenerateNuGetConfigIfNeededAsync(string additio
183183
}
184184

185185
#pragma warning disable CA1801 // Remove unused parameter
186-
public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version sdkVersion, List<string> rids, bool isMonoRuntime, IEnumerable<string> additionalTraits)
186+
public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version sdkVersion, List<string> rids, bool isMonoRuntime, string release, IEnumerable<string> additionalTraits)
187187
#pragma warning restore CA1801 // Remove unused parameter
188188
{
189189
var traits = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
@@ -192,6 +192,9 @@ public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version
192192
traits.Add($"version={runtimeVersion.Major}.{runtimeVersion.Minor}");
193193
traits.Add($"version={runtimeVersion.Major}");
194194

195+
// Add 'status=' trait.
196+
traits.Add($"status={runtimeVersion.Release}");
197+
195198
// Add 'os=', 'rid=' traits.
196199
foreach (var rid in rids)
197200
{

Turkey/Version.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public class Version: IComparable<Version>
1111
public int Minor { get; }
1212
public string MajorMinor { get; }
1313

14+
public string Release { get; }
15+
1416
private List<string> parts = null;
1517

1618
public static Version Parse(string input)
@@ -26,9 +28,10 @@ public static Version Parse(string input)
2628
{
2729
throw new FormatException();
2830
}
29-
if (parts.Count() == 1)
31+
if (parts.Count() <= 2)
3032
{
31-
parts.Add("0");
33+
while (parts.Count() <= 2)
34+
{ parts.Add("0"); }
3235
}
3336
int.Parse(parts[0], CultureInfo.InvariantCulture);
3437
int.Parse(parts[1], CultureInfo.InvariantCulture);
@@ -42,6 +45,21 @@ private Version(List<string> parts)
4245
this.Major = int.Parse(parts[0], CultureInfo.InvariantCulture);
4346
this.Minor = int.Parse(parts[1], CultureInfo.InvariantCulture);
4447
this.MajorMinor = this.Major + "." + this.Minor;
48+
49+
string status = "";
50+
if (parts[2].Contains("preview", StringComparison.Ordinal))
51+
{
52+
status = "preview";
53+
}
54+
else if (parts[2].Contains("rc", StringComparison.Ordinal))
55+
{
56+
status = "rc";
57+
}
58+
else
59+
{
60+
status = "released";
61+
}
62+
this.Release = status;
4563
}
4664

4765
public override string ToString()

0 commit comments

Comments
 (0)