diff --git a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs index b753063dfb416..5ae74af0bd538 100644 --- a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs +++ b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs @@ -155,7 +155,18 @@ public void TryGetAddrInfo_LocalHost_TryGetNameInfo() Assert.NotNull(aliases); Assert.NotNull(addresses); - string name = NameResolutionPal.TryGetNameInfo(addresses[0], out error, out nativeErrorCode); + // Not all addresses returned by TryGetAddInfo can be resolved to host names, depending on network configuration. + // However at least one should be. + string name = null; + foreach(IPAddress address in addresses) + { + name = NameResolutionPal.TryGetNameInfo(address, out error, out nativeErrorCode); + if (error != SocketError.HostNotFound) + { + break; + } + } + Assert.Equal(SocketError.Success, error); Assert.NotNull(name); } @@ -181,12 +192,22 @@ public void TryGetAddrInfo_HostName_TryGetNameInfo() Assert.NotNull(aliases); Assert.NotNull(addresses); - string name = NameResolutionPal.TryGetNameInfo(addresses[0], out error, out nativeErrorCode); - if (error == SocketError.HostNotFound) + // Not all addresses returned by TryGetAddInfo can be resolved to host names, depending on network configuration. + // However at least one should be. + string name = null; + foreach(IPAddress address in addresses) + { + name = NameResolutionPal.TryGetNameInfo(address, out error, out nativeErrorCode); + if (error != SocketError.HostNotFound) + { + break; + } + } + + if (error == SocketError.HostNotFound && Environment.OSVersion.Platform == PlatformID.Unix) { // On Unix, getaddrinfo returns private ipv4 address for hostname. If the OS doesn't have the // reverse dns lookup entry for this address, getnameinfo returns host not found. - Assert.Equal(PlatformID.Unix, Environment.OSVersion.Platform); return; }