Merge branch 'd16-5' into d16-5-xcode11.3

This commit is contained in:
Alex Soto 2019-12-18 12:01:21 -05:00 коммит произвёл GitHub
Родитель 01c1d04877 fd3f86d912
Коммит f1f867af03
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
26 изменённых файлов: 115 добавлений и 51 удалений

2
.gitignore поставляемый
Просмотреть файл

@ -29,3 +29,5 @@ tests/bcl-test/Mac\ OS\ X\ BCL\ \tests*.csproj
tests/bcl-test/mscorlib-mac-full.csproj
tests/bcl-test/mscorlib-mac-modern.csproj
tests/bcl-test/mscorlib.csproj
tests/bcl-test/SystemCoreXunit.csproj
tests/bcl-test/SystemXunit.csproj

Просмотреть файл

@ -69,9 +69,10 @@ include $(TOP)/mk/mono.mk
MONO_HASH := $(NEEDED_MONO_VERSION)
# Minimum Mono version for building XI/XM
MIN_MONO_VERSION=6.6.0.117
MAX_MONO_VERSION=6.6.99
MIN_MONO_URL=https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2019-08/117/617f399efca133f357cb8207bc7f58b1120f12f1/MonoFramework-MDK-6.6.0.117.macos10.xamarin.universal.pkg
MIN_MONO_VERSION=6.8.0.0
MAX_MONO_VERSION=6.8.99
MIN_MONO_URL=https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2019-10/65/18920a83f423fb864a2263948737681968f5b2c8/MonoFramework-MDK-6.8.0.61.macos10.xamarin.universal.pkg
# Minimum Mono version for Xamarin.Mac apps using the system mono
MIN_XM_MONO_VERSION=6.4.0.94

Просмотреть файл

@ -109,6 +109,9 @@ $(SDK_CONFIG):
echo "DISABLE_ANDROID=1" > $@
echo "DISABLE_DESKTOP=1" >> $@
echo "DISABLE_WASM=1" >> $@
echo "ENABLE_IOS=1" >> $@
echo "ENABLE_MAC=1" >> $@
ifdef DISABLE_BUILDS_MAKEFILE_DEP
BUILDS_MAKEFILE_DEP =

Просмотреть файл

@ -1,5 +1,5 @@
NEEDED_MONO_VERSION := 3e882ed1a2013f756bdbe104c23e8ff54d5fa49c
NEEDED_MONO_BRANCH := 2019-08-xcode11.3
NEEDED_MONO_VERSION := 8f396bbb408b5758fccb8602030b9fa5293ce718
NEEDED_MONO_BRANCH := 2019-10
MONO_DIRECTORY := mono
MONO_MODULE := https://github.com/mono/mono

Просмотреть файл

@ -476,9 +476,7 @@ xamarin_main (int argc, char *argv[], enum XamarinLaunchMode launch_mode)
mono_domain_set_config (mono_domain_get (), base_dir, config_file_name);
MONO_ENTER_GC_SAFE;
rv = xamarin_extension_main (argc, argv);
MONO_EXIT_GC_SAFE;
break;
case XamarinLaunchModeApp:
rv = mono_jit_exec (mono_domain_get (), assembly, managed_argc, managed_argv);

Просмотреть файл

@ -80,9 +80,12 @@ namespace CoreServices {
return _HTTPVersion1_1.Handle;
else if (version.Equals (HttpVersion.Version10))
return _HTTPVersion1_0.Handle;
else if (version.Major == 2 && version.Minor == 0)
return _HTTPVersion2_0.Handle;
else
else if (version.Major == 2 && version.Minor == 0) {
if (_HTTPVersion2_0 != null && _HTTPVersion2_0.Handle != IntPtr.Zero)
return _HTTPVersion2_0.Handle;
// HTTP 2.0 requires OS X 10.11 or later.
return _HTTPVersion1_1.Handle;
} else
throw new ArgumentException ();
}

Просмотреть файл

