Skip to content

Commit 4a30e3f

Browse files
committed
chore: .net framework bump
1 parent 68b3d49 commit 4a30e3f

File tree

11 files changed

+75
-334
lines changed

11 files changed

+75
-334
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ jobs:
231231

232232
# Run the compatibility tests
233233
- name: Run Tests
234-
run: make netstandard-compat-test fw=net481
234+
run: make netstandard-compat-test fw=net472
235235

236236
FSharp_Compatibility_Tests:
237237
runs-on: windows-2022
@@ -300,9 +300,9 @@ jobs:
300300
# .NET Standard notes:
301301
# - NET Standard 2.0 is compatible with minimum .NET Framework 4.6.1: https://docs.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-2-0
302302
# - NET Framework 4.6.1 is EOL after April 26, 2022, due to its security concerns (was affected by the SHA-1 crack): https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-framework
303-
# - GitHub's Windows 2022 runner only supports minimum .NET Framework 4.6.2 anyway: https://github.com/actions/virtual-environments/issues/5055#issuecomment-1040757930
303+
# - GitHub's Windows 2022 runner only supports minimum .NET Framework 4.7.2 anyway: https://github.com/actions/virtual-environments/issues/5055#issuecomment-1040757930
304304
# - .NET Standard is not a framework, but a set of shared APIs between the old .NET Framework and new .NET/.NET Core
305305
# - `EasyPost` targets .NET Standard 2.0, meaning it is compatible with specific versions of both .NET and .NET Framework: https://docs.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-2-0
306306
# - When you want to actually run code, however, you can't run it in .NET Standard. You have to run it in either .NET or .NET Framework: https://stackoverflow.com/a/48885500/13343799
307-
# - So, while `EasyPost` targets .NET Standard 2.0, `EasyPost.Tests`, the code we're actually executing, targets .NET Framework 4.6.2
307+
# - So, while `EasyPost` targets .NET Standard 2.0, `EasyPost.Tests`, the code we're actually executing, targets .NET Framework 4.7.2
308308
# - By extension, this is ensuring we are testing that the `EasyPost` source code can run in a .NET Framework environment

CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
# v6.10.0 (2025-03-11)
33
- Add custom webhook headers
44

5-
# v6.9.0 (2024-11-19)
5+
## Next Release
6+
7+
- Minimum .NET Framework is now v4.7.2
8+
9+
## v6.9.0 (2024-11-19)
610

711
- Add missing `CheckDeliveryAddress` parameter for `Claim.Create` parameter set
812
- Handle enums when running parameter interdependency checks
913

10-
# v6.8.1 (2024-10-31)
14+
## v6.8.1 (2024-10-31)
1115

1216
- Fixes HTTP query parameter serialization bug causing `TrackingCodes` to be ignored when listing trackers
1317

EasyPost.Compatibility.NetStandard/EasyPost.Compatibility.NetStandard.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net481</TargetFramework>
4+
<TargetFramework>net472</TargetFramework>
55
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
66
<RootNamespace>EasyPost.Compatibility.NetStandard</RootNamespace>
77
</PropertyGroup>

