Address code review feedback: use RuntimeInformation for platform detection

- Replace Environment.OSVersion.Platform with RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
- Clarify test comment about platform-specific behavior
- Add using System.Runtime.InteropServices for RuntimeInformation

Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-10-28 10:20:05 +00:00
parent 5392ca9794
commit e11198616e
2 changed files with 8 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +13,7 @@ internal static class ExtractionMethods
/// Windows uses case-insensitive file systems, while Unix-like systems use case-sensitive file systems.
/// </summary>
private static StringComparison PathComparison =>
Environment.OSVersion.Platform == PlatformID.Win32NT
RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? StringComparison.OrdinalIgnoreCase
: StringComparison.Ordinal;

View File

@@ -13,11 +13,12 @@ public class ExtractionTests : TestBase
[Fact]
public void Extraction_ShouldHandleCaseInsensitivePathsOnWindows()
{
// This test simulates the issue where Path.GetFullPath returns paths with different casing
// than the actual directory on disk (e.g., "system32" vs "System32" on Windows).
// On Windows, file paths are case-insensitive, so the extraction should succeed.
// On Unix-like systems, file paths are case-sensitive, so this test validates the
// platform-specific behavior.
// This test validates that extraction succeeds when Path.GetFullPath returns paths
// with casing that matches the platform's file system behavior. On Windows,
// Path.GetFullPath can return different casing than the actual directory on disk
// (e.g., "system32" vs "System32"), and the extraction should succeed because
// Windows file systems are case-insensitive. On Unix-like systems, this test
// verifies that the case-sensitive comparison is used correctly.
var testArchive = Path.Combine(SCRATCH2_FILES_PATH, "test-extraction.zip");
var extractPath = SCRATCH_FILES_PATH;