xamarin-macios/tests/xtro-sharpie
Alex Soto 8ef77344bc [Intents] Updated to Xcode 8.3 Beta1 and Beta2 (#1686)
Added more types to INIntentResolutionResultTests

Partial Test log:

[Runner executing:	Run Everything]
[MonoTouch Version:	10.3.99]
[Assembly:	Xamarin.WatchOS.dll (32 bits)]
[GC:	sgen]
[Apple Watch:	watchOS v3.2]
[Device Name:	iMacAlex]
[Device Locale:	en_US]
[Device Date/Time:	2/13/2017 11:45:10 PM]
[Bundle:	com.xamarin.monotouch-test.watchkitapp.watchkitextension]

 monotouchtest.dll

INIntentResolutionResultTests
	[PASS] INIntentResolutionResultTests.INBillPayeeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INBillTypeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INBooleanResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCallRecordTypeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCarAirCirculationModeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCarAudioSourceResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCarDefrosterResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCarSeatResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCarSignalOptionsResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INCurrencyAmountResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INDateComponentsRangeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INDateComponentsResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INDoubleResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INIntegerResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INIntentResolutionResultIsAbstractTest
	[PASS] INIntentResolutionResultTests.INMessageAttributeOptionsResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INMessageAttributeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INPaymentAccountResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INPaymentAmountResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INPaymentStatusResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INPersonResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INPlacemarkResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INRadioTypeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INRelativeReferenceResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INRelativeSettingResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INSpeakableStringResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INStringResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INTemperatureResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INWorkoutGoalUnitTypeResolutionResultPropertyTest
	[PASS] INIntentResolutionResultTests.INWorkoutLocationTypeResolutionResultPropertyTest
INIntentResolutionResultTests : 20 ms

* [Intent] Workaround for introspection tests

Right now introspection tests fail randomly on two test targets
iOSApiCtorInitTest and iOSApiSelectorTest so we are temporary
removing them from the test suite with the hope  to have them
fixed on the next beta
2017-03-28 14:40:10 -05:00
..
.gitignore [tests][xtro] Add optional generation of bindings for API in xtro's Makefile (#1732) 2017-03-28 09:46:11 -05:00
DesignatedInitializerCheck.cs [tests] Import 2016-05-26 15:06:52 +02:00
DllImportCheck.cs [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
EnumCheck.cs [tests][xtro] Add CVOptionFlags == uint64_t to avoid a NIE processing macOS 10.12 headers (#288) 2016-06-27 17:18:30 -04:00
FieldCheck.cs [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
Helpers.cs [tests][xtro] Some fixes, mostly data, so [ios|tvos|watchos].unclassified are empty (#1766) 2017-03-28 10:07:54 -05:00
Makefile [tests][xtro] Add optional generation of bindings for API in xtro's Makefile (#1732) 2017-03-28 09:46:11 -05:00
ObjCInterfaceCheck.cs [tests] Import 2016-05-26 15:06:52 +02:00
ObjCProtocolCheck.cs [tests] Import 2016-05-26 15:06:52 +02:00
Program.cs [tests] Import 2016-05-26 15:06:52 +02:00
README.md [tests][xtro] Add optional generation of bindings for API in xtro's Makefile (#1732) 2017-03-28 09:46:11 -05:00
Runner.cs [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
SelectorCheck.cs merge xcode8.2 into master 2016-12-12 21:26:23 -05:00
SharpieEntryPoint.cs [tests] Import 2016-05-26 15:06:52 +02:00
common.ignore [modelio] Add missing MDLMesh constructors and fix xtro (#1826) 2017-03-28 10:08:12 -05:00
common.pending [modelio] Add missing MDLMesh constructors and fix xtro (#1826) 2017-03-28 10:08:12 -05:00
ios.ignore merge xcode8.2 into master 2016-12-12 21:26:23 -05:00
ios.pending [Intents] Updated to Xcode 8.3 Beta1 and Beta2 (#1686) 2017-03-28 14:40:10 -05:00
osx.ignore [Mac] CoreBluetooth low hanging fruit bindings (#947) 2016-10-05 11:10:32 -05:00
osx.pending merge xcode8.2 into master 2016-12-12 21:26:23 -05:00
packages.config [tests] Import 2016-05-26 15:06:52 +02:00
tvos.ignore [tvos][mediaplayer] Update xtro definitions (#1654) 2017-03-28 09:28:40 -05:00
tvos.pending merge xcode8.2 into master 2016-12-12 21:26:23 -05:00
watchos.ignore [AVFoundation] Update bindings for Xcode 8.3 (#1713) 2017-03-28 09:56:48 -05:00
watchos.pending [Intents] Updated to Xcode 8.3 Beta1 and Beta2 (#1686) 2017-03-28 14:40:10 -05:00
xtro-plugin.csproj Add a 'repositorypath' to our NuGet.Config and update paths everywhere accordingly. (#1110) 2016-11-04 09:13:33 +01:00
xtro-sharpie.csproj Add a 'repositorypath' to our NuGet.Config and update paths everywhere accordingly. (#1110) 2016-11-04 09:13:33 +01:00
xtro-sharpie.sln [tests] Import 2016-05-26 15:06:52 +02:00

README.md

Extrospection Tests based on ObjectiveSharpie

Goals

  • Compare our bindings with the information available Apple's C/ObjC header files

Design

  • The runner visit the provided (managed) assembly first, then it visit the precompiled headers (pch file) for an SDK (e.g. iOS or OSX);

  • Rules can be called at any steps to gather data and or report issues. Rules are also called at the end of the visits;

  • Rules should be kept simple and the external files, e.g. known-issues, should be used to track special cases, along with comments with our decisions, i.e. why we tolarate them. That will ease code sharing across existing and new platforms;

Rules

Existing

Those should be good enough to be execute on the bots on each build.

1) classify: takes the output from either 'sharpie' or 'all' (ios.results and osx.results files) classifies them in [ios|osx|common].[ignore|pending|unclassified] files
	NOTE: 	to add an entry to the ignore and pending files, just copy the entire line from the unclassified file into them and add your own comments 
		(why we are not binding/fixing that? who is going to bind this? etc) 

Work In Progress

E.g. rules might be too noisy and require refinement, either in code or in external files.

Ideas

Anything we do not check but for which data is available, e.g.

  • NullAllowed;
  • Enum member values;
  • Generic updates to existing API (need to find a way to avoid braking changes first)

Notes

  • To develop you need a checkout of ObjectiveSharpie

  • clang is only built for 64bits so you need a 64bits mono to execute the tool. The latest mono versions (required to build xamarin-macios supply a mono64 binary);

  • You can use the gen-[platform] or gen-all target of the Makefile to generate C# code for all the API from the headers. You can then copy/paste from the (large) files to create the missing bindings;