Skip to content

Commit

Permalink
Drop support for EOL .NET versions, remove obsolete tests
Browse files Browse the repository at this point in the history
and update test matrix.

Dropping support from tests for versions of .NET that are now EOL.
Removing tests that are rendered obsolete by recent changes.
Updating the test matrix for the latest OS releases.

Closes #76
  • Loading branch information
nicrowe committed Sep 12, 2024
1 parent c91e1c4 commit b9d3de7
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 212 deletions.
77 changes: 56 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,26 @@ jobs:
fail-fast: false
matrix:
container_image:
- quay.io/centos/centos:stream8
- quay.io/centos/centos:stream9
- registry.fedoraproject.org/fedora:37
- registry.fedoraproject.org/fedora:38
- quay.io/centos/centos:stream10-development
- registry.fedoraproject.org/fedora:39
- registry.fedoraproject.org/fedora:40
- registry.fedoraproject.org/fedora:rawhide
- registry.access.redhat.com/ubi8
- registry.access.redhat.com/ubi9
dotnet_version:
- "6.0"
- "7.0"
- "8.0"
exclude:
- container_image: registry.fedoraproject.org/fedora:rawhide
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "6.0"
include:
- container_image: quay.io/centos/centos:stream9
dotnet_version: "8.0"
- container_image: registry.fedoraproject.org/fedora:40
- container_image: registry.fedoraproject.org/fedora:rawhide
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "9.0"


container:
image: ${{ matrix.container_image }}
Expand All @@ -38,13 +44,22 @@ jobs:
timeout-minutes: 5
run: |
set -euo pipefail
if command -v dnf; then
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make
elif command -v apk; then
apk add bash curl git icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ make zlib
curl -sSLO https://dot.net/v1/dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --channel ${{ matrix.dotnet_version }}
if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then
dnf install 'dnf-command(copr)' -y
cat /etc/os-release
if grep centos /etc/os-release ; then
dnf copr enable @dotnet-sig/dotnet-preview centos-stream-10-x86_64 -y
else
dnf copr enable @dotnet-sig/dotnet-preview -y
fi
dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }}
fi
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make
if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then
dnf install -y \
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
fi
- uses: actions/checkout@v2
Expand Down Expand Up @@ -80,20 +95,26 @@ jobs:
fail-fast: false
matrix:
container_image:
- quay.io/centos/centos:stream8
- quay.io/centos/centos:stream9
- registry.fedoraproject.org/fedora:37
- quay.io/centos/centos:stream10-development
- registry.fedoraproject.org/fedora:38
- registry.fedoraproject.org/fedora:39
- registry.fedoraproject.org/fedora:40
- registry.fedoraproject.org/fedora:rawhide
- registry.access.redhat.com/ubi8
- registry.access.redhat.com/ubi9
dotnet_version:
- "6.0"
- "7.0"
- "8.0"
exclude:
- container_image: registry.fedoraproject.org/fedora:rawhide
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "6.0"
include:
- container_image: quay.io/centos/centos:stream9
dotnet_version: "8.0"
- container_image: registry.fedoraproject.org/fedora:40
- container_image: registry.fedoraproject.org/fedora:rawhide
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "9.0"


container:
Expand All @@ -105,7 +126,23 @@ jobs:
timeout-minutes: 5
run: |
set -euo pipefail
if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then
dnf install 'dnf-command(copr)' -y
cat /etc/os-release
if grep centos /etc/os-release ; then
dnf copr enable @dotnet-sig/dotnet-preview centos-stream-10-x86_64 -y
else
dnf copr enable @dotnet-sig/dotnet-preview -y
fi
dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }}
fi
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make
if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then
dnf install -y \
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
fi
# We need to fetch the tags, so 'git tag' in 'make publish' below works
- uses: actions/checkout@v2
Expand All @@ -127,9 +164,7 @@ jobs:
- name: Install Test dependencies
timeout-minutes: 2
run: |
dnf install -y python3 wget \
$(grep '^Dependencies(dnf): ' dotnet-regular-tests/README.md | cut -d: -f2-) \
--skip-broken
dnf install -y python3 wget $(grep '^Dependencies(dnf): ' README.md | cut -d: -f2-) --skip-broken
- name: Run reproducers
run: |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "BashTestSpecificToDotNet2x",
"name": "BashTestSpecificToDotNet6x",
"enabled": true,
"requiresSdk": true,
"version": "2.x",
"version": "6.x",
"versionSpecific": true,
"type": "bash",
"cleanup": true,
Expand Down
File renamed without changes.
36 changes: 0 additions & 36 deletions Turkey.Tests/CsprojCompatibilityPatcherTest.cs

This file was deleted.

11 changes: 0 additions & 11 deletions Turkey.Tests/SourceBuildTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,6 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage messag
}
}

[Fact]
public async Task VerifyProdConFeedIsLookedUpAndThenTheFeedIsVerifiedToResolve()
{
var messageHandler = new ProdConHandler();
var client = new HttpClient(messageHandler);
var sourceBuild = new SourceBuild(client);

var feed = await sourceBuild.GetProdConFeedAsync(Version.Parse("3.1"));

Assert.Equal(FAKE_FEED, feed);
}

