From ac544ffe305a5a2bac69b1675f4d10da973f7869 Mon Sep 17 00:00:00 2001 From: Tomas Weinfurt Date: Wed, 29 Apr 2020 18:23:19 -0700 Subject: [PATCH] handle UnauthorizedAccessException from mmap on OSX (#35619) * handle UnauthorizedAccessException on OSX * update SkipTestException text * add comments Co-authored-by: Tomas Weinfurt --- .../tests/MemoryMappedViewAccessor.Tests.cs | 6 ++++-- .../tests/MemoryMappedViewStream.Tests.cs | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs index f5cfb2fcff8..c81450e98cf 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs @@ -91,9 +91,11 @@ namespace System.IO.MemoryMappedFiles.Tests } catch (UnauthorizedAccessException) { - if (PlatformDetection.IsInContainer && (viewAccess == MemoryMappedFileAccess.ReadExecute || viewAccess == MemoryMappedFileAccess.ReadWriteExecute)) + if ((RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || PlatformDetection.IsInContainer) && + (viewAccess == MemoryMappedFileAccess.ReadExecute || viewAccess == MemoryMappedFileAccess.ReadWriteExecute)) { - throw new SkipTestException("Execute permission failing in container."); + // Containers and OSX with SIP enabled do not have execute permissions by default. + throw new SkipTestException("Insufficient execute permission."); } throw; diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs index 2fda376dfcb..860401865ec 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs @@ -91,9 +91,11 @@ namespace System.IO.MemoryMappedFiles.Tests } catch (UnauthorizedAccessException) { - if (PlatformDetection.IsInContainer && (viewAccess == MemoryMappedFileAccess.ReadExecute || viewAccess == MemoryMappedFileAccess.ReadWriteExecute)) + if ((RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || PlatformDetection.IsInContainer) && + (viewAccess == MemoryMappedFileAccess.ReadExecute || viewAccess == MemoryMappedFileAccess.ReadWriteExecute)) { - throw new SkipTestException("Execute permission failing in container."); + // Containers and OSX with SIP enabled do not have execute permissions by default. + throw new SkipTestException("Insufficient execute permission."); } throw;