diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 462c69f..3f67139 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,20 +14,28 @@ 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 + - 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 + - registry.fedoraproject.org/fedora:rawhide + - quay.io/centos/centos:stream10-development + dotnet_version: "9.0" + container: image: ${{ matrix.container_image }} @@ -38,13 +46,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 @@ -80,20 +97,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: @@ -105,7 +128,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 @@ -127,9 +166,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: | diff --git a/Samples/BashTestSpecificToDotNet2x/test.json b/Samples/BashTestSpecificToDotNet6x/test.json similarity index 68% rename from Samples/BashTestSpecificToDotNet2x/test.json rename to Samples/BashTestSpecificToDotNet6x/test.json index cfa7c79..71b38f6 100644 --- a/Samples/BashTestSpecificToDotNet2x/test.json +++ b/Samples/BashTestSpecificToDotNet6x/test.json @@ -1,8 +1,8 @@ { - "name": "BashTestSpecificToDotNet2x", + "name": "BashTestSpecificToDotNet6x", "enabled": true, "requiresSdk": true, - "version": "2.x", + "version": "6.x", "versionSpecific": true, "type": "bash", "cleanup": true, diff --git a/Samples/BashTestSpecificToDotNet2x/test.sh b/Samples/BashTestSpecificToDotNet6x/test.sh similarity index 100% rename from Samples/BashTestSpecificToDotNet2x/test.sh rename to Samples/BashTestSpecificToDotNet6x/test.sh 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..818dc51 100644 --- a/Turkey/Test.cs +++ b/Turkey/Test.cs @@ -75,45 +75,12 @@ 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); - } - } - } - - 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) diff --git a/Turkey/resources/project10xunit.json b/Turkey/resources/project10xunit.json deleted file mode 100644 index cdd1bda..0000000 --- a/Turkey/resources/project10xunit.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "warningsAsErrors": true, - "debugType": "portable" - }, - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.1.1", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" - }, - "testRunner": "xunit", - "frameworks": { - "netcoreapp1.0": { - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.10" - } - }, - "imports": [ - "dotnet5.4", - "portable-net451+win8" - ] - } - } -} diff --git a/Turkey/resources/project11xunit.json b/Turkey/resources/project11xunit.json deleted file mode 100644 index 88503da..0000000 --- a/Turkey/resources/project11xunit.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "warningsAsErrors": true, - "debugType": "portable" - }, - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.3.0", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" - }, - "testRunner": "xunit", - "frameworks": { - "netcoreapp1.1": { - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.1.7" - } - }, - "imports": [ - "dotnet5.4", - "portable-net451+win8" - ] - } - } -}