diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 462c69f..2399f3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,20 +14,24 @@ jobs: fail-fast: false matrix: container_image: - - quay.io/centos/centos:stream8 + - docker.io/library/alpine:latest + - docker.io/library/alpine:edge - quay.io/centos/centos:stream9 - - registry.fedoraproject.org/fedora:37 - 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 + dotnet_version: "6.0" include: - - container_image: quay.io/centos/centos:stream9 - dotnet_version: "8.0" + - container_image: registry.fedoraproject.org/fedora:40 + dotnet_version: "9.0" container: image: ${{ matrix.container_image }} @@ -38,13 +42,31 @@ jobs: timeout-minutes: 5 run: | set -euo pipefail - if command -v dnf; then + cat /etc/os-release + if grep fedora /etc/os-release; then + if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then + dnf install 'dnf-command(copr)' -y + dnf copr enable @dotnet-sig/dotnet-preview -y + dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }} + fi 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 }} == *6* ]]; then + dnf install -y \ + dotnet-sdk-dbg-${{ matrix.dotnet_version }} \ + dotnet-runtime-dbg-${{ matrix.dotnet_version }} \ + aspnetcore-runtime-dbg-${{ matrix.dotnet_version }} + fi + elif grep alpine /etc/os-release; then + if grep edge /etc/os-release; then + echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories + fi + apk add dotnet-sdk-${{ matrix.dotnet_version }} dotnet-doc git make + if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then + apk add \ + dotnet-sdk-dbg-${{ matrix.dotnet_version }} \ + dotnet-runtime-dbg-${{ matrix.dotnet_version }} \ + aspnetcore-runtime-dbg-${{ matrix.dotnet_version }} + fi fi - uses: actions/checkout@v2 @@ -80,20 +102,24 @@ jobs: fail-fast: false matrix: container_image: - - quay.io/centos/centos:stream8 + - docker.io/library/alpine:latest + - docker.io/library/alpine:edge - quay.io/centos/centos:stream9 - - registry.fedoraproject.org/fedora:37 - 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 + dotnet_version: "6.0" include: - - container_image: quay.io/centos/centos:stream9 - dotnet_version: "8.0" + - container_image: registry.fedoraproject.org/fedora:40 + dotnet_version: "9.0" container: @@ -105,7 +131,32 @@ jobs: timeout-minutes: 5 run: | set -euo pipefail - dnf install -y dotnet-sdk-${{ matrix.dotnet_version }} git make + cat /etc/os-release + if grep fedora /etc/os-release ; then + if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then + dnf install 'dnf-command(copr)' -y + dnf copr enable @dotnet-sig/dotnet-preview -y + 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 + elif grep alpine /etc/os-release; then + if grep edge /etc/os-release; then + echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories + fi + apk add dotnet-sdk-${{ matrix.dotnet_version }} dotnet-doc git make + if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then + apk add \ + dotnet-sdk-dbg-${{ matrix.dotnet_version }} \ + dotnet-runtime-dbg-${{ matrix.dotnet_version }} \ + aspnetcore-runtime-dbg-${{ matrix.dotnet_version }} + fi + fi # We need to fetch the tags, so 'git tag' in 'make publish' below works - uses: actions/checkout@v2 @@ -127,9 +178,12 @@ 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 + if grep fedora /etc/os-release ; then + dnf install -y python3 wget $(grep '^Dependencies(dnf): ' README.md | cut -d: -f2-) --skip-broken + elif grep alpine /etc/os-release; then + apk add python3 wget curl $(grep '^Dependencies(apk): ' README.md | cut -d: -f2-) + echo -e '[PostgreSQL]\nDescription=PostgreSQL Unicode\nDriver=/usr/lib/psqlodbcw.so\nUsageCount=1' > /etc/odbcinst.ini + fi - name: Run reproducers run: | diff --git a/Samples/BashTestSpecificToDotNet2x/test.json b/Samples/BashTestSpecificToDotNet2x/test.json deleted file mode 100644 index cfa7c79..0000000 --- a/Samples/BashTestSpecificToDotNet2x/test.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "BashTestSpecificToDotNet2x", - "enabled": true, - "requiresSdk": true, - "version": "2.x", - "versionSpecific": true, - "type": "bash", - "cleanup": true, - "ignoredRIDs":[ - ] -} - diff --git a/Samples/BashTestSpecificToDotNet2x/test.sh b/Samples/BashTestSpecificToDotNet2x/test.sh deleted file mode 100755 index 3395065..0000000 --- a/Samples/BashTestSpecificToDotNet2x/test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -true diff --git a/Samples/BashTestSpecificToDotNet50/test.json b/Samples/BashTestSpecificToDotNet50/test.json deleted file mode 100644 index 8579aa2..0000000 --- a/Samples/BashTestSpecificToDotNet50/test.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "BashTestSpecificToDotNet50", - "enabled": true, - "requiresSdk": true, - "version": "50.0", - "versionSpecific": true, - "type": "bash", - "cleanup": true, - "ignoredRIDs":[ - ] -} - diff --git a/Samples/BashTestSpecificToDotNet50/test.sh b/Samples/BashTestSpecificToDotNet50/test.sh deleted file mode 100755 index 5b71ffd..0000000 --- a/Samples/BashTestSpecificToDotNet50/test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -false diff --git a/Turkey.Tests/CsprojCompatibilityPatcherTest.cs b/Turkey.Tests/CsprojCompatibilityPatcherTest.cs deleted file mode 100644 index f69e0e8..0000000 --- a/Turkey.Tests/CsprojCompatibilityPatcherTest.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; - -using Turkey; - -using Xunit; - -namespace Turkey.Tests -{ - public class CsprojCompatibilityPatcherTest - { - [Theory] - [InlineData("netcoreapp1.0", "2.1", "netcoreapp2.1")] - [InlineData("netcoreapp2.1", "3.1", "netcoreapp3.1")] - [InlineData("netcoreapp3.1", "3.1", "netcoreapp3.1")] - [InlineData("net5.0", "3.1", "netcoreapp3.1")] - [InlineData("net5.0", "2.1", "netcoreapp2.1")] - public void TargetFrameworksAreReplacedCorrectly(string currentTfm, string runtimeVersion, string expectedTfm) - { - Version newRuntimeVersion = Version.Parse(runtimeVersion); - string csproj = $@" - - - - {currentTfm} - - -"; - string patched = new CsprojCompatibilityPatcher().Patch(csproj, newRuntimeVersion); - Assert.Contains(expectedTfm, patched); - if (currentTfm != expectedTfm) - { - Assert.DoesNotContain(currentTfm, patched); - } - } - } -} diff --git a/Turkey.Tests/SourceBuildTest.cs b/Turkey.Tests/SourceBuildTest.cs index 3ce5f0b..bf6b112 100644 --- a/Turkey.Tests/SourceBuildTest.cs +++ b/Turkey.Tests/SourceBuildTest.cs @@ -48,17 +48,6 @@ protected override Task 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() diff --git a/Turkey/CsprojCompatibilityPatcher.cs b/Turkey/CsprojCompatibilityPatcher.cs index c676965..ce14067 100644 --- a/Turkey/CsprojCompatibilityPatcher.cs +++ b/Turkey/CsprojCompatibilityPatcher.cs @@ -14,15 +14,8 @@ public string Patch(string originalCsprojContents, Version newRuntime) { var pattern = @"net(?:coreapp)?\d\.\d+"; var versionString = newRuntime.MajorMinor; - string replacement = null; - if (newRuntime.Major < 4) - { - replacement = $"netcoreapp{versionString}"; - } - else - { - replacement = $"net{versionString}"; - } + var replacement = $"net{versionString}"; + var output = Regex.Replace(originalCsprojContents, pattern, replacement); return output; diff --git a/Turkey/Program.cs b/Turkey/Program.cs index 957a5aa..fba1d31 100644 --- a/Turkey/Program.cs +++ b/Turkey/Program.cs @@ -152,25 +152,6 @@ public static async Task 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) { @@ -233,17 +214,6 @@ public static IReadOnlySet CreateTraits(Version runtimeVersion, Version return traits; } - public static async Task 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 Main(string[] args) { var rootCommand = new RootCommand(description: "A test runner for running standalone bash-based or xunit tests"); diff --git a/Turkey/SourceBuild.cs b/Turkey/SourceBuild.cs index d12965b..ce847d9 100644 --- a/Turkey/SourceBuild.cs +++ b/Turkey/SourceBuild.cs @@ -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; } diff --git a/Turkey/Test.cs b/Turkey/Test.cs index 523395f..c1c528c 100644 --- a/Turkey/Test.cs +++ b/Turkey/Test.cs @@ -75,22 +75,11 @@ public async Task RunAsync(Action 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); - } + UpdateCsprojVersion(csprojPath); } }