From 8999fce15f842556bf79698e05f1dc272e86636f Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Mon, 6 Mar 2023 15:03:58 +0000 Subject: [PATCH] Update core dependencies This also removes testing on .NET Core 3.1, which is out of support. Signed-off-by: Jon Skeet --- .github/workflows/build.yml | 6 ------ .github/workflows/nuget.yml | 7 ------- .../CloudNative.CloudEvents.AspNetCoreSample.csproj | 2 +- samples/HttpSend/HttpSend.csproj | 2 +- .../CloudNative.CloudEvents.csproj | 4 ++-- .../CloudNative.CloudEvents.IntegrationTests.csproj | 6 +++--- .../CloudNative.CloudEvents.UnitTests.csproj | 5 ++--- .../DocumentationSamples.cs | 10 +++++++--- .../Http/HttpListenerExtensionsTest.cs | 10 +++++----- .../Http/HttpTestBase.cs | 3 ++- .../Http/HttpWebExtensionsTest.cs | 4 +++- 11 files changed, 26 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25e3094..c3d8a04 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,12 +17,6 @@ jobs: - name: Check out our repo uses: actions/checkout@v3 - # We need the .NET Core 3.1 runtime for testing - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 3.1.x - # Build with .NET 6.0 SDK - name: Setup .NET 6.0 uses: actions/setup-dotnet@v3 diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index db09cfd..61a037a 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -15,12 +15,6 @@ jobs: - name: Check out our repo uses: actions/checkout@v3 - # We need the .NET Core 3.1 runtime for testing - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 3.1.x - # Build with .NET 6.0 SDK - name: Setup .NET 6.0 uses: actions/setup-dotnet@v3 @@ -37,4 +31,3 @@ jobs: run: | dotnet pack -c Release -p:ContinuousIntegrationBuild=true -o $PWD/nuget for file in nuget/*.nupkg; do dotnet nuget push -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} $file; done - diff --git a/samples/CloudNative.CloudEvents.AspNetCoreSample/CloudNative.CloudEvents.AspNetCoreSample.csproj b/samples/CloudNative.CloudEvents.AspNetCoreSample/CloudNative.CloudEvents.AspNetCoreSample.csproj index 9e78809..0bf64b5 100644 --- a/samples/CloudNative.CloudEvents.AspNetCoreSample/CloudNative.CloudEvents.AspNetCoreSample.csproj +++ b/samples/CloudNative.CloudEvents.AspNetCoreSample/CloudNative.CloudEvents.AspNetCoreSample.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1;net6.0 + net6.0 diff --git a/samples/HttpSend/HttpSend.csproj b/samples/HttpSend/HttpSend.csproj index 77684bd..d834811 100644 --- a/samples/HttpSend/HttpSend.csproj +++ b/samples/HttpSend/HttpSend.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net6.0 diff --git a/src/CloudNative.CloudEvents/CloudNative.CloudEvents.csproj b/src/CloudNative.CloudEvents/CloudNative.CloudEvents.csproj index 9339a50..3561218 100644 --- a/src/CloudNative.CloudEvents/CloudNative.CloudEvents.csproj +++ b/src/CloudNative.CloudEvents/CloudNative.CloudEvents.csproj @@ -9,9 +9,9 @@ - + - + diff --git a/test/CloudNative.CloudEvents.IntegrationTests/CloudNative.CloudEvents.IntegrationTests.csproj b/test/CloudNative.CloudEvents.IntegrationTests/CloudNative.CloudEvents.IntegrationTests.csproj index 10bb0c7..da33b50 100644 --- a/test/CloudNative.CloudEvents.IntegrationTests/CloudNative.CloudEvents.IntegrationTests.csproj +++ b/test/CloudNative.CloudEvents.IntegrationTests/CloudNative.CloudEvents.IntegrationTests.csproj @@ -1,12 +1,12 @@  - netcoreapp3.1 + net6.0 - - + + diff --git a/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj b/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj index 985c0ba..ccf97a6 100644 --- a/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj +++ b/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj @@ -1,14 +1,13 @@  - netcoreapp3.1 - 8.0 + net6.0 enable - + all diff --git a/test/CloudNative.CloudEvents.UnitTests/DocumentationSamples.cs b/test/CloudNative.CloudEvents.UnitTests/DocumentationSamples.cs index c5d99ad..e4c814f 100644 --- a/test/CloudNative.CloudEvents.UnitTests/DocumentationSamples.cs +++ b/test/CloudNative.CloudEvents.UnitTests/DocumentationSamples.cs @@ -13,6 +13,7 @@ using System; using System.IO; using System.Linq; using System.Net.Http; +using System.Net.Http.Headers; using System.Threading.Tasks; using Xunit; @@ -160,12 +161,15 @@ namespace CloudNative.CloudEvents.UnitTests { request.Headers[header.Key] = header.Value.Single(); } - foreach (var header in message.Content.Headers) + if (message.Content?.Headers is HttpContentHeaders contentHeaders) { - request.Headers[header.Key] = header.Value.Single(); + foreach (var header in contentHeaders) + { + request.Headers[header.Key] = header.Value.Single(); + } } - var contentBytes = await message.Content.ReadAsByteArrayAsync(); + var contentBytes = await (message.Content?.ReadAsByteArrayAsync() ?? Task.FromResult(Array.Empty())); request.Body = new MemoryStream(contentBytes); return request; } diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs index 0e3b91f..862dbee 100644 --- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs +++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs @@ -196,7 +196,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests async context => await cloudEvent.CopyToHttpListenerResponseAsync(context.Response, ContentMode.Binary, formatter)); response.EnsureSuccessStatusCode(); var content = response.Content; - Assert.Equal("text/plain", content.Headers.ContentType.MediaType); + Assert.Equal("text/plain", content.Headers.ContentType!.MediaType); Assert.Equal("plain text", await content.ReadAsStringAsync()); Assert.Equal("1.0", response.Headers.GetValues("ce-specversion").Single()); Assert.Equal(cloudEvent.Type, response.Headers.GetValues("ce-type").Single()); @@ -229,7 +229,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests var response = await GetResponseAsync( async context => await cloudEvent.CopyToHttpListenerResponseAsync(context.Response, ContentMode.Binary, formatter)); var content = response.Content; - Assert.Equal("application/json", content.Headers.ContentType.MediaType); + Assert.Equal("application/json", content.Headers.ContentType!.MediaType); Assert.Equal("\"plain text\"", await content.ReadAsStringAsync()); } @@ -255,7 +255,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests async context => await cloudEvent.CopyToHttpListenerResponseAsync(context.Response, ContentMode.Structured, formatter)); response.EnsureSuccessStatusCode(); var content = response.Content; - Assert.Equal(MimeUtilities.MediaType + "+json", content.Headers.ContentType.MediaType); + Assert.Equal(MimeUtilities.MediaType + "+json", content.Headers.ContentType!.MediaType); var bytes = await content.ReadAsByteArrayAsync(); var parsed = new JsonEventFormatter().DecodeStructuredModeMessage(bytes, MimeUtilities.ToContentType(content.Headers.ContentType), extensionAttributes: null); @@ -284,7 +284,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests response.EnsureSuccessStatusCode(); var content = response.Content; - Assert.Equal(MimeUtilities.BatchMediaType + "+json", content.Headers.ContentType.MediaType); + Assert.Equal(MimeUtilities.BatchMediaType + "+json", content.Headers.ContentType!.MediaType); var bytes = await content.ReadAsByteArrayAsync(); var parsedBatch = new JsonEventFormatter().DecodeBatchModeMessage(bytes, MimeUtilities.ToContentType(content.Headers.ContentType), extensionAttributes: null); AssertBatchesEqual(batch, parsedBatch); @@ -299,7 +299,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests var guid = Guid.NewGuid().ToString(); request.Headers.Add(TestContextHeader, guid); - T result = default; + T result = default!; bool executed = false; PendingRequests[guid] = async context => diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs index 02430d5..0726928 100644 --- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs +++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs @@ -84,7 +84,8 @@ namespace CloudNative.CloudEvents.Http.UnitTests private async Task HandleContext(HttpListenerContext requestContext) { - var ctxHeaderValue = requestContext.Request.Headers[TestContextHeader]; + var ctxHeaderValue = requestContext.Request.Headers[TestContextHeader] + ?? throw new InvalidOperationException("Test context header was missing"); if (PendingRequests.TryRemove(ctxHeaderValue, out var pending)) { diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpWebExtensionsTest.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpWebExtensionsTest.cs index e6ab1ea..b551451 100644 --- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpWebExtensionsTest.cs +++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpWebExtensionsTest.cs @@ -13,6 +13,8 @@ using System.Threading.Tasks; using Xunit; using static CloudNative.CloudEvents.UnitTests.TestHelpers; +// Type or member is obsolete - this whole file is testing WebRequest integration. +#pragma warning disable SYSLIB0014 namespace CloudNative.CloudEvents.Http.UnitTests { public class HttpWebExtensionsTest : HttpTestBase @@ -163,7 +165,7 @@ namespace CloudNative.CloudEvents.Http.UnitTests var guid = Guid.NewGuid().ToString(); request.Headers.Add(TestContextHeader, guid); - T result = default; + T result = default!; bool executed = false; PendingRequests[guid] = async context =>