EasyPost.Compatibility.NetStandard/packages.lock.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"version": 1,
33
"dependencies": {
4-
".NETFramework,Version=v4.8.1": {
4+
".NETFramework,Version=v4.7.2": {
55
"Microsoft.NET.Test.Sdk": {
66
"type": "Direct",
77
"requested": "[17.3.0, 18.0.0)",
@@ -17,7 +17,7 @@
1717
"resolved": "1.0.3",
1818
"contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==",
1919
"dependencies": {
20-
"Microsoft.NETFramework.ReferenceAssemblies.net481": "1.0.3"
20+
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.3"
2121
}
2222
},
2323
"xunit": {
@@ -42,10 +42,10 @@
4242
"resolved": "17.3.0",
4343
"contentHash": "/xxz+e29F2V5pePtInjbLffoqWVTm60KCX87vSj2laNboeWq65WFJ634fGtBcMZO3VEfOmh9/XcoWEfLlWWG+g=="
4444
},
45-
"Microsoft.NETFramework.ReferenceAssemblies.net481": {
45+
"Microsoft.NETFramework.ReferenceAssemblies.net472": {
4646
"type": "Transitive",
4747
"resolved": "1.0.3",
48-
"contentHash": "Vv/20vgHS7VglVOVh8J3Iz/MA+VYKVRp9f7r2qiKBMuzviTOmocG70yq0Q8T5OTmCONkEAIJwETD1zhEfLkAXQ=="
48+
"contentHash": "0E7evZXHXaDYYiLRfpyXvCh+yzM2rNTyuZDI+ZO7UUqSc6GfjePiXTdqJGtgIKUwdI81tzQKmaWprnUiPj9hAw=="
4949
},
5050
"Newtonsoft.Json": {
5151
"type": "Transitive",

EasyPost.Integration/EasyPost.Integration.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net462;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
4+
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
55
<LangVersion>latest</LangVersion>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>

EasyPost.Integration/TestUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ internal static string NetVersion
8383
// ReSharper disable once RedundantAssignment
8484
// ReSharper disable once ConvertToConstant.Local
8585
string netVersion = "net";
86-
#if NET462
86+
#if NET472
8787
netVersion = "netstandard";
8888
#endif
8989

EasyPost.Tests/EasyPost.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net462;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
3+
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
44
<IsPackable>false</IsPackable>
55
<Configurations>Release;Debug</Configurations>
66
<Platforms>AnyCPU</Platforms>

EasyPost.Tests/TestUtils.cs

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ internal static string NetVersion
9494
// ReSharper disable once RedundantAssignment
9595
// ReSharper disable once ConvertToConstant.Local
9696
string netVersion = "net";
97-
#if NET462
97+
#if NET472
9898
netVersion = "netstandard";
9999
#endif
100100

@@ -191,81 +191,81 @@ public class MockRequestMatchRules(Method method, string resourceRegex)
191191
{
192192
internal Method Method { get; set; } = method;
193193

194-
internal string ResourceRegex { get; set; } = resourceRegex;
195-
}
194+
internal string ResourceRegex { get; set; } = resourceRegex;
195+
}
196196

197-
public class MockRequestResponseInfo(HttpStatusCode statusCode, string? content = null, object? data = null)
197+
public class MockRequestResponseInfo(HttpStatusCode statusCode, string? content = null, object? data = null)
198198
{
199199
internal HttpStatusCode StatusCode { get; set; } = statusCode;
200200

201-
internal string? Content { get; set; } = content ?? JsonSerialization.ConvertObjectToJson(data);
202-
}
201+
internal string? Content { get; set; } = content ?? JsonSerialization.ConvertObjectToJson(data);
202+
}
203203

204-
public class MockRequest
205-
{
206-
public MockRequestMatchRules MatchRules { get; }
204+
public class MockRequest
205+
{
206+
public MockRequestMatchRules MatchRules { get; }
207207

208-
public MockRequestResponseInfo ResponseInfo { get; }
208+
public MockRequestResponseInfo ResponseInfo { get; }
209209

210-
internal MockRequest(MockRequestMatchRules matchRules, MockRequestResponseInfo responseInfo)
211-
{
212-
MatchRules = matchRules;
213-
ResponseInfo = responseInfo;
214-
}
215-
}
210+
internal MockRequest(MockRequestMatchRules matchRules, MockRequestResponseInfo responseInfo)
211+
{
212+
MatchRules = matchRules;
213+
ResponseInfo = responseInfo;
214+
}
215+
}
216216

217-
internal sealed class MockClient : Client
218-
{
219-
private readonly List<MockRequest> _mockRequests = new();
217+
internal sealed class MockClient : Client
218+
{
219+
private readonly List<MockRequest> _mockRequests = new();
220220

221221
#pragma warning disable CS1998
222-
public override async Task<HttpResponseMessage> ExecuteRequest(HttpRequestMessage request, CancellationToken cancellationToken)
222+
public override async Task<HttpResponseMessage> ExecuteRequest(HttpRequestMessage request, CancellationToken cancellationToken)
223223
#pragma warning restore CS1998
224-
{
225-
MockRequest? mockRequest = FindMatchingMockRequest(request);
224+
{
225+
MockRequest? mockRequest = FindMatchingMockRequest(request);
226226

227-
if (mockRequest == null)
228-
{
227+
if (mockRequest == null)
228+
{
229229
#pragma warning disable CA2201
230-
throw new Exception("No matching mock request found");
230+
throw new Exception("No matching mock request found");
231231
#pragma warning restore CA2201
232-
}
232+
}
233233

234-
return new HttpResponseMessage
235-
{
236-
Content = new StringContent(mockRequest.ResponseInfo.Content),
237-
StatusCode = mockRequest.ResponseInfo.StatusCode,
238-
};
239-
}
234+
return new HttpResponseMessage
235+
{
236+
Content = new StringContent(mockRequest.ResponseInfo.Content),
237+
StatusCode = mockRequest.ResponseInfo.StatusCode,
238+
};
239+
}
240240

241-
internal MockClient(EasyPostClient client) : base(new ClientConfiguration(client.ApiKeyInUse)
242-
{
243-
ApiBase = client.ApiBaseInUse,
244-
CustomHttpClient = client.CustomHttpClient,
245-
})
246-
{
247-
}
241+
internal MockClient(EasyPostClient client) : base(new ClientConfiguration(client.ApiKeyInUse)
242+
{
243+
ApiBase = client.ApiBaseInUse,
244+
CustomHttpClient = client.CustomHttpClient,
245+
})
246+
{
247+
}
248248

249-
internal void AddMockRequest(MockRequest mockRequest) => _mockRequests.Add(mockRequest);
249+
internal void AddMockRequest(MockRequest mockRequest) => _mockRequests.Add(mockRequest);
250250

251-
internal void AddMockRequests(IEnumerable<MockRequest> mockRequests) => _mockRequests.AddRange(mockRequests);
251+
internal void AddMockRequests(IEnumerable<MockRequest> mockRequests) => _mockRequests.AddRange(mockRequests);
252252

253-
private MockRequest? FindMatchingMockRequest(HttpRequestMessage request) => _mockRequests.FirstOrDefault(mock => mock.MatchRules.Method.HttpMethod == request.Method && EndpointMatches(request.RequestUri.AbsoluteUri, mock.MatchRules.ResourceRegex));
253+
private MockRequest? FindMatchingMockRequest(HttpRequestMessage request) => _mockRequests.FirstOrDefault(mock => mock.MatchRules.Method.HttpMethod == request.Method && EndpointMatches(request.RequestUri.AbsoluteUri, mock.MatchRules.ResourceRegex));
254254

255-
private static bool EndpointMatches(string endpoint, string pattern)
256-
{
257-
try
258-
{
259-
return Regex.IsMatch(endpoint,
260-
pattern,
261-
RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline,
262-
TimeSpan.FromMilliseconds(250));
263-
}
264-
catch (RegexMatchTimeoutException)
265-
{
266-
return false;
255+
private static bool EndpointMatches(string endpoint, string pattern)
256+
{
257+
try
258+
{
259+
return Regex.IsMatch(endpoint,
260+
pattern,
261+
RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline,
262+
TimeSpan.FromMilliseconds(250));
263+
}
264+
catch (RegexMatchTimeoutException)
265+
{
266+
return false;
267+
}
268+
}
267269
}
268270
}
269-
}
270-
}
271271
}

0 commit comments

Comments
 (0)