@ -831,7 +831,7 @@ namespace Foundation {
base.Dispose (disposing);
}
protected internal override Task SerializeToStreamAsync (Stream stream, TransportContext context)
protected override Task SerializeToStreamAsync (Stream stream, TransportContext context)
{
if (contentCopied) {
if (!content.CanSeek) {

Просмотреть файл

@ -125,7 +125,7 @@ namespace System.Net.Http
data_event.Set ();
}
protected internal override async Task SerializeToStreamAsync (Stream stream, TransportContext context)
protected override async Task SerializeToStreamAsync (Stream stream, TransportContext context)
{
while (data_event.WaitOne ()) {
data_mutex.WaitOne ();

Просмотреть файл

@ -358,7 +358,7 @@ namespace System.Net.Http
var key = entry.Key.ToString ();
var value = entry.Value == null ? string.Empty : entry.Value.ToString ();
HttpHeaders item_headers;
if (HttpHeaders.GetKnownHeaderKind (key) == Headers.HttpHeaderKind.Content) {
if (HeaderDescriptor.TryGet (key, out var descriptor) && descriptor.HeaderType == HttpHeaderType.Content) {
item_headers = response_msg.Content.Headers;
} else {
item_headers = response_msg.Headers;

Просмотреть файл

@ -420,4 +420,13 @@ System.Text.Tests.StringBuilderTests.Append_CharPointer_Null_ThrowsNullReference
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeMethod
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeField
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeEvent
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeProperty
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeProperty
# mono issue: https://github.com/mono/mono/issues/17752
# Exception messages: System.OutOfMemoryException : Insufficient memory to continue the execution of the program.
Platform32:System.Reflection.Tests.RuntimeReflectionExtensionsTests.GetRuntimeMethod
# maccore issue: https://github.com/xamarin/maccore/issues/1659
# random OOMs
Platform32:System.Collections.Tests.HashtableTests.Ctor_Int_Int_GenerateNewPrime
Platform32:System.Tests.BitConverterTests.ToString_ByteArrayTooLong_Throws

Просмотреть файл

@ -115,4 +115,4 @@ System.Net.Security.Tests.ApmSslStreamSystemDefaultTest.ClientAndServer_OneOrBot
System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption
System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerAllowNoEncryption_ConnectWithEncryption
System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientAllowNoEncryption_ConnectWithEncryption
KLASS:System.Net.Security.Tests.SslStreamSniTest
KLASS:System.Net.Security.Tests.SslStreamSniTest

Просмотреть файл

@ -30,7 +30,6 @@ namespace LinkSdk.Net.Http {
Assert.That (handler.AutomaticDecompression, Is.EqualTo (DecompressionMethods.None), "AutomaticDecompression");
Assert.That (handler.ClientCertificateOptions, Is.EqualTo (ClientCertificateOption.Manual), "ClientCertificateOptions");
Assert.That (handler.MaxAutomaticRedirections, Is.EqualTo (50), "MaxAutomaticRedirections");
Assert.That (handler.MaxRequestContentBufferSize, Is.EqualTo (Int32.MaxValue), "MaxRequestContentBufferSize");
Assert.Null (handler.Proxy, "Proxy");
Assert.True (handler.SupportsAutomaticDecompression, "SupportsAutomaticDecompression");
Assert.True (handler.SupportsProxy, "SupportsProxy");

Просмотреть файл

@ -474,9 +474,9 @@ namespace Xamarin.MMP.Tests
References = " <Reference Include=\"System.Net.Http\" />",
TestCode = $@"
var client = new System.Net.Http.HttpClient ();
var field = client.GetType ().BaseType.GetField (""handler"", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var field = client.GetType ().BaseType.GetField (""_handler"", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (field == null)
throw new System.Exception (""Could not find the field 'handler' in HttpClient's base type (which should be 'HttpMessageInvoker')."");
throw new System.Exception (""Could not find the field '_handler' in HttpClient's base type (which should be 'HttpMessageInvoker')."");
var fieldValue = field.GetValue (client);
if (fieldValue == null)
throw new System.Exception (""Unexpected null value found in 'HttpMessageInvoker.handler' field."");

Просмотреть файл

@ -14,6 +14,8 @@ namespace Xamarin.MMP.Tests
if (!Directory.Exists (oldXcode))
Assert.Ignore ("This test requires Xcode 9.4 (or updated to a newer one that still warns MM0135).");
else if (Environment.OSVersion.Version.Major >= 19 /* macOS 10.15+ */)
Assert.Ignore ("Xcode 9.4 does not work on Catalina or later."); // This can check can be removed after switching to a newer Xcode than 9.4.
MMPTests.RunMMPTest (tmpDir => {
TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir);

Просмотреть файл

@ -75,8 +75,8 @@ namespace MonoTouchFixtures.Network {
[TestFixtureTearDown]
public void Dispose()
{
report.Dispose ();
connection.Dispose ();
report?.Dispose ();
connection?.Dispose ();
}
[Test]

Просмотреть файл

@ -58,9 +58,11 @@ namespace MonoTouchFixtures.Network {
[TestFixtureTearDown]
public void Dispose()
{
connection.Dispose ();
foreach (var i in interfaces)
i.Dispose ();
connection?.Dispose ();
if (interfaces != null) {
foreach (var i in interfaces)
i.Dispose ();
}
}
[SetUp]

Просмотреть файл

@ -66,8 +66,8 @@ namespace MonoTouchFixtures.Network {
[TestFixtureTearDown]
public void Dispose()
{
connection.Dispose ();
stack.Dispose ();
connection?.Dispose ();
stack?.Dispose ();
}
[SetUp]

Просмотреть файл

@ -56,10 +56,12 @@ namespace MonoTouchFixtures.Network {
[TestFixtureTearDown]
public void Dispose()
{
connection.Dispose ();
stack.Dispose ();
foreach (var o in options)
o.Dispose ();
connection?.Dispose ();
stack?.Dispose ();
if (options != null) {
foreach (var o in options)
o.Dispose ();
}
}
[SetUp]

Просмотреть файл

@ -14,6 +14,7 @@ using System.IO;
using NUnit.Framework;
using System.Net.Http.Headers;
using System.Security.Authentication;
using System.Text;
using Foundation;
#if MONOMAC
@ -174,24 +175,35 @@ namespace MonoTests.System.Net.Http
Assert.Ignore ("Fails on macOS 10.10: https://github.com/xamarin/maccore/issues/1645");
#endif
bool servicePointManagerCbWasExcuted = false;
bool validationCbWasExecuted = false;
bool customValidationCbWasExecuted = false;
bool invalidServicePointManagerCbWasExcuted = false;
bool done = false;
Exception ex = null;
Type expectedExceptionType = null;
HttpResponseMessage result = null;
var handler = GetHandler (handlerType);
if (handler is NSUrlSessionHandler ns) {
if (handler is HttpClientHandler ch) {
expectedExceptionType = typeof (AuthenticationException);
ch.ServerCertificateCustomValidationCallback = (sender, certificate, chain, errors) => {
validationCbWasExecuted = true;
// return false, since we want to test that the exception is raised
return false;
};
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => {
invalidServicePointManagerCbWasExcuted = true;
return false;
};
} else if (handler is NSUrlSessionHandler ns) {
expectedExceptionType = typeof (WebException);
ns.TrustOverride += (a,b) => {
servicePointManagerCbWasExcuted = true;
validationCbWasExecuted = true;
// return false, since we want to test that the exception is raised
return false;
};
} else {
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => {
servicePointManagerCbWasExcuted = true;
// return false, since we want to test that the exception is raised
return false;
};
Assert.Fail ($"Invalid HttpMessageHandler: '{handler.GetType ()}'.");
}
TestRuntime.RunAsync (DateTime.Now.AddSeconds (30), async () =>
@ -213,11 +225,14 @@ namespace MonoTests.System.Net.Http
if (!done) { // timeouts happen in the bots due to dns issues, connection issues etc.. we do not want to fail
Assert.Inconclusive ("Request timedout.");
} else {
// the ServicePointManager.ServerCertificateValidationCallback will never be executed.
Assert.False(invalidServicePointManagerCbWasExcuted);
Assert.True(validationCbWasExecuted);
// assert the exception type
Assert.IsNotNull (ex, (result == null)? "Expected exception is missing and got no result" : $"Expected exception but got {result.Content.ReadAsStringAsync ().Result}");
Assert.IsInstanceOfType (typeof (HttpRequestException), ex);
Assert.IsNotNull (ex.InnerException);
Assert.IsInstanceOfType (typeof (WebException), ex.InnerException);
Assert.IsInstanceOfType (expectedExceptionType, ex.InnerException);
}
}

Просмотреть файл

@ -3941,9 +3941,9 @@ public class HandlerTest
public void Test ()
{{
var client = new System.Net.Http.HttpClient ();
var field = client.GetType ().BaseType.GetField (""handler"", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var field = client.GetType ().BaseType.GetField (""_handler"", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (field == null)
throw new System.Exception (""Could not find the field 'handler' in HttpClient's base type (which should be 'HttpMessageInvoker')."");
throw new System.Exception (""Could not find the field '_handler' in HttpClient's base type (which should be 'HttpMessageInvoker')."");
var fieldValue = field.GetValue (client);
if (fieldValue == null)
throw new System.Exception (""Unexpected null value found in 'HttpMessageInvoker.handler' field."");

Просмотреть файл

@ -302,10 +302,23 @@ namespace Xamarin.Linker {
"LLVM failed for '<SendFrameFallbackAsync>d__56.MoveNext': non-finally/catch/fault clause.",
"LLVM failed for '<ReceiveAsyncPrivate>d__61`2.MoveNext': non-finally/catch/fault clause.",
"LLVM failed for '<ReceiveAsyncPrivate>d__61`2.MoveNext': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.Read': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.Write': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.BeginRead': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.EndRead': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.BeginWrite': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.EndWrite': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.ReadAsync': non-finally/catch/fault clause.",
"LLVM failed for 'NetworkStream.WriteAsync': non-finally/catch/fault clause.",
}) },
{ "System.Core.dll", new Tuple<int, string[]> (0, new string [] {
"LLVM failed for 'EnterTryCatchFinallyInstruction.Run': non-finally/catch/fault clause.",
}) },
{ "System.Net.Http.dll", new Tuple<int, string[]> (0, new string [] {
"LLVM failed for 'HttpContent.CopyToAsync': non-finally/catch/fault clause.",
"LLVM failed for 'HttpContent.LoadIntoBufferAsync': non-finally/catch/fault clause.",
"LLVM failed for '<CopyToAsyncCore>d__47.MoveNext': non-finally/catch/fault clause.",
}) },
{ "mscorlib.dll", new Tuple<int, string[]> (0, new string [] {
"LLVM failed for 'Console.Write': opcode arglist",
"LLVM failed for 'Console.WriteLine': opcode arglist",

Просмотреть файл

@ -8,6 +8,8 @@ namespace xharness
{
public class UnifiedTarget : iOSTarget
{
// special cases for the BCL applications
public override string Suffix {
get {
return MonoNativeInfo != null ? MonoNativeInfo.FlavorSuffix : "-ios";
@ -67,9 +69,15 @@ namespace xharness
protected override void CalculateName ()
{
if (TargetDirectory.Contains ("bcl-test"))
Name = (TestProject.Name == "mscorlib")? "mscorlib" : TestProject.Name.Substring (TestProject.Name.IndexOf ("BCL", StringComparison.Ordinal));
else
if (TargetDirectory.Contains ("bcl-test")) {
if (TestProject.Name == "mscorlib")
Name = "mscorlib";
else {
var bclIndex = TestProject.Name.IndexOf ("BCL", StringComparison.Ordinal);
// most of the BCL test are grouped, but there are a number that are not, in those cases remove the "{testype} Mono " prefix
Name = (bclIndex == -1) ? TestProject.Name.Substring (TestProject.Name.IndexOf ("Mono ", StringComparison.Ordinal) + "Mono ".Length) : TestProject.Name.Substring (bclIndex);
}
} else
base.CalculateName ();
if (MonoNativeInfo != null)
Name = Name + MonoNativeInfo.FlavorSuffix;

Просмотреть файл

@ -127,16 +127,17 @@ namespace BCLTestImporter {
// BCL tests group 4
new BclTestProjectInfo { Name = "SystemNumericsXunit", assemblies = new [] { "monotouch_System.Numerics_xunit-test.dll" }, Group = "BCL tests group 4" },
new BclTestProjectInfo { Name = "SystemCoreXunit", assemblies = new [] { "monotouch_System.Core_xunit-test.dll" }, Group = "BCL tests group 4" },
new BclTestProjectInfo { Name = "SystemXunit", assemblies = new [] { "monotouch_System_xunit-test.dll" }, ExtraArgs = $"--xml={Path.Combine (Harness.RootDirectory, "bcl-test", "SystemXunitLinker.xml")} --optimize=-custom-attributes-removal", Group = "BCL tests group 4" },
new BclTestProjectInfo { Name = "MicrosoftCSharpXunit", assemblies = new [] { "monotouch_Microsoft.CSharp_xunit-test.dll" }, Group = "BCL tests group 4" },
// BCL tests group 5
new BclTestProjectInfo { Name = "mscorlib", assemblies = new [] { "monotouch_corlib_xunit-test.dll" }, Group = "mscorlib" }, // special testcase for the corlib which is later used in xHarness for diff config options
new BclTestProjectInfo { Name = "SystemNetHttpUnitTestsXunit", assemblies = new [] { "monotouch_System.Net.Http.UnitTests_xunit-test.dll" }, Group = "BCL tests group 5" },
new BclTestProjectInfo { Name = "SystemNetHttpFunctionalTestsXunit", assemblies = new [] { "monotouch_System.Net.Http.FunctionalTests_xunit-test.dll" }, Group = "BCL tests group 5" },
// Special assemblies that are in a single application due to their size being to large for the iOS 32b.
new BclTestProjectInfo { Name = "mscorlib", assemblies = new [] { "monotouch_corlib_xunit-test.dll" }, Group = "mscorlib" }, // special testcase for the corlib which is later used in xHarness for diff config options
new BclTestProjectInfo { Name = "SystemCoreXunit", assemblies = new [] { "monotouch_System.Core_xunit-test.dll" }, Group = "SystemCoreXunit" }, // special test case, this dll is to large for the iOS 32b
new BclTestProjectInfo { Name = "SystemXunit", assemblies = new [] { "monotouch_System_xunit-test.dll" }, ExtraArgs = $"--xml={Path.Combine (Harness.RootDirectory, "bcl-test", "SystemXunitLinker.xml")} --optimize=-custom-attributes-removal", Group = "SystemXunit" }, // special case due to the need of the extra args
// BCL tests group 6
new BclTestProjectInfo { Name = "SystemNetHttpUnitTestsXunit", assemblies = new [] { "monotouch_System.Net.Http.UnitTests_xunit-test.dll" }, Group = "BCL tests group 6" },
new BclTestProjectInfo { Name = "SystemNetHttpFunctionalTestsXunit", assemblies = new [] { "monotouch_System.Net.Http.FunctionalTests_xunit-test.dll" }, Group = "BCL tests group 6" },
};
static readonly List <string> CommonIgnoredAssemblies = new List <string> {

Просмотреть файл

@ -49,12 +49,12 @@ namespace Xamarin.Linker {
// or they can point to nothing which will break later (e.g. when re-loading for stripping IL)
// reference: https://bugzilla.xamarin.com/show_bug.cgi?id=36577
if (main.HasExportedTypes)
SweepCollectionNonAttributable (main.ExportedTypes);
SweepCollectionMetadata (main.ExportedTypes);
// only when linking should we remove module references, if we (re)save the assembly then
// the entrypoints (for p/invokes) will be required later
// reference: https://bugzilla.xamarin.com/show_bug.cgi?id=35372
if (main.HasModuleReferences && (CurrentAction == AssemblyAction.Link))
SweepCollectionNonAttributable (main.ModuleReferences);
SweepCollectionMetadata (main.ModuleReferences);
}
}
}

Просмотреть файл

@ -166,6 +166,9 @@
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker\XApiReader.cs">
<Link>Linker\XApiReader.cs</Link>
</Compile>
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker\OutputException.cs">
<Link>Linker\OutputException.cs</Link>
</Compile>
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker.Steps\BaseStep.cs">
<Link>Linker.Steps\BaseStep.cs</Link>
</Compile>

Просмотреть файл

@ -154,6 +154,9 @@
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker\MethodAction.cs">
<Link>Linker\MethodAction.cs</Link>
</Compile>
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker\OutputException.cs">
<Link>Linker\OutputException.cs</Link>
</Compile>
<Compile Include="..\..\builds\mono-ios-sdk-destdir\ios-sources\external\linker\src\linker\Linker.Steps\BaseStep.cs">
<Link>Linker.Steps\BaseStep.cs</Link>
</Compile>