Also fix warnings printed while executing:
> CoreText performance note: Client called CTFontCreateWithName() using name "Arial" and got font with PostScript name "ArialMT". For best performance, only use PostScript names when calling this API.
> CoreText performance note: Set a breakpoint on CTFontLogSuboptimalRequest to debug.
* ApiCMAttachmentTest
[FAIL] ApiCMAttachmentTest.CheckFailAttachments : CGColorConverter.Handle
* SKNode added conformance to new (in iOS10) UIFocus protocol.
[FAIL] Selector not found for SpriteKit.SKNode : didUpdateFocusInContext:withAnimationCoordinator:
[FAIL] Selector not found for SpriteKit.SKNode : setNeedsFocusUpdate
[FAIL] Selector not found for SpriteKit.SKNode : shouldUpdateFocusInContext:
[FAIL] Selector not found for SpriteKit.SKNode : updateFocusIfNeeded
[FAIL] Selector not found for SpriteKit.SKNode : preferredFocusedView
* HKWorkoutEvent conformance to NSCopying is new in iOS10
[FAIL] Selector not found for HealthKit.HKWorkoutEvent : copyWithZone:
* HKDocumentType was added in iOS 10 (not iOS 8) and not watchOS 2 or 3
ref: +HK_CLASS_AVAILABLE_IOS_ONLY(10_0)
[FAIL] iOSApiProtocolTest.ApiProtocolTest.Coding : ObjCRuntime.RuntimeException : Wrapper type 'HealthKit.HKDocumentType' is missing its native ObjectiveC class 'HKDocumentType'.
reference:
https://bugzilla.xamarin.com/show_bug.cgi?id=43329
It was disable as it crashed our test suite and the crash report from
the simulators were not very helpful. The issue becomes clear from
device builds...
Application Specific Information:
BUG IN CLIENT OF LIBDISPATCH: dispatch_barrier_sync called on queue already owned by current thread
Abort Cause 6244246656
Filtered syslog:
None found
Thread 0 name: tid_a07 Dispatch queue: CTCallCenter
Thread 0 Crashed:
0 libdispatch.dylib 0x00000001839fdf60 _dispatch_barrier_sync_f_slow + 596
1 CoreTelephony 0x000000018756e7ec -[CTCallCenter callEventHandler] + 128
2 CoreTelephony 0x000000018756e7ec -[CTCallCenter callEventHandler] + 128
3 CoreTelephony 0x000000018756f51c __27-[CTCallCenter description]_block_invoke + 60
4 CoreTelephony 0x000000018756f79c ___ZN8dispatch9sync_implIU13block_pointerFP8NSStringvEEENSt3__15decayIDTclfp0_EEE4typeEP16dispatch_queue_sOT_NS5_17integral_constantIbLb0EEE_block_invoke + 32
5 libdispatch.dylib 0x00000001839ed1c0 _dispatch_client_callout + 16
6 libdispatch.dylib 0x00000001839fa860 _dispatch_barrier_sync_f_invoke + 84
7 libdispatch.dylib 0x00000001839fde9c _dispatch_barrier_sync_f_slow + 400
8 CoreTelephony 0x000000018756f4d0 -[CTCallCenter description] + 128
9 introspection 0x000000010192b7b8 wrapper_managed_to_native_ObjCRuntime_Messaging_IntPtr_objc_msgSend_intptr_intptr (/<unknown>:1)
10 introspection 0x00000001012dbff8 Foundation_NSObject_get_Description (NSObject.g.cs:717)
11 introspection 0x00000001012d8e34 Foundation_NSObject_ToString (NSObject2.cs:703)
so calling `description` is broken and we need to exclude this from our
introspection tests for the type.
Apple removed CGColorConverter even if it was publicly exposed in iOS 9.3,
not that I recall any API that consumed it...
It was replaced by a new, very close, type named CGColorConversionInfo and
the existing code and tests were updated to the new API.
So for `CGColorConverter` we're
* iOS: Obsoleted + code removal
* tvOS: Obsoleted + code removal
* watchOS: the API can be removed as it was not exposed in a stable release
* macOS: it was not enabled (did not work)
* [tests] Adjust ApiCMAttachmentTest so it knows how to create the new CGColorConversionInfo type
Also apply fixes based on xtro results. Most of them are likely because the iOS frameworks contains out-dated headers wrt watchOS.
references:
* Missing fields /API
!missing-field! CKShareThumbnailImageDataKey not bound
!missing-field! CKShareTitleKey not bound
!missing-field! CKShareTypeKey not bound
!missing-selector! CKContainer::acceptShareMetadata:completionHandler: not bound
!missing-selector! CKContainer::fetchShareMetadataWithURL:completionHandler: not bound
* tvOS: enabled
!missing-selector! CKNotificationInfo::setShouldSendContentAvailable: not bound
!missing-selector! CKNotificationInfo::shouldSendContentAvailable not bound
* watchOS: xtro fixes for additions/removal in the same release
!missing-type! CKFetchRecordChangesOperation not bound
!missing-type! CKDiscoverAllContactsOperation not bound
!missing-type! CKDiscoverUserInfosOperation not bound
!missing-type! CKDiscoveredUserInfo not bound
!missing-selector! CKContainer::discoverAllContactUserInfosWithCompletionHandler: not bound
!missing-selector! CKContainer::discoverUserInfoWithEmailAddress:completionHandler: not bound
!missing-selector! CKContainer::discoverUserInfoWithUserRecordID:completionHandler: not bound
* watchOS: missing [NoWatch] on some types
!unknown-native-enum! CKQuerySubscriptionOptions bound
!unknown-native-enum! CKSubscriptionOptions bound
!unknown-native-enum! CKSubscriptionType bound
!unknown-type! CKDatabaseSubscription bound
!unknown-type! CKNotificationInfo bound
!unknown-type! CKQuerySubscription bound
!unknown-type! CKRecordZoneSubscription bound
!unknown-type! CKSubscription bound
* Enable some SceneKit-related WatchKit API
* Enable some SceneKit-related SpriteKit API
* Enable some SceneKit-related Foundation API
* Fix generator to include `using SceneKit;` on watchOS
* Adjust xtro tests since watchOS headers include some stuff that's not available in reality
* Lots of [Watch (3,0)] attributes
* [tests] Implement filtering based on test name to make it possible to run a subset of tests manually.
* [xharness] Add support for passing environment variables to test apps.
* [xharness] Split the mscorlib/System test run for watchOS into multiple executions.
When running on a watch, the complete set of mscorlib and System tests use too
much memory, so they end up crashing the app.
So instead don't run all the tests in the same test run, but
instead split them up.
This splits the System tests in 5 different sets, based on the first
character of the test class name.
The mscorlib tests are split in 26 different sets, one for each
character (A-Z).
On watchOS we can't include all the tests for device in a single
assembly, because the native object code becomes too big.
So instead split the tests into two assemblies. Luckily this
is fairly easy for test projects, since they have few dependencies
between source files (there are some however, so source files
are grouped per directory so that files in the same directory do
not end up in different test projects). There is also some hard-coded
logic.
https://bugzilla.xamarin.com/show_bug.cgi?id=41746
* Fixed reports of xtro tests
* Fixed some members that are @required members of an existing protocol (XAMCORE_4_0)
* Added some new typo fixes to Intrespection tests
* Fixed SCNNode.EnumerateChildNodes delegate signature
Latest iOS 10, tvOS 10 and watchOS 3 uses a newer libsqlite version.
It's not clear is macOS 10.12 also does (and that could affect the
test when using the simulators)
On watchOS we can't include all the tests for device in a single
assembly, because the native object code becomes too big.
So instead split the tests into two assemblies. Luckily this
is fairly easy for test projects, since they have few dependencies
between source files (there are some however, so source files
are grouped per directory so that files in the same directory do
not end up in different test projects). There is also some hard-coded
logic.
https://bugzilla.xamarin.com/show_bug.cgi?id=41746
* [spritekit] Update for iOS 10 beta 1
* [spritekit] Add missing MarshalDirective
* [runtime] Add missing simd function signatures
- Add matrix_float2x2 and matrix_float3x3 natives types.
* [introspection] Fix ApiSignatureTest
- We now avoid checking {?=[X]} encoded signatures.
- We now calculate the right size for matrix_float2x2, matrix_float3x3 and matrix_float4x4.
- Fix SKWarpGeometryGrid wrong bindings revealed by tests (IntPtr instead of Vector2).
* [monotouch-test] Add SKUniform and SKWarpGeometryGrid tests
- Split in two to ease review;
- Unit tests added for NSUrlSessionTaskMetrics and
NSUrlSessionTaskTransactionMetrics as they don't respond to selectors
like expected (but just like other NSUrlSession* types)
We tried disabling dlsym for all assemblies on iOS, but it turned
out to break a significant amount of customer code [1].
So re-enable it, but only for user assemblies (since we control
all assemblies we ship and can thus make sure those work with
dlsym disabled).
https://trello.com/c/guig1MF2/623-re-enable-dlsym-for-ios
We tried disabling dlsym for all assemblies on iOS, but it turned
out to break a significant amount of customer code [1].
So re-enable it, but only for user assemblies (since we control
all assemblies we ship and can thus make sure those work with
dlsym disabled).
https://trello.com/c/guig1MF2/623-re-enable-dlsym-for-ios
`getPlaceholderTemplateForComplication:withHandler:` was @required in
watchOS 2.x but is now deprecated and downgraded to @optional in
watchOS 3 (betas)
This is a breaking change but we have not released our final watchOS 2.x
bits yet so it make sense to backport this change (unless Apple reverts
it before 3.0 is released)
* [XM] AppKit Xcode8 Beta3 changes
* [XM] Update intents.cs with macOS attributes
* [XM] Fix bindings caught by introspection test
* [XM] Fix classic introspection tests by marking safariservices as 64-bit only
* [XM] Async upgrade
* [XM] Fix apitest on classic by noting IntentsLibrary is 64-bit only
- https://trello.com/c/9JANewiM
- My analysis was incorrect, the binding was wrong and the test caught it.
- If you have [Model] you must have [BaseType], and if you don't want [Model] you must not use [BaseType]
* ActionIdentifier from UNNotificationResponse class can be
a NSString defined in UNNotificationActionIdentifier but can
also be a custom defined identifier so we can't really strong type it
* Renamed enums to use the same name as defined in the header because
we don't really know how this framework will evolve over time
and there is a chance that the current naming can create confusion
in the long run so we play safe here
Xcode8 SDK (for tvOS 10) marked those API with __TVOS_UNAVAILABLE making
them only available on iOS.
Since the API are not yet released in stable (C8) so we can removing
them proactively. It will be easier to add them back later (if the
situation change) than removing/obsoleting them.
Xcode8 SDK (for tvOS 10) marked those API with __TVOS_UNAVAILABLE making
them only available on iOS.
Since the API are not yet released in stable (C8) so we can removing
them proactively. It will be easier to add them back later (if the
situation change) than removing/obsoleting them.
* Fixed macOS availability attributes where it made sense
* Added inconclusive members to mac.pending and opened radar://27463602
https://trello.com/c/BPdUlTlg about it
* iOS xtro reported members that got deprecated and introduced on iOS 10
so added that to pending and those members are not bound
Jul 15 15:44:26 castor monotouchtest[42732]: [default] [ERROR] error while getting ubiquityIdentityToken: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.bird.token was invalidated." UserInfo={NSDebugDescription=The connection to service named com.apple.bird.token was invalidated.}
^ the above is printed several times after this
* Mostly missing checks
* FontTest: Apple never fixed that and the way we link now, without
dlsym, makes the test crash
dyld: lazy symbol binding failed: Symbol not found: _CTFontCreateWithFontDescriptorAndOptions
Referenced from: /var/mobile/Applications/6025D222-F50E-46E0-8BF5-9C45D4C7DACB/monotouchtest.app/monotouchtest
Expected in: /System/Library/Frameworks/CoreText.framework/CoreText
Tested with iOS 7.1 on an iPad 3
- Dynamic registrar needs to ignore new CBManager base class;
- CGImageMetadataTag.Value returns a mutable array on iOS10;
- MPMediaItem properties needed 9.2 / 10.0 check;
- MSMessage not available before Xcode 8;
- Metal not available before Xcode 6;
- MetalPerformanceShaders not available before Xcode 7;
I enabled CloudKit earlier, but that framework was not updated and the
tests did not run on watchOS.
Now the tests are enabled (and fails PR) so this is a minimal fix to
get PR green again. CloudKit still needs to be updated for the new SDK.
Note: headers often mention 2.0 and 2.2 for API but the framework was
not available before 3.0. Some information might not be trustworthy.
Category methods are exposed like extension methods, and the first parameter
specifies the class, which means we need to skip the first type when generating
the ObjC signature.
https://bugzilla.xamarin.com/show_bug.cgi?id=42489
There can be circular dependencies between Objective-C classes,
so make sure we don't fail compilation when that occurs by
forward declaring any Objective-C classes/protocols.
The test case in question does not contain a circular dependency,
but the same issue occurs due to types not being generated in the
correct order (a correct order could be constructed for the test
case, but there's no general solution since circular dependencies
can exist).
https://bugzilla.xamarin.com/show_bug.cgi?id=42454
Category methods are exposed like extension methods, and the first parameter
specifies the class, which means we need to skip the first type when generating
the ObjC signature.
https://bugzilla.xamarin.com/show_bug.cgi?id=42489
- Includes tests.
- Add availability flags.
- Turn new fields into properties.
- Verify bindings on iOS 9.3.
- Added protection in MPNowPlayingInfoCenter if native fields
are not available (depending on the iOS version).
There can be circular dependencies between Objective-C classes,
so make sure we don't fail compilation when that occurs by
forward declaring any Objective-C classes/protocols.
The test case in question does not contain a circular dependency,
but the same issue occurs due to types not being generated in the
correct order (a correct order could be constructed for the test
case, but there's no general solution since circular dependencies
can exist).
https://bugzilla.xamarin.com/show_bug.cgi?id=42454
Does not affect the Jenkins bots (which don't run classic tests) but
fails on wrench (who still runs them right now). There's a difference
in how equality is checked between classic and unified and that expose
a, not really important, change in iOS10.
Fix issues with monotouch-tests with beta2
* TLSMaximumSupportedProtocol returns Unknown, which also means default,
instead of SslProtocol.Tls_1_2
* Setting NSZone.Name crash the app
* The MDLMesh tests are broken in a different way than beta1
* [callkit] Disable CTCallCenter default ctor as it breaks introspection
> [FAIL] Default constructor not allowed for CoreTelephony.CTCallCenter : SIGILL
The exception, that we catch, puts the process in an unstable state.
This cause weird results and crash later (wrong dispatch queue on main
thread) when testing MapKit.
Crashed Thread: 0 tid_a07 Dispatch queue: CTCallCenter
Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000004
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0x4:
-->
__TEXT 0000000000097000-00000000004d2000 [ 4332K] r-x/rwx SM=COW /Users/USER/Library/Developer/CoreSimulator/Devices/9446B344-62A2-42A8-A8EE-9FE7AC6BA5C8/data/Containers/Bundle/Application/81183608-DADF-4226-B7FE-4B43759D679A/introspection.app/introspection
Application Specific Information:
BUG IN CLIENT OF LIBDISPATCH: dispatch_barrier_sync called on queue already owned by current thread
abort() called
CoreSimulator 278 - Device: iPhone 5 - Runtime: iOS 10.0 (14A5297c) - DeviceType: iPhone 5
Some beta2 adjustments (removals) to get green tests and be able to merge it so bindings of beta2 can start
* [tests] NEFlowMetaData conformance to NSSecureCoding and NSCopying is new in beta2 (and check fails on OSX 10.11)
* [uikit] Add [UIScrollView|UITableViewController].refreshControl to fix monotouch-test build
UIRefreshControlHosting was removed in beta2 but we still need the
refreshControl property on UIScrollView and UITableViewController
to build monotouch-test
* Added support in DictionaryContainer for CGRect/CGPoint/CGSize and CMTime
* Added support for [StrongDictionary] using CGRect/CGPoint/CGSize and CMTime
* Added tests using DictionaryContainers for CGRect/CGPoint/CGSize and CMTime
* [Foundation] NSUbiquitousKeyValueStore is not available on watchOS.
Fixes an issue found by the introspection tests when running on a
watchOS device.
* [monotouch-test] Fix watchOS build with regards to NSUbiquitousKeyValueStore changes.
Fixes this warning:
SimpleHttpListener.cs(12,8): warning CS0108: `xharness.SimpleHttpListener.connected' hides inherited member `xharness.SimpleListener.connected'. Use the new keyword if hiding was intended
Also use https instead of http to avoid a network roundtrip
(since http://www.xamarin.com just redirects to https).
This will hopefully fix this random test failure:
[FAIL] UrlSessionTest.CreateDataTaskAsync : CreateUploadTask a
WCSessionDelegate members added in iOS 9.3 were turned into **required**
members in iOS 10 (beta 1). That's a breaking change so it's only enabled
for XAMCORE_4_0
Make sure as much as possible is written to the logs, and not stdout.
Also copy an extra 1024 bytes when fetching the system log (and continue
capturing a while after stopped, since there may be unflushed system log
data in memory).
Split out the code to prepare the simulator from the AppRunner class,
which is now just handling the logic required for each test run.
This way it's easier to handle simulator preparation for multiple
test runs with the same simulator.
Also revamp logging to avoid printing directly to the console, but
instead use the logging classes that permit redirecting logging
to a file. This makes the html report show better logging.
https://bugzilla.xamarin.com/show_bug.cgi?id=41343
* NSDictionary<TKey, TValue>.FromObjectsAndKeys keys and values are twisted up
* Fixed it in XAMCORE_4_0
* Obsoleted the 2 existing methods
* introduced FromObjectsAndKeys (TValue [] objects, TKey [] keys, nint count)
* Added unit tests with different types for TKey and TValue
Also fixed QLPreviewItem::previewItemTitle (not required) for XAMCORE_4_0
reference:
!incorrect-protocol-member! QLPreviewItem::previewItemTitle is OPTIONAL and should NOT be abstract
The two later failure reports (references) were not prefixed with [FAIL]
so they were filtered out by in the bot results.
references:
[FAIL] iOSApiProtocolTest.ApiProtocolTest.GeneralCase : 2 types do not really conform to the protocol interfaces
[FAIL] Could not load UIKit.UICollectionViewDataSourcePrefetching
[FAIL] Could not load UIKit.UIContentSizeCategoryAdjusting
Wrong check for version
[FAIL] Default constructor not allowed for CoreLocation.CLCircularRegion : Can only check iOS system version on iOS.
[FAIL] Default constructor not allowed for AVFoundation.AVAudioSessionDataSourceDescription : Can only check iOS system version on iOS.
[FAIL] Default constructor not allowed for AVFoundation.AVAudioSessionPortDescription : Can only check iOS system version on iOS.
and a change in tvOS 10 SDK
[FAIL] Selector not found for TVMLKit.TVViewElement : setDisabled:
* [tests][monotouch] More adjustments for iOS10 related failures/changes
- some might be Apple bugs and need to be reverted later
* Fix more failures on monotouch-tests wrt iOS 10
* MutableContactTest.cs: Wrong assert was changed (which is why each one
needs it's own unique string)
* TrustTest.cs: Fixed as results vary on < iOS9, iOS9 and iOS10
* NetworkReachabilityTest.cs: Fixed as results vary on < iOS9, iOS9 and iOS10
Those
[FAIL] UserDefaultsTest.Ctor_UserName : System.NullReferenceException : Object reference not set to an instance of an object
[FAIL] UserDefaultsTest.SetString : StringForKey-2
are due to
http://stackoverflow.com/questions/37840288/ios-10-nsuserdefaults-does-not-work
and should disappear once the bots are rebooted.
Fixes NSCharacterSetTest.NSMutableCharacterSet_TestStaticSets when
running with the P/Invoke wrapper (for exceptions) enabled (i.e.
watchOS), since otherwise the wrapper would truncate char parameters
to byte.
Make sure as much as possible is written to the logs, and not stdout.
Also copy an extra 1024 bytes when fetching the system log (and continue
capturing a while after stopped, since there may be unflushed system log
data in memory).
Split out the code to prepare the simulator from the AppRunner class,
which is now just handling the logic required for each test run.
This way it's easier to handle simulator preparation for multiple
test runs with the same simulator.
Also revamp logging to avoid printing directly to the console, but
instead use the logging classes that permit redirecting logging
to a file. This makes the html report show better logging.