[Fact]
public async Task VerifyProdConFeedIsNotUsedForNewReleases()
Expand Down
11 changes: 2 additions & 9 deletions Turkey/CsprojCompatibilityPatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,8 @@ public string Patch(string originalCsprojContents, Version newRuntime)
{
var pattern = @"<TargetFramework>net(?:coreapp)?\d\.\d+</TargetFramework>";
var versionString = newRuntime.MajorMinor;
string replacement = null;
if (newRuntime.Major < 4)
{
replacement = $"<TargetFramework>netcoreapp{versionString}</TargetFramework>";
}
else
{
replacement = $"<TargetFramework>net{versionString}</TargetFramework>";
}
var replacement = $"<TargetFramework>net{versionString}</TargetFramework>";

var output = Regex.Replace(originalCsprojContents, pattern, replacement);

return output;
Expand Down
30 changes: 0 additions & 30 deletions Turkey/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,25 +152,6 @@ public static async Task<string> GenerateNuGetConfigIfNeededAsync(string additio
var nuget = new NuGet(client);
var sourceBuild = new SourceBuild(client);

if (netCoreAppVersion.Major < 4)
{
try
{
var prodConUrl = await GetProdConFeedUrlIfNeededAsync(nuget, sourceBuild, netCoreAppVersion);
if (!string.IsNullOrEmpty(prodConUrl))
{
prodConUrl = prodConUrl.Trim();
Console.WriteLine($"Packages are not live on nuget.org; using {prodConUrl} as additional package source");
urls.Add(prodConUrl);
}
}
catch (HttpRequestException exception)
{
Console.WriteLine("WARNING: failed to get ProdCon url. Ignoring Exception:");
Console.WriteLine(exception.ToString());
}
}

string nugetConfig = null;
if (useSourceBuildNuGetConfig)
{
Expand Down Expand Up @@ -233,17 +214,6 @@ public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version
return traits;
}

public static async Task<string> GetProdConFeedUrlIfNeededAsync(NuGet nuget, SourceBuild sourceBuild, Version netCoreAppVersion)
{
bool live = await nuget.IsPackageLiveAsync("runtime.linux-x64.Microsoft.NetCore.DotNetAppHost", netCoreAppVersion);
if (!live)
{
return await sourceBuild.GetProdConFeedAsync(netCoreAppVersion);
}

return null;
}

static async Task<int> Main(string[] args)
{
var rootCommand = new RootCommand(description: "A test runner for running standalone bash-based or xunit tests");
Expand Down
14 changes: 2 additions & 12 deletions Turkey/SourceBuild.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,8 @@ public SourceBuild(HttpClient client)

public string GetBranchContentUrl(Version version)
{
string url;
if (version.Major <= 3)
{
var branchName = "release/" + version.MajorMinor;
url = $"https://raw.githubusercontent.com/dotnet/source-build/{branchName}/";
}
else
{
var branchName = "release/" + version.MajorMinor + ".1xx";
url = $"https://raw.githubusercontent.com/dotnet/installer/{branchName}/";
}

var branchName = "release/" + version.MajorMinor + ".1xx";
var url = $"https://raw.githubusercontent.com/dotnet/installer/{branchName}/";
return url;
}

Expand Down
41 changes: 4 additions & 37 deletions Turkey/Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,45 +75,12 @@ public async Task<TestResult> RunAsync(Action<string> logger, CancellationToken

private void UpdateProjectFilesIfPresent()
{
if (SystemUnderTest.RuntimeVersion < Version.Parse("2.0"))
var csprojFile = $"{Directory.Name}.csproj";
var csprojPath = Path.Combine(this.Directory.FullName, csprojFile);
if (File.Exists(csprojPath))
{
var projectJsonPath = Path.Combine(this.Directory.FullName, "project.json");
if (File.Exists(projectJsonPath))
{
CopyProjectJsonFile();
}
}
else
{
var csprojFile = $"{Directory.Name}.csproj";
var csprojPath = Path.Combine(this.Directory.FullName, csprojFile);
if (File.Exists(csprojPath))
{
UpdateCsprojVersion(csprojPath);
}
}
}

private void CopyProjectJsonFile()
{
string majorMinor = "" + SystemUnderTest.RuntimeVersion.Major + SystemUnderTest.RuntimeVersion.Minor;
var fileName = $"resources/project{majorMinor}xunit.json";
var resourceLocation = FindResourceFile(fileName);
var source = resourceLocation;
var dest = Path.Combine(this.Directory.FullName, "project.json");
File.Copy(source, dest);
}

private static string FindResourceFile(string name)
{
var assemblyLocation = Assembly.GetExecutingAssembly().Location;
var dir = Path.GetDirectoryName(assemblyLocation);
var resourceLocation = Path.Combine(dir, name);
if (!File.Exists(resourceLocation))
{
throw new Exception($"Resource {name} at location {resourceLocation} does not exist");
UpdateCsprojVersion(csprojPath);
}
return resourceLocation;
}

private void UpdateCsprojVersion(string csprojPath)
Expand Down
27 changes: 0 additions & 27 deletions Turkey/resources/project10xunit.json

This file was deleted.

27 changes: 0 additions & 27 deletions Turkey/resources/project11xunit.json

This file was deleted.

0 comments on commit b9d3de7

Please sign in to comment.