diff options
49 files changed, 13 insertions, 4119 deletions
diff --git a/Xamarin.Forms.Core.iOS.UITests/BaseTestFixture.cs b/Xamarin.Forms.Core.iOS.UITests/BaseTestFixture.cs index 66d19ee0..c60ef35c 100644 --- a/Xamarin.Forms.Core.iOS.UITests/BaseTestFixture.cs +++ b/Xamarin.Forms.Core.iOS.UITests/BaseTestFixture.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -32,8 +33,17 @@ namespace Xamarin.Forms.Core.UITests #pragma warning restore 618 protected virtual void FixtureSetup () { - if (ShouldResetPerFixture) { - RelaunchApp (); + try + { + if (ShouldResetPerFixture) + { + RelaunchApp(); + } + } + catch (Exception ex) + { + Debug.WriteLine(ex); + throw; } } diff --git a/Xamarin.Forms.Loader/ExemptMembers.cs b/Xamarin.Forms.Loader/ExemptMembers.cs deleted file mode 100644 index da997f79..00000000 --- a/Xamarin.Forms.Loader/ExemptMembers.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Xamarin.Forms.Loader -{ - internal static class ExemptMembers - { - public static Dictionary<Type, IEnumerable<string>> UnitTestedTypes = new Dictionary<Type, IEnumerable<string>> - { - // Unit tested - { typeof (BindingTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (DateChangedEventArgs), new[] { "OldDate", "NewDate" } }, - { typeof (ElementEventArgs), new[] { "Element" } }, - { typeof (ItemTappedEventArgs), new[] { "Group", "Item" } }, - { typeof (ItemVisibilityEventArgs), new[] { "Item" } }, - { typeof (NavigationEventArgs), new[] { "Page" } }, - { - typeof (BindableObject), - new[] - { - "SetValue", "SetValue", "GetValue", "ClearValue", "ClearValue", "SetBinding", "RemoveBinding", "BindingContext", - "PropertyChanging", "PropertyChanged", "BindingContextChanged" - } - }, - { typeof (BindableObjectExtensions), new[] { "SetBinding", "SetBinding" } }, - { - typeof (BindableProperty), - new[] - { - "Create", "CreateReadOnly", "Create", "CreateReadOnly", "CreateAttached", "CreateAttachedReadOnly", - "CreateAttachedReadOnly", "CreateAttached", "PropertyName", "ReturnType", "DeclaringType", "DefaultValue", - "DefaultBindingMode", "IsReadOnly" - } - }, - { - typeof (BindingBase), - new[] { "EnableCollectionSynchronization", "DisableCollectionSynchronization", "Mode", "StringFormat" } - }, - { typeof (PropertyChangingEventArgs), new[] { "PropertyName" } }, - { typeof (SelectedItemChangedEventArgs), new[] { "SelectedItem" } }, - { typeof (TextChangedEventArgs), new[] { "OldTextValue", "NewTextValue" } }, - { typeof (ToggledEventArgs), new[] { "Value" } }, - { typeof (TypeConverter), new[] { "CanConvertFrom", "ConvertFrom", "ConvertFrom" } }, - { typeof (View), new[] { "VerticalOptions", "HorizontalOptions" } }, - { typeof (Easing), new[] { "Ease" } }, - { typeof (NavigationPage), new[] { "CurrentPage", "Pushed", "PoppedToRoot" } }, - { typeof (Page), new[] { "ForceLayout", "Padding", "LayoutChanged" } }, - { typeof (RectangleTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (ColorTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { - typeof (ResourceDictionary), - new[] { "Add", "Clear", "ContainsKey", "GetEnumerator", "Remove", "TryGetValue", "Item", "Count", "Keys", "Values" } - }, - { typeof (PointTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (ThicknessTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (ToolbarItem), new[] { "CommandParameter" } }, - { typeof (MessagingCenter), new[] { "Subscribe", "Subscribe", "Unsubscribe", "Unsubscribe", "Send", "Send" } }, - { typeof (TextCell), new[] { "CommandParameter" } }, - { typeof (ItemsView<>), new[] { "ItemsSource", "ItemTemplate" } }, - { - typeof (TableSectionBase), - new[] - { - "GetEnumerator", "Add", "Add", "Clear", "Contains", "CopyTo", "Remove", "IndexOf", "Insert", "RemoveAt", "Count", - "Item", "CollectionChanged" - } - }, - { typeof (DataTemplate), new[] { "CreateContent", "SetBinding", "SetValue", "Bindings", "Values" } }, - { typeof (AbsoluteLayout), new[] { "GetLayoutFlags", "GetLayoutBounds", "AutoSize" } }, - { typeof (BoundsTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (Button), new[] { "CommandParameter" } }, - { typeof (Command), new[] { "Execute", "CanExecute", "ChangeCanExecute", "CanExecuteChanged" } }, - { typeof (DependencyService), new[] { "Get" } }, - { typeof (KeyboardTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (MasterDetailPage), new[] { "IsPresentedChanged" } }, - { typeof (ProgressBar), new[] { "ProgressTo" } }, - { typeof (Constraint), new[] { "Constant", "RelativeToParent", "RelativeToView", "FromExpression" } }, - { typeof (ConstraintExpression), new[] { "ProvideValue", "Type", "Constant", "Factor", "Property", "ElementName" } }, - { typeof (ConstraintTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (BoundsConstraint), new[] { "FromExpression" } }, - { - typeof (RelativeLayout), - new[] { "GetXConstraint", "GetYConstraint", "GetWidthConstraint", "GetHeightConstraint", "GetBoundsConstraint" } - }, - { typeof (ScrollView), new[] { "ContentSize" } }, - { typeof (SearchBar), new[] { "SearchCommandParameter" } }, - { typeof (Slider), new[] { "ValueChanged" } }, - { typeof (Stepper), new[] { "ValueChanged" } }, - { typeof (Switch), new[] { "Toggled" } }, - { typeof (TemplateExtensions), new[] { "SetBinding" } }, - { - typeof (ViewExtensions), - new[] - { - "TranslateTo", "LayoutTo", "RelRotateTo", "RelScaleTo", "RotateTo", "RotateYTo", "RotateXTo", "ScaleTo", "FadeTo", - "CancelAnimations" - } - }, - { typeof (WebView), new[] { "Eval", "GoBack", "GoForward", "CanGoBack", "CanGoForward", "Navigating", "Navigated" } }, - { typeof (WebViewSourceTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { - typeof (Animation), - new[] { "GetEnumerator", "Insert", "Commit", "Add", "WithConcurrent", "WithConcurrent", "GetCallback" } - }, - { - typeof (AnimationExtensions), - new[] - { - "AnimateKinetic", "Animate", "Interpolate", "Animate", "Animate", "Animate", "AbortAnimation", - "AnimationIsRunning" - } - }, - { typeof (UriTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (GridLengthTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (Grid), new[] { "GetRow", "GetRowSpan", "GetColumn", "GetColumnSpan" } }, - { typeof (RowDefinition), new[] { "Height", "SizeChanged" } }, - { typeof (ColumnDefinition), new[] { "Width", "SizeChanged" } }, - { - typeof (DefinitionCollection<>), - new[] - { - "IndexOf", "Insert", "RemoveAt", "Add", "Clear", "Contains", "CopyTo", "Remove", "GetEnumerator", "Item", "Count", - "IsReadOnly", "ItemSizeChanged" - } - }, - { - typeof (Element), - new[] - { - "Parent", "ParentView", "ClassId", "StyleId", "Id", "ChildAdded", "ChildRemoved", "DescendantAdded", - "DescendantRemoved" - } - }, - { typeof (Layout), new[] { "GetSizeRequest", "ForceLayout", "LayoutChildIntoBoundingRegion", "LayoutChanged" } }, - { typeof (FocusEventArgs), new[] { "IsFocused", "VisualElement" } }, - { - typeof (VisualElement), - new[] - { - "BatchBegin", "BatchCommit", "GetSizeRequest", "WidthRequest", "HeightRequest", "MinimumWidthRequest", - "MinimumHeightRequest", "Resources", "ChildrenReordered", "SizeChanged", "MeasureInvalidated", "Focused", - "Unfocused" - } - }, - { typeof (NameScopeExtensions), new[] { "FindByName" } }, - { typeof (FontTypeConverter), new[] { "CanConvertFrom", "ConvertFrom" } }, - { typeof (Picker), new[] { "SelectedIndexChanged" } }, - { typeof (BindablePropertyKey), new[] { "BindableProperty" } }, - { typeof (TappedEventArgs), new[] { "Parameter" } } - }; - - public static Dictionary<Type, IEnumerable<string>> CannotTestTypes = new Dictionary<Type, IEnumerable<string>> - { - { typeof (Button), new[] { "BorderColor", "BorderRadius", "BorderWidth", "Image" } } - }; - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/FormsLoader.cs b/Xamarin.Forms.Loader/FormsLoader.cs deleted file mode 100644 index d6826830..00000000 --- a/Xamarin.Forms.Loader/FormsLoader.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Xamarin.Forms.Core.UITests; - -namespace Xamarin.Forms.Loader -{ - internal sealed class FormsLoader - { - static IEnumerable<FormsType> formsTypes; - static IEnumerable<TestType> iOSTestTypes; - static IEnumerable<TestType> androidTestTypes; - - public FormsLoader() - { - var formsCoreAssembly = typeof (View).Assembly; - var iOSUITestAssembly = typeof (iOSLoaderIdentifier).Assembly; - var androidUITestAssembly = typeof (AndroidLoaderIdentifier).Assembly; - - // skip interfaces, delegates, classes that inherit from attribute - formsTypes = - from o in formsCoreAssembly.GetTypes() - where o.IsVisible && o.IsClass && !o.IsDelegate() && !o.InheritsFromAttribute() && !o.InheritsFromException() - select new FormsType(this, o); - - iOSTestTypes = - from o in iOSUITestAssembly.GetTypes() - where o.IsTestFixture() && o.HasCategoryAttribute() - select new TestType(this, o); - - androidTestTypes = - from o in androidUITestAssembly.GetTypes() - where o.IsTestFixture() && o.HasCategoryAttribute() - select new TestType(this, o); - } - - public IEnumerable<FormsType> FormsTypes() - { - return formsTypes; - } - - public IEnumerable<TestType> IOSTestTypes() - { - return iOSTestTypes; - } - - public IEnumerable<TestType> AndroidTestTypes() - { - return androidTestTypes; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/FormsMember.cs b/Xamarin.Forms.Loader/FormsMember.cs deleted file mode 100644 index 1d12ddf9..00000000 --- a/Xamarin.Forms.Loader/FormsMember.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Reflection; - -namespace Xamarin.Forms.Loader -{ - internal sealed class FormsMember : ILoaderElement - { - internal FormsMember(FormsType formsType, MemberInfo memberInfo) - { - FormsType = formsType; - MemberInfo = memberInfo; - } - - public FormsType FormsType { get; } - - public MemberInfo MemberInfo { get; } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/FormsType.cs b/Xamarin.Forms.Loader/FormsType.cs deleted file mode 100644 index 44b4af7a..00000000 --- a/Xamarin.Forms.Loader/FormsType.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -namespace Xamarin.Forms.Loader -{ - internal sealed class FormsType : ILoaderElement - { - readonly IEnumerable<FormsMember> formsMembers; - - internal FormsType(FormsLoader formsLoader, Type type) - { - FormsLoader = formsLoader; - Type = type; - - const BindingFlags bindingFlags = BindingFlags.DeclaredOnly | - BindingFlags.Public | - BindingFlags.Instance | - BindingFlags.Static; - - const MemberTypes memberTypes = MemberTypes.Event | - MemberTypes.Method | - MemberTypes.Property; - - formsMembers = - from o in Type.GetMember("*", memberTypes, bindingFlags) - where - o.IsPublic() && - !o.IsCompilerGenerated() && - !o.IsEqualityOverride() && - !o.IsToStringOverride() && - !LoaderExtensions.IsUnitTested(type, o) - select new FormsMember(this, o); - } - - public FormsLoader FormsLoader { get; } - - public Type Type { get; } - - public IEnumerable<FormsMember> Members() - { - return formsMembers; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/ILoaderElement.cs b/Xamarin.Forms.Loader/ILoaderElement.cs deleted file mode 100644 index 7d703fdb..00000000 --- a/Xamarin.Forms.Loader/ILoaderElement.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Xamarin.Forms.Loader -{ - internal interface ILoaderElement - { - string ToString(); - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/InvalidTestCloudUploadParameters.cs b/Xamarin.Forms.Loader/InvalidTestCloudUploadParameters.cs deleted file mode 100644 index a48cd587..00000000 --- a/Xamarin.Forms.Loader/InvalidTestCloudUploadParameters.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Xamarin.Forms.Loader -{ - public sealed class InvalidTestCloudUploadParameters : LoaderException - { - readonly string parameters; - - public InvalidTestCloudUploadParameters(string parameters) - { - this.parameters = parameters; - } - - public override string Message - { - get { return "Missing Category attribute: " + parameters; } - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/LoaderException.cs b/Xamarin.Forms.Loader/LoaderException.cs deleted file mode 100644 index 895a5198..00000000 --- a/Xamarin.Forms.Loader/LoaderException.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Xamarin.Forms.Loader -{ - public class LoaderException : Exception - { - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/LoaderExtensions.cs b/Xamarin.Forms.Loader/LoaderExtensions.cs deleted file mode 100644 index 9c0b91fa..00000000 --- a/Xamarin.Forms.Loader/LoaderExtensions.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Linq; -using System.Reflection; -using NUnit.Framework; -using Xamarin.Forms.CustomAttributes; - -namespace Xamarin.Forms.Loader -{ - internal static class LoaderExtensions - { - public static bool InheritsFromException(this Type type) - { - if (type.IsSubclassOf(typeof (Exception))) - return true; - return false; - } - - public static bool InheritsFromAttribute(this Type type) - { - if (type.IsSubclassOf(typeof (Attribute))) - return true; - return false; - } - - public static bool IsDelegate(this Type type) - { - // ignore delegates - if (type.BaseType == typeof (MulticastDelegate)) - return true; - return false; - } - - public static bool IsTestFixture(this Type type) - { - var attributes = type.GetCustomAttributes(); - if (attributes.OfType<TestFixtureAttribute>().Any()) - return true; - return false; - } - - public static bool HasTestAttribute(this MemberInfo memberInfo) - { - var attributes = memberInfo.GetCustomAttributes(); - return attributes.Any(attr => attr is UiTestAttribute); - } - - public static bool IsUnitTested(Type type, MemberInfo memberInfo) - { - if (ExemptMembers.UnitTestedTypes.ContainsKey(type)) - { - if (ExemptMembers.UnitTestedTypes[type].Contains(memberInfo.Name)) - return true; - } - return false; - } - - public static bool HasTestExemptAttribute(this MemberInfo memberInfo) - { - var attributes = memberInfo.GetCustomAttributes(); - return attributes.Any(attr => attr is UiTestExemptAttribute); - } - - public static bool IsSetupOrTearDown(this MemberInfo memberInfo) - { - var attributes = memberInfo.GetCustomAttributes(); - return - attributes.Any( - attr => - attr is SetUpAttribute || attr is TearDownAttribute || attr is TestFixtureSetUpAttribute || - attr is TestFixtureTearDownAttribute); - } - - public static bool IsEqualityOverride(this MemberInfo memberInfo) - { - return - memberInfo.Name == "Equals" || - memberInfo.Name == "GetHashCode" || - memberInfo.Name == "GetType"; - } - - public static bool IsToStringOverride(this MemberInfo memberInfo) - { - return memberInfo.Name == "ToString"; - } - - public static bool HasCategoryAttribute(this Type type) - { - var attributes = type.GetCustomAttributes(); - if (attributes.OfType<CategoryAttribute>().Any()) - return true; - //throw new MissingCategoryOnTestFixtureException (type.Name); - return false; - } - - public static bool IsPublic(this MemberInfo memberInfo) - { - var type = memberInfo as Type; - if (type != null) - return type.IsPublic; - - var method = memberInfo as MethodInfo; - if (method != null) - return method.IsPublic; - - var property = memberInfo as PropertyInfo; - if (property != null) - return true; // binding flags determine public - - var evt = memberInfo as EventInfo; - if (evt != null) - return true; // binding flags determine public - - throw new LoaderException(); - } - - public static bool IsCompilerGenerated(this MemberInfo memberInfo) - { - // ignore autogenerated get_ and set_ methods - var method = memberInfo as MethodInfo; - if (method != null && method.IsSpecialName) - return true; - - return false; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/Logger.cs b/Xamarin.Forms.Loader/Logger.cs deleted file mode 100644 index ad0877e8..00000000 --- a/Xamarin.Forms.Loader/Logger.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.IO; - -namespace Xamarin.Forms.Loader -{ - internal static class Logger - { - static StreamWriter writer; - - public static void Init() - { - writer = new StreamWriter("../../Logs/Xamarin.Forms.UITest.Validator.log", false); - } - - public static void Log(string text) - { - writer.WriteLine(text); - } - - public static void LogLine(string line = "") - { - writer.WriteLine(line); - } - - public static void Close() - { - writer.Flush(); - writer.Close(); - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/LoggerWriter.cs b/Xamarin.Forms.Loader/LoggerWriter.cs deleted file mode 100644 index 98939795..00000000 --- a/Xamarin.Forms.Loader/LoggerWriter.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Xamarin.Forms.Loader -{ - internal enum LoggerWriter - { - Core, - Test - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/MissingCategoryOnTestFixtureException.cs b/Xamarin.Forms.Loader/MissingCategoryOnTestFixtureException.cs deleted file mode 100644 index a4cd4348..00000000 --- a/Xamarin.Forms.Loader/MissingCategoryOnTestFixtureException.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Xamarin.Forms.Loader -{ - public sealed class MissingCategoryOnTestFixtureException : LoaderException - { - readonly string fixtureName; - - public MissingCategoryOnTestFixtureException(string fixtureName) - { - this.fixtureName = fixtureName; - } - - public override string Message - { - get { return "Missing Category attribute: " + fixtureName; } - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/Properties/AssemblyInfo.cs b/Xamarin.Forms.Loader/Properties/AssemblyInfo.cs deleted file mode 100644 index b9ca2d1a..00000000 --- a/Xamarin.Forms.Loader/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly: AssemblyTitle("Xamarin.Form.FormsLoader")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Xamarin.Form.FormsLoader")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly: Guid("c1b9ec92-9f75-41a1-a3fa-e88d59af6794")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: InternalsVisibleTo("Xamarin.Forms.UITest.Validator")] -[assembly: InternalsVisibleTo("Xamarin.Forms.UITest.TestCloud")]
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/TestMember.cs b/Xamarin.Forms.Loader/TestMember.cs deleted file mode 100644 index 95eb0ec9..00000000 --- a/Xamarin.Forms.Loader/TestMember.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Collections.Generic; -using System.Reflection; -using NUnit.Framework; -using Xamarin.Forms.CustomAttributes; - -namespace Xamarin.Forms.Loader -{ - internal sealed class TestMember : ILoaderElement - { - readonly IEnumerable<CategoryAttribute> categoryAttributes; - - readonly IEnumerable<UiTestAttribute> uiTestAttributes; - - public TestMember(TestType uiTestType, MemberInfo memberInfo) - { - DeclaringType = uiTestType; - MemberInfo = memberInfo; - - // handle public overrides that inherit attributes - uiTestAttributes = memberInfo.GetCustomAttributes<UiTestAttribute>(); - categoryAttributes = memberInfo.GetCustomAttributes<CategoryAttribute>(); - } - - internal FormsLoader FormsLoader - { - get { return DeclaringType.FormsLoader; } - } - - public TestType DeclaringType { get; } - - public MemberInfo MemberInfo { get; } - - public IEnumerable<UiTestAttribute> UiTestAttributes() - { - return uiTestAttributes; - } - - public IEnumerable<CategoryAttribute> CategoryAttributes() - { - return categoryAttributes; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/TestType.cs b/Xamarin.Forms.Loader/TestType.cs deleted file mode 100644 index 50e0e639..00000000 --- a/Xamarin.Forms.Loader/TestType.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using NUnit.Framework; - -namespace Xamarin.Forms.Loader -{ - internal sealed class TestType : ILoaderElement - { - readonly IEnumerable<CategoryAttribute> _categories; - readonly IEnumerable<TestMember> _members; - - internal TestType(FormsLoader formsLoader, Type type) - { - FormsLoader = formsLoader; - Type = type; - - _members = - from o in Type.GetMethods() - where !o.IsSetupOrTearDown() && !o.IsEqualityOverride() && !o.IsToStringOverride() - select new TestMember(this, o); - - _categories = type.GetCustomAttributes<CategoryAttribute>(); - } - - public FormsLoader FormsLoader { get; } - - public Type Type { get; } - - public IEnumerable<TestMember> Members() - { - return _members; - } - - public IEnumerable<CategoryAttribute> Categories() - { - return _categories; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/Xamarin.Forms.Loader.csproj b/Xamarin.Forms.Loader/Xamarin.Forms.Loader.csproj deleted file mode 100644 index ad05836f..00000000 --- a/Xamarin.Forms.Loader/Xamarin.Forms.Loader.csproj +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{00211725-2F89-4E2C-AC5A-38E5FF61BE67}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Xamarin.Forms.Loader</RootNamespace> - <AssemblyName>Xamarin.Forms.Loader</AssemblyName> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> - <RestorePackages>true</RestorePackages> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> - <DebugSymbols>true</DebugSymbols> - <OutputPath>bin\Turkey\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DebugType>full</DebugType> - <PlatformTarget>AnyCPU</PlatformTarget> - <ErrorReport>prompt</ErrorReport> - <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - </PropertyGroup> - <ItemGroup> - <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="ExemptMembers.cs" /> - <Compile Include="FormsMember.cs" /> - <Compile Include="FormsType.cs" /> - <Compile Include="ILoaderElement.cs" /> - <Compile Include="FormsLoader.cs" /> - <Compile Include="InvalidTestCloudUploadParameters.cs" /> - <Compile Include="LoaderException.cs" /> - <Compile Include="LoaderExtensions.cs" /> - <Compile Include="Logger.cs" /> - <Compile Include="LoggerWriter.cs" /> - <Compile Include="MissingCategoryOnTestFixtureException.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="TestMember.cs" /> - <Compile Include="TestType.cs" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj"> - <Project>{a34ebe01-25bf-4e69-a2dc-2288dc625541}</Project> - <Name>Xamarin.Forms.Core.Android.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj"> - <Project>{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}</Project> - <Name>Xamarin.Forms.Core.iOS.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> - <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> - <Name>Xamarin.Forms.Core</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj"> - <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project> - <Name>Xamarin.Forms.CustomAttributes</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <None Include="packages.config" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> - </Target> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project>
\ No newline at end of file diff --git a/Xamarin.Forms.Loader/packages.config b/Xamarin.Forms.Loader/packages.config deleted file mode 100644 index c714ef3a..00000000 --- a/Xamarin.Forms.Loader/packages.config +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="NUnit" version="2.6.4" targetFramework="net45" /> -</packages>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/App.config b/Xamarin.Forms.UITest.TestCloud/App.config deleted file mode 100644 index 8e156463..00000000 --- a/Xamarin.Forms.UITest.TestCloud/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/DeviceSet.cs b/Xamarin.Forms.UITest.TestCloud/DeviceSet.cs deleted file mode 100644 index 3afa0959..00000000 --- a/Xamarin.Forms.UITest.TestCloud/DeviceSet.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections.Generic; - -namespace Xamarin.Forms.UITest.TestCloud -{ - internal class DeviceSet - { - public DeviceSet(List<Platform> deviceSetPlatform, string id, List<string> devices) - { - Id = id; - DeviceSetPlatform = deviceSetPlatform; - Devices = devices; - } - - public string Id { get; private set; } - - public List<Platform> DeviceSetPlatform { get; private set; } - - public List<string> Devices { get; private set; } - - internal enum Platform - { - None, - Android, - IOs, - IOsClassic - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/DeviceSets.cs b/Xamarin.Forms.UITest.TestCloud/DeviceSets.cs deleted file mode 100644 index 321410ed..00000000 --- a/Xamarin.Forms.UITest.TestCloud/DeviceSets.cs +++ /dev/null @@ -1,169 +0,0 @@ -using System.Collections.Generic; - -namespace Xamarin.Forms.UITest.TestCloud -{ - internal static class DeviceSets - { - public static readonly DeviceSet AndroidMassiveSet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "ddaf5646", new List<string> - { - "150+ devices!" - }); - - public static readonly DeviceSet IOsMassiveSet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "cc20a257", - new List<string> - { - "60+ devices!" - }); - - // Android - public static readonly DeviceSet AndroidFastParallel = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "7e376fe0", new List<string> - { - "LG Nexus 5 - Android 4.4.4" - }); - - public static readonly DeviceSet Android5 = new DeviceSet( - new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "f2d90195", new List<string> - { - "LG Nexus 5- Android 5.1.1" - }); - - public static readonly DeviceSet Android6 = new DeviceSet( - new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "012c8f06", new List<string> - { - "LG Nexus 5 - Android 6.0.1" - }); - - public static readonly DeviceSet SethLocalDeviceSetAndroid = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "9e76018b", new List<string> - { - "Google Nexus 7 - 4.4.2", - "Samsung Galaxy S4 (Google Play Edition GT-I9505G) - Seth -> 4.4, Test Cloud -> 4.4.2 (closest match)" - }); - - public static readonly DeviceSet IcsSmallSet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "fc61dbe3", new List<string> - { - "Amazon Kindle Fire (2nd Gen) - 4.0.3", - "HTC Desire - 4.0.3", - "Samsung Galaxy Tab 2 - 4.0.4", - "Sony Xperia neo L - 4.0.3" - }); - - public static readonly DeviceSet AndroidAllApiSmallSet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.Android }, "4f912d99", new List<string> - { - "HTC Sensation XL - 4.0.3", - "Amazon Kindle Fire (2nd Generation) - 4.0.3", - "Samsung Galaxy Tab 2 - 4.0.4", - "Motorola ATRIX 2 - 4.0.4", - "Samsung Galaxy Note II - 4.1.1", - "HP Slate 7 - 4.1.1", - "Sony Xperia Z - 4.1.2", - "Samsung Galaxy Tab 3 7.0 - 4.1.2", - "Google Nexus 7 - 4.2", - "Oppo R819 - 4.2.1", - "Samsung Galaxy S4 Zoom - 4.2.2", - "Acer Iconia Tab A1 - 4.2.2", - "Samsung Galaxy S4 (Octo-core) - 4.3", - "Oppo N1 - 4.3", - "LG Nexus 5 - 4.4", - "Samsung Google Nexus 10 - 4.4", - "Samsung Galaxy S5 - 4.4.2", - "Samsung Galaxy Note - 3 (Octo-Core) - 4.4.2" - }); - - public static readonly DeviceSet IOsFastParallel = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "7f2fa3ae", - new List<string> - { - "Apple iPad Mini Retina - iOS 7.1.2" - }); - - // iOS - public static readonly DeviceSet SethLocalDeviceSetiOs = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "b417f165", - new List<string> - { - "Apple iPhone 5 - iOS 7.1.1", - "Apple iPad Air - iOS 7.1.1" - }); - - public static readonly DeviceSet IOsAllApiSmallSet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "d2d6440e", - new List<string> - { - "Apple iPod Touch 5th Gen - iOS 6.0.1", - "Apple iPad 2 - iOS 6.1.3", - "Apple iPhone 4 - iOS 6.1.3", - "Apple iPhone 5 - iOS 6.1.4", - "Apple iPhone 3GS - iOS 6.1.6", - "Apple iPod Touch 4th Gen - iOS 6.1.6", - "Apple iPhone 5C - iOS 7.0.2", - "Apple iPad Mini - iOS 7.0.3", - "Apple iPad 4 - iOS 7.0.4", - "Apple iPhone 5S - iOS 7.0.4", - "Apple iPad Air - iOS 7.1", - "Apple iPhone 5C - iOS 7.1", - "Apple iPad Air - iOS 7.1.1", - "Apple iPhone 4S - iOS 7.1.1", - "Apple iPhone 5 - iOS 7.1.1" - }); - - public static readonly DeviceSet IOs7 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "ad7b679b", - new List<string> - { - "Apple Ipad Retina Mini - iOS 7.1.2" - }); - - - public static readonly DeviceSet IOs8 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "b859db6b", - new List<string> - { - "Apple Iphone 6 plus- iOS 8.4.1" - }); - - public static readonly DeviceSet IOs7AndiOs8 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "5190fc68", - new List<string> - { - "Apple Ipad Retina Mini - iOS 7.1.2", - "Apple Iphone 6 Plus - 8.1.3" - }); - - public static readonly DeviceSet IOs6PhoneTablet = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "212c4682", - new List<string> - { - "Apple Ipad 4 - iOS 6.1.3", - "Apple Iphone 4 - iOS 6.1.3" - }); - - public static readonly DeviceSet IOs9 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "dc3140fd", - new List<string> - { - "Apple Iphone 6 - iOS 9.0", - "Apple Ipad Air - iOS 9.0" - }); - - public static readonly DeviceSet IOs91 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "7f4b13f8", - new List<string> - { - "Apple Iphone 6S - iOS 9.1", - "Apple Ipad Air 2 - iOS 9.1" - }); - - public static readonly DeviceSet IOs93 = - new DeviceSet(new List<DeviceSet.Platform> { DeviceSet.Platform.IOs, DeviceSet.Platform.IOsClassic }, "3bd6076f", - new List<string> - { - "Apple Iphone 5S - iOS 9.3.1" - }); - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/LoaderActions.cs b/Xamarin.Forms.UITest.TestCloud/LoaderActions.cs deleted file mode 100644 index 93edee2b..00000000 --- a/Xamarin.Forms.UITest.TestCloud/LoaderActions.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Xamarin.Forms.Loader; - -namespace Xamarin.Forms.UITest.TestCloud -{ - internal class LoaderActions - { - readonly IEnumerable<string> _testCategories; - - public LoaderActions() - { - var formsLoader = new FormsLoader(); - - var categoriesOnTypes = - from type in formsLoader.IOSTestTypes() - from categoryAttribute in type.Categories() - select categoryAttribute.Name; - - var categoriesOnMembers = - from type in formsLoader.IOSTestTypes() - from members in type.Members() - from categoryAttribute in members.CategoryAttributes() - select categoryAttribute.Name; - - _testCategories = categoriesOnTypes.Union(categoriesOnMembers); - } - - public void ListCategories() - { - foreach (string category in _testCategories) - Console.WriteLine(category); - } - - public bool ValidateCategory(string category) - { - return _testCategories.Any(k => k == category) || category == "All"; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/ArgumentSource.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/ArgumentSource.cs deleted file mode 100644 index da24d02b..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/ArgumentSource.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Text; - -namespace Mono.Options -{ - public abstract class ArgumentSource - { - public abstract string Description { get; } - - public abstract string[] GetNames(); - public abstract bool GetArguments(string value, out IEnumerable<string> replacement); - - public static IEnumerable<string> GetArgumentsFromFile(string file) - { - return GetArguments(File.OpenText(file), true); - } - - public static IEnumerable<string> GetArguments(TextReader reader) - { - return GetArguments(reader, false); - } - - // Cribbed from mcs/driver.cs:LoadArgs(string) - static IEnumerable<string> GetArguments(TextReader reader, bool close) - { - try - { - StringBuilder arg = new StringBuilder(); - - string line; - while ((line = reader.ReadLine()) != null) - { - int t = line.Length; - - for (int i = 0; i < t; i++) - { - char c = line[i]; - - if (c == '"' || c == '\'') - { - char end = c; - - for (i++; i < t; i++) - { - c = line[i]; - - if (c == end) - break; - arg.Append(c); - } - } - else if (c == ' ') - { - if (arg.Length > 0) - { - yield return arg.ToString(); - arg.Length = 0; - } - } - else - arg.Append(c); - } - if (arg.Length > 0) - { - yield return arg.ToString(); - arg.Length = 0; - } - } - } - finally - { - if (close) - reader.Close(); - } - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/Option.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/Option.cs deleted file mode 100644 index f91934c2..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/Option.cs +++ /dev/null @@ -1,221 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; - -namespace Mono.Options -{ - public abstract class Option - { - static readonly char[] NameTerminator = { '=', ':' }; - - protected Option(string prototype, string description) - : this(prototype, description, 1, false) - { - } - - protected Option(string prototype, string description, int maxValueCount) - : this(prototype, description, maxValueCount, false) - { - } - - protected Option(string prototype, string description, int maxValueCount, bool hidden) - { - if (prototype == null) - throw new ArgumentNullException("prototype"); - if (prototype.Length == 0) - throw new ArgumentException("Cannot be the empty string.", "prototype"); - if (maxValueCount < 0) - throw new ArgumentOutOfRangeException("maxValueCount"); - - Prototype = prototype; - Description = description; - MaxValueCount = maxValueCount; - Names = (this is OptionSet.Category) - // append GetHashCode() so that "duplicate" categories have distinct - // names, e.g. adding multiple "" categories should be valid. - ? new[] { prototype + GetHashCode() } - : prototype.Split('|'); - - if (this is OptionSet.Category) - return; - - OptionValueType = ParsePrototype(); - Hidden = hidden; - - if (MaxValueCount == 0 && OptionValueType != OptionValueType.None) - { - throw new ArgumentException( - "Cannot provide maxValueCount of 0 for OptionValueType.Required or " + - "OptionValueType.Optional.", - "maxValueCount"); - } - if (OptionValueType == OptionValueType.None && maxValueCount > 1) - { - throw new ArgumentException( - string.Format("Cannot provide maxValueCount of {0} for OptionValueType.None.", maxValueCount), - "maxValueCount"); - } - if (Array.IndexOf(Names, "<>") >= 0 && - ((Names.Length == 1 && OptionValueType != OptionValueType.None) || - (Names.Length > 1 && MaxValueCount > 1))) - { - throw new ArgumentException( - "The default option handler '<>' cannot require values.", - "prototype"); - } - } - - public string Prototype { get; } - - public string Description { get; } - - public OptionValueType OptionValueType { get; } - - public int MaxValueCount { get; } - - public bool Hidden { get; } - - internal string[] Names { get; } - - internal string[] ValueSeparators { get; private set; } - - public string[] GetNames() - { - return (string[])Names.Clone(); - } - - public string[] GetValueSeparators() - { - if (ValueSeparators == null) - return new string[0]; - return (string[])ValueSeparators.Clone(); - } - - protected static T Parse<T>(string value, OptionContext c) - { - Type tt = typeof (T); - bool nullable = tt.IsValueType && tt.IsGenericType && - !tt.IsGenericTypeDefinition && - tt.GetGenericTypeDefinition() == typeof (Nullable<>); - Type targetType = nullable ? tt.GetGenericArguments()[0] : typeof (T); - TypeConverter conv = TypeDescriptor.GetConverter(targetType); - T t = default(T); - try - { - if (value != null) - t = (T)conv.ConvertFromString(value); - } - catch (Exception e) - { - throw new OptionException( - string.Format( - c.OptionSet.MessageLocalizer("Could not convert string `{0}' to type {1} for option `{2}'."), - value, targetType.Name, c.OptionName), - c.OptionName, e); - } - return t; - } - - OptionValueType ParsePrototype() - { - char type = '\0'; - List<string> seps = new List<string>(); - for (int i = 0; i < Names.Length; ++i) - { - string name = Names[i]; - if (name.Length == 0) - throw new ArgumentException("Empty option names are not supported.", "prototype"); - - int end = name.IndexOfAny(NameTerminator); - if (end == -1) - continue; - Names[i] = name.Substring(0, end); - if (type == '\0' || type == name[end]) - type = name[end]; - else - { - throw new ArgumentException( - string.Format("Conflicting option types: '{0}' vs. '{1}'.", type, name[end]), - "prototype"); - } - AddSeparators(name, end, seps); - } - - if (type == '\0') - return OptionValueType.None; - - if (MaxValueCount <= 1 && seps.Count != 0) - { - throw new ArgumentException( - string.Format("Cannot provide key/value separators for Options taking {0} value(s).", MaxValueCount), - "prototype"); - } - if (MaxValueCount > 1) - { - if (seps.Count == 0) - ValueSeparators = new[] { ":", "=" }; - else if (seps.Count == 1 && seps[0].Length == 0) - ValueSeparators = null; - else - ValueSeparators = seps.ToArray(); - } - - return type == '=' ? OptionValueType.Required : OptionValueType.Optional; - } - - static void AddSeparators(string name, int end, ICollection<string> seps) - { - int start = -1; - for (int i = end + 1; i < name.Length; ++i) - { - switch (name[i]) - { - case '{': - if (start != -1) - { - throw new ArgumentException( - string.Format("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - start = i + 1; - break; - case '}': - if (start == -1) - { - throw new ArgumentException( - string.Format("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - seps.Add(name.Substring(start, i - start)); - start = -1; - break; - default: - if (start == -1) - seps.Add(name[i].ToString()); - break; - } - } - if (start != -1) - { - throw new ArgumentException( - string.Format("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - } - - public void Invoke(OptionContext c) - { - OnParseComplete(c); - c.OptionName = null; - c.Option = null; - c.OptionValues.Clear(); - } - - protected abstract void OnParseComplete(OptionContext c); - - public override string ToString() - { - return Prototype; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionAction.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionAction.cs deleted file mode 100644 index 2c8fd7b3..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionAction.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Mono.Options -{ - public delegate void OptionAction<TKey, TValue>(TKey key, TValue value); -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionContext.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionContext.cs deleted file mode 100644 index 4a718360..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionContext.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Mono.Options -{ - public class OptionContext - { - public OptionContext(OptionSet set) - { - OptionSet = set; - OptionValues = new OptionValueCollection(this); - } - - public Option Option { get; set; } - - public string OptionName { get; set; } - - public int OptionIndex { get; set; } - - public OptionSet OptionSet { get; } - - public OptionValueCollection OptionValues { get; } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionException.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionException.cs deleted file mode 100644 index 8a8229e7..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionException.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Runtime.Serialization; -using System.Security.Permissions; - -namespace Mono.Options -{ - [Serializable] - public class OptionException : Exception - { - public OptionException() - { - } - - public OptionException(string message, string optionName) - : base(message) - { - OptionName = optionName; - } - - public OptionException(string message, string optionName, Exception innerException) - : base(message, innerException) - { - OptionName = optionName; - } - - protected OptionException(SerializationInfo info, StreamingContext context) - : base(info, context) - { - OptionName = info.GetString("OptionName"); - } - - public string OptionName { get; } - - [SecurityPermission(SecurityAction.LinkDemand, SerializationFormatter = true)] - public override void GetObjectData(SerializationInfo info, StreamingContext context) - { - base.GetObjectData(info, context); - info.AddValue("OptionName", OptionName); - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionSet.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionSet.cs deleted file mode 100644 index 5d406705..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionSet.cs +++ /dev/null @@ -1,718 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; - -namespace Mono.Options -{ - public class OptionSet : KeyedCollection<string, Option> - { - const int OptionWidth = 29; - const int DescriptionFirstWidth = 80 - OptionWidth; - const int DescriptionRemWidth = 80 - OptionWidth - 2; - - readonly Regex _valueOption = new Regex( - @"^(?<flag>--|-|/)(?<name>[^:=]+)((?<sep>[:=])(?<value>.*))?$"); - - readonly List<ArgumentSource> _sources = new List<ArgumentSource>(); - - public OptionSet() - : this(delegate(string f) { return f; }) - { - } - - public OptionSet(Converter<string, string> localizer) - { - MessageLocalizer = localizer; - ArgumentSources = new ReadOnlyCollection<ArgumentSource>(_sources); - } - - public Converter<string, string> MessageLocalizer { get; } - - public ReadOnlyCollection<ArgumentSource> ArgumentSources { get; } - - protected override string GetKeyForItem(Option item) - { - if (item == null) - throw new ArgumentNullException("option"); - if (item.Names != null && item.Names.Length > 0) - return item.Names[0]; - // This should never happen, as it's invalid for Option to be - // constructed w/o any names. - throw new InvalidOperationException("Option has no names!"); - } - - [Obsolete("Use KeyedCollection.this[string]")] - protected Option GetOptionForName(string option) - { - if (option == null) - throw new ArgumentNullException("option"); - try - { - return base[option]; - } - catch (KeyNotFoundException) - { - return null; - } - } - - protected override void InsertItem(int index, Option item) - { - base.InsertItem(index, item); - AddImpl(item); - } - - protected override void RemoveItem(int index) - { - Option p = Items[index]; - base.RemoveItem(index); - // KeyedCollection.RemoveItem() handles the 0th item - for (int i = 1; i < p.Names.Length; ++i) - Dictionary.Remove(p.Names[i]); - } - - protected override void SetItem(int index, Option item) - { - base.SetItem(index, item); - AddImpl(item); - } - - void AddImpl(Option option) - { - if (option == null) - throw new ArgumentNullException("option"); - List<string> added = new List<string>(option.Names.Length); - try - { - // KeyedCollection.InsertItem/SetItem handle the 0th name. - for (int i = 1; i < option.Names.Length; ++i) - { - Dictionary.Add(option.Names[i], option); - added.Add(option.Names[i]); - } - } - catch (Exception) - { - foreach (string name in added) - Dictionary.Remove(name); - throw; - } - } - - public OptionSet Add(string header) - { - if (header == null) - throw new ArgumentNullException("header"); - Add(new Category(header)); - return this; - } - - public new OptionSet Add(Option option) - { - base.Add(option); - return this; - } - - public OptionSet Add(string prototype, Action<string> action) - { - return Add(prototype, null, action); - } - - public OptionSet Add(string prototype, string description, Action<string> action) - { - return Add(prototype, description, action, false); - } - - public OptionSet Add(string prototype, string description, Action<string> action, bool hidden) - { - if (action == null) - throw new ArgumentNullException("action"); - Option p = new ActionOption(prototype, description, 1, - delegate(OptionValueCollection v) { action(v[0]); }, hidden); - base.Add(p); - return this; - } - - public OptionSet Add(string prototype, OptionAction<string, string> action) - { - return Add(prototype, null, action); - } - - public OptionSet Add(string prototype, string description, OptionAction<string, string> action) - { - return Add(prototype, description, action, false); - } - - public OptionSet Add(string prototype, string description, OptionAction<string, string> action, bool hidden) - { - if (action == null) - throw new ArgumentNullException("action"); - Option p = new ActionOption(prototype, description, 2, - delegate(OptionValueCollection v) { action(v[0], v[1]); }, hidden); - base.Add(p); - return this; - } - - public OptionSet Add<T>(string prototype, Action<T> action) - { - return Add(prototype, null, action); - } - - public OptionSet Add<T>(string prototype, string description, Action<T> action) - { - return Add(new ActionOption<T>(prototype, description, action)); - } - - public OptionSet Add<TKey, TValue>(string prototype, OptionAction<TKey, TValue> action) - { - return Add(prototype, null, action); - } - - public OptionSet Add<TKey, TValue>(string prototype, string description, OptionAction<TKey, TValue> action) - { - return Add(new ActionOption<TKey, TValue>(prototype, description, action)); - } - - public OptionSet Add(ArgumentSource source) - { - if (source == null) - throw new ArgumentNullException("source"); - _sources.Add(source); - return this; - } - - protected virtual OptionContext CreateOptionContext() - { - return new OptionContext(this); - } - - public List<string> Parse(IEnumerable<string> arguments) - { - if (arguments == null) - throw new ArgumentNullException("arguments"); - OptionContext c = CreateOptionContext(); - c.OptionIndex = -1; - bool process = true; - List<string> unprocessed = new List<string>(); - Option def = Contains("<>") ? this["<>"] : null; - ArgumentEnumerator ae = new ArgumentEnumerator(arguments); - foreach (string argument in ae) - { - ++c.OptionIndex; - if (argument == "--") - { - process = false; - continue; - } - if (!process) - { - Unprocessed(unprocessed, def, c, argument); - continue; - } - if (AddSource(ae, argument)) - continue; - if (!Parse(argument, c)) - Unprocessed(unprocessed, def, c, argument); - } - if (c.Option != null) - c.Option.Invoke(c); - return unprocessed; - } - - bool AddSource(ArgumentEnumerator ae, string argument) - { - foreach (ArgumentSource source in _sources) - { - IEnumerable<string> replacement; - if (!source.GetArguments(argument, out replacement)) - continue; - ae.Add(replacement); - return true; - } - return false; - } - - static bool Unprocessed(ICollection<string> extra, Option def, OptionContext c, string argument) - { - if (def == null) - { - extra.Add(argument); - return false; - } - c.OptionValues.Add(argument); - c.Option = def; - c.Option.Invoke(c); - return false; - } - - protected bool GetOptionParts(string argument, out string flag, out string name, out string sep, out string value) - { - if (argument == null) - throw new ArgumentNullException("argument"); - - flag = name = sep = value = null; - Match m = _valueOption.Match(argument); - if (!m.Success) - return false; - flag = m.Groups["flag"].Value; - name = m.Groups["name"].Value; - if (m.Groups["sep"].Success && m.Groups["value"].Success) - { - sep = m.Groups["sep"].Value; - value = m.Groups["value"].Value; - } - return true; - } - - protected virtual bool Parse(string argument, OptionContext c) - { - if (c.Option != null) - { - ParseValue(argument, c); - return true; - } - - string f, n, s, v; - if (!GetOptionParts(argument, out f, out n, out s, out v)) - return false; - - Option p; - if (Contains(n)) - { - p = this[n]; - c.OptionName = f + n; - c.Option = p; - switch (p.OptionValueType) - { - case OptionValueType.None: - c.OptionValues.Add(n); - c.Option.Invoke(c); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - ParseValue(v, c); - break; - } - return true; - } - // no match; is it a bool option? - if (ParseBool(argument, n, c)) - return true; - // is it a bundled option? - if (ParseBundledValue(f, string.Concat(n + s + v), c)) - return true; - - return false; - } - - void ParseValue(string option, OptionContext c) - { - if (option != null) - { - foreach (string o in c.Option.ValueSeparators != null - ? option.Split(c.Option.ValueSeparators, c.Option.MaxValueCount - c.OptionValues.Count, StringSplitOptions.None) - : new[] { option }) - c.OptionValues.Add(o); - } - if (c.OptionValues.Count == c.Option.MaxValueCount || - c.Option.OptionValueType == OptionValueType.Optional) - c.Option.Invoke(c); - else if (c.OptionValues.Count > c.Option.MaxValueCount) - { - throw new OptionException(MessageLocalizer(string.Format( - "Error: Found {0} option values when expecting {1}.", - c.OptionValues.Count, c.Option.MaxValueCount)), - c.OptionName); - } - } - - bool ParseBool(string option, string n, OptionContext c) - { - Option p; - string rn; - if (n.Length >= 1 && (n[n.Length - 1] == '+' || n[n.Length - 1] == '-') && - Contains((rn = n.Substring(0, n.Length - 1)))) - { - p = this[rn]; - string v = n[n.Length - 1] == '+' ? option : null; - c.OptionName = option; - c.Option = p; - c.OptionValues.Add(v); - p.Invoke(c); - return true; - } - return false; - } - - bool ParseBundledValue(string f, string n, OptionContext c) - { - if (f != "-") - return false; - for (int i = 0; i < n.Length; ++i) - { - Option p; - string opt = f + n[i]; - string rn = n[i].ToString(); - if (!Contains(rn)) - { - if (i == 0) - return false; - throw new OptionException(string.Format(MessageLocalizer( - "Cannot bundle unregistered option '{0}'."), opt), opt); - } - p = this[rn]; - switch (p.OptionValueType) - { - case OptionValueType.None: - Invoke(c, opt, n, p); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - { - string v = n.Substring(i + 1); - c.Option = p; - c.OptionName = opt; - ParseValue(v.Length != 0 ? v : null, c); - return true; - } - default: - throw new InvalidOperationException("Unknown OptionValueType: " + p.OptionValueType); - } - } - return true; - } - - static void Invoke(OptionContext c, string name, string value, Option option) - { - c.OptionName = name; - c.Option = option; - c.OptionValues.Add(value); - option.Invoke(c); - } - - public void WriteOptionDescriptions(TextWriter o) - { - foreach (Option p in this) - { - int written = 0; - - if (p.Hidden) - continue; - - Category c = p as Category; - if (c != null) - { - WriteDescription(o, p.Description, "", 80, 80); - continue; - } - - if (!WriteOptionPrototype(o, p, ref written)) - continue; - - if (written < OptionWidth) - o.Write(new string(' ', OptionWidth - written)); - else - { - o.WriteLine(); - o.Write(new string(' ', OptionWidth)); - } - - WriteDescription(o, p.Description, new string(' ', OptionWidth + 2), - DescriptionFirstWidth, DescriptionRemWidth); - } - - foreach (ArgumentSource s in _sources) - { - string[] names = s.GetNames(); - if (names == null || names.Length == 0) - continue; - - int written = 0; - - Write(o, ref written, " "); - Write(o, ref written, names[0]); - for (int i = 1; i < names.Length; ++i) - { - Write(o, ref written, ", "); - Write(o, ref written, names[i]); - } - - if (written < OptionWidth) - o.Write(new string(' ', OptionWidth - written)); - else - { - o.WriteLine(); - o.Write(new string(' ', OptionWidth)); - } - - WriteDescription(o, s.Description, new string(' ', OptionWidth + 2), - DescriptionFirstWidth, DescriptionRemWidth); - } - } - - void WriteDescription(TextWriter o, string value, string prefix, int firstWidth, int remWidth) - { - bool indent = false; - foreach (string line in GetLines(MessageLocalizer(GetDescription(value)), firstWidth, remWidth)) - { - if (indent) - o.Write(prefix); - o.WriteLine(line); - indent = true; - } - } - - bool WriteOptionPrototype(TextWriter o, Option p, ref int written) - { - string[] names = p.Names; - - int i = GetNextOptionIndex(names, 0); - if (i == names.Length) - return false; - - if (names[i].Length == 1) - { - Write(o, ref written, " -"); - Write(o, ref written, names[0]); - } - else - { - Write(o, ref written, " --"); - Write(o, ref written, names[0]); - } - - for (i = GetNextOptionIndex(names, i + 1); - i < names.Length; - i = GetNextOptionIndex(names, i + 1)) - { - Write(o, ref written, ", "); - Write(o, ref written, names[i].Length == 1 ? "-" : "--"); - Write(o, ref written, names[i]); - } - - if (p.OptionValueType == OptionValueType.Optional || - p.OptionValueType == OptionValueType.Required) - { - if (p.OptionValueType == OptionValueType.Optional) - Write(o, ref written, MessageLocalizer("[")); - Write(o, ref written, MessageLocalizer("=" + GetArgumentName(0, p.MaxValueCount, p.Description))); - string sep = p.ValueSeparators != null && p.ValueSeparators.Length > 0 - ? p.ValueSeparators[0] - : " "; - for (int c = 1; c < p.MaxValueCount; ++c) - Write(o, ref written, MessageLocalizer(sep + GetArgumentName(c, p.MaxValueCount, p.Description))); - if (p.OptionValueType == OptionValueType.Optional) - Write(o, ref written, MessageLocalizer("]")); - } - return true; - } - - static int GetNextOptionIndex(string[] names, int i) - { - while (i < names.Length && names[i] == "<>") - ++i; - return i; - } - - static void Write(TextWriter o, ref int n, string s) - { - n += s.Length; - o.Write(s); - } - - static string GetArgumentName(int index, int maxIndex, string description) - { - if (description == null) - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - string[] nameStart; - if (maxIndex == 1) - nameStart = new[] { "{0:", "{" }; - else - nameStart = new[] { "{" + index + ":" }; - for (int i = 0; i < nameStart.Length; ++i) - { - int start, j = 0; - do - { - start = description.IndexOf(nameStart[i], j); - } while (start >= 0 && j != 0 ? description[j++ - 1] == '{' : false); - if (start == -1) - continue; - int end = description.IndexOf("}", start); - if (end == -1) - continue; - return description.Substring(start + nameStart[i].Length, end - start - nameStart[i].Length); - } - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - } - - static string GetDescription(string description) - { - if (description == null) - return string.Empty; - StringBuilder sb = new StringBuilder(description.Length); - int start = -1; - for (int i = 0; i < description.Length; ++i) - { - switch (description[i]) - { - case '{': - if (i == start) - { - sb.Append('{'); - start = -1; - } - else if (start < 0) - start = i + 1; - break; - case '}': - if (start < 0) - { - if ((i + 1) == description.Length || description[i + 1] != '}') - throw new InvalidOperationException("Invalid option description: " + description); - ++i; - sb.Append("}"); - } - else - { - sb.Append(description.Substring(start, i - start)); - start = -1; - } - break; - case ':': - if (start < 0) - goto default; - start = i + 1; - break; - default: - if (start < 0) - sb.Append(description[i]); - break; - } - } - return sb.ToString(); - } - - static IEnumerable<string> GetLines(string description, int firstWidth, int remWidth) - { - return StringCoda.WrappedLines(description, firstWidth, remWidth); - } - - internal sealed class Category : Option - { - // Prototype starts with '=' because this is an invalid prototype - // (see Option.ParsePrototype(), and thus it'll prevent Category - // instances from being accidentally used as normal options. - public Category(string description) - : base("=:Category:= " + description, description) - { - } - - protected override void OnParseComplete(OptionContext c) - { - throw new NotSupportedException("Category.OnParseComplete should not be invoked."); - } - } - - sealed class ActionOption : Option - { - readonly Action<OptionValueCollection> _action; - - public ActionOption(string prototype, string description, int count, Action<OptionValueCollection> action) - : this(prototype, description, count, action, false) - { - } - - public ActionOption(string prototype, string description, int count, Action<OptionValueCollection> action, - bool hidden) - : base(prototype, description, count, hidden) - { - if (action == null) - throw new ArgumentNullException("action"); - _action = action; - } - - protected override void OnParseComplete(OptionContext c) - { - _action(c.OptionValues); - } - } - - sealed class ActionOption<T> : Option - { - readonly Action<T> _action; - - public ActionOption(string prototype, string description, Action<T> action) - : base(prototype, description, 1) - { - if (action == null) - throw new ArgumentNullException("action"); - _action = action; - } - - protected override void OnParseComplete(OptionContext c) - { - _action(Parse<T>(c.OptionValues[0], c)); - } - } - - sealed class ActionOption<TKey, TValue> : Option - { - readonly OptionAction<TKey, TValue> _action; - - public ActionOption(string prototype, string description, OptionAction<TKey, TValue> action) - : base(prototype, description, 2) - { - if (action == null) - throw new ArgumentNullException("action"); - _action = action; - } - - protected override void OnParseComplete(OptionContext c) - { - _action( - Parse<TKey>(c.OptionValues[0], c), - Parse<TValue>(c.OptionValues[1], c)); - } - } - - class ArgumentEnumerator : IEnumerable<string> - { - readonly List<IEnumerator<string>> _sources = new List<IEnumerator<string>>(); - - public ArgumentEnumerator(IEnumerable<string> arguments) - { - _sources.Add(arguments.GetEnumerator()); - } - - public IEnumerator<string> GetEnumerator() - { - do - { - IEnumerator<string> c = _sources[_sources.Count - 1]; - if (c.MoveNext()) - yield return c.Current; - else - { - c.Dispose(); - _sources.RemoveAt(_sources.Count - 1); - } - } while (_sources.Count > 0); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void Add(IEnumerable<string> arguments) - { - _sources.Add(arguments.GetEnumerator()); - } - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueCollection.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueCollection.cs deleted file mode 100644 index 6ed60483..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueCollection.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Mono.Options -{ - public class OptionValueCollection : IList, IList<string> - { - readonly OptionContext _c; - readonly List<string> _values = new List<string>(); - - internal OptionValueCollection(OptionContext c) - { - _c = c; - } - - #region IEnumerable - - IEnumerator IEnumerable.GetEnumerator() - { - return _values.GetEnumerator(); - } - - #endregion - - #region IEnumerable<T> - - public IEnumerator<string> GetEnumerator() - { - return _values.GetEnumerator(); - } - - #endregion - - public List<string> ToList() - { - return new List<string>(_values); - } - - public string[] ToArray() - { - return _values.ToArray(); - } - - public override string ToString() - { - return string.Join(", ", _values.ToArray()); - } - - #region ICollection - - void ICollection.CopyTo(Array array, int index) - { - (_values as ICollection).CopyTo(array, index); - } - - bool ICollection.IsSynchronized => (_values as ICollection).IsSynchronized; - - object ICollection.SyncRoot => (_values as ICollection).SyncRoot; - - #endregion - - #region ICollection<T> - - public void Add(string item) - { - _values.Add(item); - } - - public void Clear() - { - _values.Clear(); - } - - public bool Contains(string item) - { - return _values.Contains(item); - } - - public void CopyTo(string[] array, int arrayIndex) - { - _values.CopyTo(array, arrayIndex); - } - - public bool Remove(string item) - { - return _values.Remove(item); - } - - public int Count => _values.Count; - - public bool IsReadOnly => false; - - #endregion - - #region IList - - int IList.Add(object value) - { - return (_values as IList).Add(value); - } - - bool IList.Contains(object value) - { - return (_values as IList).Contains(value); - } - - int IList.IndexOf(object value) - { - return (_values as IList).IndexOf(value); - } - - void IList.Insert(int index, object value) - { - (_values as IList).Insert(index, value); - } - - void IList.Remove(object value) - { - (_values as IList).Remove(value); - } - - void IList.RemoveAt(int index) - { - (_values as IList).RemoveAt(index); - } - - bool IList.IsFixedSize => false; - - object IList.this[int index] - { - get { return this[index]; } - set { (_values as IList)[index] = value; } - } - - #endregion - - #region IList<T> - - public int IndexOf(string item) - { - return _values.IndexOf(item); - } - - public void Insert(int index, string item) - { - _values.Insert(index, item); - } - - public void RemoveAt(int index) - { - _values.RemoveAt(index); - } - - void AssertValid(int index) - { - if (_c.Option == null) - throw new InvalidOperationException("OptionContext.Option is null."); - if (index >= _c.Option.MaxValueCount) - throw new ArgumentOutOfRangeException("index"); - if (_c.Option.OptionValueType == OptionValueType.Required && - index >= _values.Count) - { - throw new OptionException(string.Format( - _c.OptionSet.MessageLocalizer("Missing required value for option '{0}'."), _c.OptionName), - _c.OptionName); - } - } - - public string this[int index] - { - get - { - AssertValid(index); - return index >= _values.Count ? null : _values[index]; - } - set { _values[index] = value; } - } - - #endregion - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueType.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueType.cs deleted file mode 100644 index 97ac0e9b..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/OptionValueType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Mono.Options -{ - public enum OptionValueType - { - None, - Optional, - Required - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/ResponseFileSource.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/ResponseFileSource.cs deleted file mode 100644 index 881a384e..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/ResponseFileSource.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; - -namespace Mono.Options -{ - public class ResponseFileSource : ArgumentSource - { - public override string Description => "Read response file for more options."; - - public override string[] GetNames() - { - return new[] { "@file" }; - } - - public override bool GetArguments(string value, out IEnumerable<string> replacement) - { - if (string.IsNullOrEmpty(value) || !value.StartsWith("@")) - { - replacement = null; - return false; - } - replacement = GetArgumentsFromFile(value.Substring(1)); - return true; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Mono.Options/StringCoda.cs b/Xamarin.Forms.UITest.TestCloud/Mono.Options/StringCoda.cs deleted file mode 100644 index ae8b59bb..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Mono.Options/StringCoda.cs +++ /dev/null @@ -1,237 +0,0 @@ -// -// Options.cs -// -// Authors: -// Jonathan Pryor <jpryor@novell.com> -// Federico Di Gregorio <fog@initd.org> -// Rolf Bjarne Kvinge <rolf@xamarin.com> -// -// Copyright (C) 2008 Novell (http://www.novell.com) -// Copyright (C) 2009 Federico Di Gregorio. -// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// Compile With: -// gmcs -debug+ -r:System.Core Options.cs -o:NDesk.Options.dll -// gmcs -debug+ -d:LINQ -r:System.Core Options.cs -o:NDesk.Options.dll -// -// The LINQ version just changes the implementation of -// OptionSet.Parse(IEnumerable<string>), and confers no semantic changes. - -// -// A Getopt::Long-inspired option parsing library for C#. -// -// NDesk.Options.OptionSet is built upon a key/value table, where the -// key is a option format string and the value is a delegate that is -// invoked when the format string is matched. -// -// Option format strings: -// Regex-like BNF Grammar: -// name: .+ -// type: [=:] -// sep: ( [^{}]+ | '{' .+ '}' )? -// aliases: ( name type sep ) ( '|' name type sep )* -// -// Each '|'-delimited name is an alias for the associated action. If the -// format string ends in a '=', it has a required value. If the format -// string ends in a ':', it has an optional value. If neither '=' or ':' -// is present, no value is supported. `=' or `:' need only be defined on one -// alias, but if they are provided on more than one they must be consistent. -// -// Each alias portion may also end with a "key/value separator", which is used -// to split option values if the option accepts > 1 value. If not specified, -// it defaults to '=' and ':'. If specified, it can be any character except -// '{' and '}' OR the *string* between '{' and '}'. If no separator should be -// used (i.e. the separate values should be distinct arguments), then "{}" -// should be used as the separator. -// -// Options are extracted either from the current option by looking for -// the option name followed by an '=' or ':', or is taken from the -// following option IFF: -// - The current option does not contain a '=' or a ':' -// - The current option requires a value (i.e. not a Option type of ':') -// -// The `name' used in the option format string does NOT include any leading -// option indicator, such as '-', '--', or '/'. All three of these are -// permitted/required on any named option. -// -// Option bundling is permitted so long as: -// - '-' is used to start the option group -// - all of the bundled options are a single character -// - at most one of the bundled options accepts a value, and the value -// provided starts from the next character to the end of the string. -// -// This allows specifying '-a -b -c' as '-abc', and specifying '-D name=value' -// as '-Dname=value'. -// -// Option processing is disabled by specifying "--". All options after "--" -// are returned by OptionSet.Parse() unchanged and unprocessed. -// -// Unprocessed options are returned from OptionSet.Parse(). -// -// Examples: -// int verbose = 0; -// OptionSet p = new OptionSet () -// .Add ("v", v => ++verbose) -// .Add ("name=|value=", v => Console.WriteLine (v)); -// p.Parse (new string[]{"-v", "--v", "/v", "-name=A", "/name", "B", "extra"}); -// -// The above would parse the argument string array, and would invoke the -// lambda expression three times, setting `verbose' to 3 when complete. -// It would also print out "A" and "B" to standard output. -// The returned array would contain the string "extra". -// -// C# 3.0 collection initializers are supported and encouraged: -// var p = new OptionSet () { -// { "h|?|help", v => ShowHelp () }, -// }; -// -// System.ComponentModel.TypeConverter is also supported, allowing the use of -// custom data types in the callback type; TypeConverter.ConvertFromString() -// is used to convert the value option to an instance of the specified -// type: -// -// var p = new OptionSet () { -// { "foo=", (Foo f) => Console.WriteLine (f.ToString ()) }, -// }; -// -// Random other tidbits: -// - Boolean options (those w/o '=' or ':' in the option format string) -// are explicitly enabled if they are followed with '+', and explicitly -// disabled if they are followed with '-': -// string a = null; -// var p = new OptionSet () { -// { "a", s => a = s }, -// }; -// p.Parse (new string[]{"-a"}); // sets v != null -// p.Parse (new string[]{"-a+"}); // sets v != null -// p.Parse (new string[]{"-a-"}); // sets v == null -// - -using System; -using System.Collections.Generic; - -#if LINQ -using System.Linq; -#endif - -#if TEST -using NDesk.Options; -#endif - -#if NDESK_OPTIONS -namespace NDesk.Options -#else - -namespace Mono.Options -#endif -{ - internal static class StringCoda - { - public static IEnumerable<string> WrappedLines(string self, params int[] widths) - { - IEnumerable<int> w = widths; - return WrappedLines(self, w); - } - - public static IEnumerable<string> WrappedLines(string self, IEnumerable<int> widths) - { - if (widths == null) - throw new ArgumentNullException("widths"); - return CreateWrappedLinesIterator(self, widths); - } - - static IEnumerable<string> CreateWrappedLinesIterator(string self, IEnumerable<int> widths) - { - if (string.IsNullOrEmpty(self)) - { - yield return string.Empty; - yield break; - } - using (IEnumerator<int> ewidths = widths.GetEnumerator()) - { - bool? hw = null; - int width = GetNextWidth(ewidths, int.MaxValue, ref hw); - int start = 0, end; - do - { - end = GetLineEnd(start, width, self); - char c = self[end - 1]; - if (char.IsWhiteSpace(c)) - --end; - bool needContinuation = end != self.Length && !IsEolChar(c); - string continuation = ""; - if (needContinuation) - { - --end; - continuation = "-"; - } - string line = self.Substring(start, end - start) + continuation; - yield return line; - start = end; - if (char.IsWhiteSpace(c)) - ++start; - width = GetNextWidth(ewidths, width, ref hw); - } while (start < self.Length); - } - } - - static int GetNextWidth(IEnumerator<int> ewidths, int curWidth, ref bool? eValid) - { - if (!eValid.HasValue || (eValid.HasValue && eValid.Value)) - { - curWidth = (eValid = ewidths.MoveNext()).Value ? ewidths.Current : curWidth; - // '.' is any character, - is for a continuation - const string minWidth = ".-"; - if (curWidth < minWidth.Length) - { - throw new ArgumentOutOfRangeException("widths", - string.Format("Element must be >= {0}, was {1}.", minWidth.Length, curWidth)); - } - return curWidth; - } - // no more elements, use the last element. - return curWidth; - } - - static bool IsEolChar(char c) - { - return !char.IsLetterOrDigit(c); - } - - static int GetLineEnd(int start, int length, string description) - { - int end = System.Math.Min(start + length, description.Length); - int sep = -1; - for (int i = start; i < end; ++i) - { - if (description[i] == '\n') - return i + 1; - if (IsEolChar(description[i])) - sep = i + 1; - } - if (sep == -1 || end == description.Length) - return end; - return sep; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Properties/AssemblyInfo.cs b/Xamarin.Forms.UITest.TestCloud/Properties/AssemblyInfo.cs deleted file mode 100644 index a88308b9..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly: AssemblyTitle("Xamarin.Forms.UITest.TestCloud")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Xamarin.Forms.UITest.TestCloud")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly: Guid("461f48a4-9e1c-4146-aa4e-ddd85746afc7")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/TestCloudUtils.cs b/Xamarin.Forms.UITest.TestCloud/TestCloudUtils.cs deleted file mode 100644 index a554096f..00000000 --- a/Xamarin.Forms.UITest.TestCloud/TestCloudUtils.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Diagnostics; - -namespace Xamarin.Forms.UITest.TestCloud -{ - internal static class TestCloudUtils - { - public static bool IsRunningOnMono() - { - return Type.GetType("Mono.Runtime") != null; - } - - public static Tuple<DeviceSet.Platform, string> ParseArgs(string input) - { - string[] deviceArgs = input.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); - if (deviceArgs.Length != 2) - { - Console.WriteLine("!!! Invalid upload paramters, should be <Platform> <Category> : You entered : " + input); - return null; - } - - DeviceSet.Platform platform = deviceArgs[0] == "Android" ? DeviceSet.Platform.Android : DeviceSet.Platform.IOs; - string category = deviceArgs[1]; - - return Tuple.Create(platform, category); - } - - public static int UploadApp(string command) - { - Tuple<string, string> execArgsPair = IsRunningOnMono() ? MonoExecArgs(command) : WindowsExecArgs(command); - - var process = new Process - { - StartInfo = new ProcessStartInfo - { - FileName = execArgsPair.Item1, - Arguments = execArgsPair.Item2, - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true - } - }; - - try - { - process.Start(); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - return 1; - } - - while (!process.StandardOutput.EndOfStream) - { - string line = process.StandardOutput.ReadLine(); - Console.WriteLine(line); - } - while (!process.StandardError.EndOfStream) - { - string line = process.StandardError.ReadLine(); - Console.WriteLine(line); - } - process.WaitForExit(); - return process.ExitCode; - } - - static Tuple<string, string> MonoExecArgs(string command) - { - return Tuple.Create("mono", command); - } - - static Tuple<string, string> WindowsExecArgs(string command) - { - string[] commandArray = command.Split(' '); - string executable = commandArray[0]; - string uploadCommand = string.Join(" ", commandArray, 1, commandArray.Length - 1); - return Tuple.Create(executable, uploadCommand); - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/Uploader.cs b/Xamarin.Forms.UITest.TestCloud/Uploader.cs deleted file mode 100644 index 74db14da..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Uploader.cs +++ /dev/null @@ -1,422 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Security.Policy; -using System.Text; -using Mono.Options; -using Xamarin.Forms.Core.UITests; -using Xamarin.Forms.Loader; - -namespace Xamarin.Forms.UITest.TestCloud -{ - // TODO: Provide way to construct url for results easy access - - static class Uploader - { - static LoaderActions loaderActions; - - static int Main(string[] args) - { - loaderActions = new LoaderActions(); - - var categories = new List<string>(); - var excludeCategories = new List<string>(); - string series = null; - var platform = DeviceSet.Platform.None; - DeviceSet deviceSet = null; - var validate = false; - string outputFile = null; - var account = ""; - var user = ""; - - OptionSet optionSet = null; - optionSet = new OptionSet - { - { - "p|platform=", "specify the test platform, iOS or Android", - s => platform = (DeviceSet.Platform)Enum.Parse(typeof (DeviceSet.Platform), s) - }, - { "d|deviceset=", "the device set to use for the test run", s => deviceSet = StringToDeviceSet(s) }, - { "c|category=", "add a category to the test run [deprecated, use include]", str => categories.Add(str) }, - { "s|series=", "specify the series when uploaded to Test Cloud", s => series = s }, - { "l|list", "list categories available in test suite", ListCategories }, - { "sets", "list available device sets", ListDeviceSets }, - { "i|interactive", "start uploader in interactive mode", InteractiveMode }, - { "h|help", "show this message and exit", s => ShowHelp(optionSet) }, - { "v|validate", "validate all tests or a specified category", s => validate = true }, - { "o|output=", "output destination for NUnit XML", s => outputFile = s }, - { "a|account=", "Test Cloud key", s => account = s }, - { "u|user=", "Test Cloud user", s => user = s }, - { "n|include=", "add a category to the test run", str => categories.Add(str) }, - { "e|exclude=", "exclude a category from the test run", str => excludeCategories.Add(str) } - }; - - List<string> extra; - try - { - extra = optionSet.Parse(args); - } - catch (OptionException ex) - { - Console.Write("Uploader:"); - Console.WriteLine(ex.Message); - Console.WriteLine("Try --help for more informaiton"); - } - - if (args.Length == 0) - ShowHelp(optionSet); - - if (validate) - { - var category = categories.FirstOrDefault(); - return loaderActions.ValidateCategory(category) ? 0 : 1; - } - - if (platform == DeviceSet.Platform.None) - { - Console.WriteLine("Platform must be specified"); - return 1; - } - - if (deviceSet != null && !deviceSet.DeviceSetPlatform.Contains(platform)) - { - Console.WriteLine("DeviceSet platform does not match specified platform"); - return 1; - } - - if (deviceSet == null) - { - if (platform == DeviceSet.Platform.Android) - deviceSet = DeviceSets.AndroidFastParallel; - else - deviceSet = DeviceSets.IOsFastParallel; - } - - var execString = BuildExecutionString(platform, deviceSet, categories, series, account, user, outputFile, excludeCategories); - - Console.WriteLine(execString); - - var processStatus = TestCloudUtils.UploadApp(execString); - - Console.WriteLine("test-cloud.exe status: " + processStatus); - return processStatus; - } - - static string BuildExecutionString(DeviceSet.Platform platform, DeviceSet deviceSet, IEnumerable<string> categories, - string series, string account, string user, string outputFile = null, IEnumerable<string> excludeCategories = null) - { - var stringBuilder = new StringBuilder(); - stringBuilder.Append(ConsolePath); - stringBuilder.Append(" submit "); - - switch (platform) - { - case DeviceSet.Platform.Android: - stringBuilder.Append(ApkPath); - break; - case DeviceSet.Platform.IOs: - stringBuilder.Append(IpaPath); - break; - case DeviceSet.Platform.IOsClassic: - stringBuilder.Append(IpaClassicPath); - break; - } - - stringBuilder.Append(" "); - stringBuilder.Append(account); - stringBuilder.Append(" --user "); - stringBuilder.Append(user); - stringBuilder.Append(" --devices "); - stringBuilder.Append(deviceSet.Id); - - foreach (var category in categories) - { - stringBuilder.Append($" --include {category}"); - } - - if (excludeCategories != null) - { - foreach (var category in excludeCategories) - { - stringBuilder.Append($" --exclude {category}"); - } - } - - if (!string.IsNullOrEmpty(series)) - { - stringBuilder.Append(" --series "); - stringBuilder.Append(series); - } - - stringBuilder.Append(" --locale \"en_US\""); - - switch (platform) - { - case DeviceSet.Platform.Android: - stringBuilder.Append(" --app-name \"AndroidControlGallery\""); - break; - case DeviceSet.Platform.IOs: - case DeviceSet.Platform.IOsClassic: - stringBuilder.Append(" --app-name \"XamControl\""); - break; - } - - stringBuilder.Append(" --assembly-dir "); - - if (platform == DeviceSet.Platform.Android) - stringBuilder.Append(AndroidTestingDirectory); - else - stringBuilder.Append(iOSTestingDirectory); - - stringBuilder.Append(" --fixture-chunk"); - - if (!string.IsNullOrEmpty(outputFile)) - stringBuilder.Append($" --nunit-xml {outputFile}"); - - return stringBuilder.ToString(); - } - - static void InteractiveMode(string s) - { - Console.WriteLine("Interactive testcloud uploader. Type --help for help"); - Console.WriteLine( - "Usage: >>> -d <deviceset> -c <category> -a <key> -u <user> [-c <category> -c <category> -c <category>]"); - - while (true) - { - Console.Write(">>> "); - var command = Console.ReadLine(); - var commandList = command.Split(' '); - - var platform = DeviceSet.Platform.None; - var deviceSet = ""; - var categories = new List<string>(); - var excludeCategories = new List<string>(); - var series = ""; - var account = ""; - var user = ""; - - OptionSet options = null; - options = new OptionSet - { - { "q|quit", "quit", Exit }, - { "h|help", "show this message and exit", str => ShowInteractiveHelp(options) }, - { "c|category=", "add a category to the test run [deprecated, use include]", str => categories.Add(str) }, - { "d|deviceset=", "specify the device set to upload", str => deviceSet = str }, - { "lc|listcategories", "Lists categories in uitests", ListCategories }, - { "ld|listdevicesets", "Lists defined devices sets", ListDeviceSets }, - { "a|account=", "Test Cloud key", str => account = str }, - { "u|user=", "Test Cloud user", str => user = str }, - { "n|include=", "add a category to the test run", str => categories.Add(str) }, - { "e|exclude=", "exclude a category from the test run", str => excludeCategories.Add(str) } - }; - - List<string> extra; - try - { - extra = options.Parse(commandList); - } - catch (OptionException ex) - { - Console.Write("Uploader:"); - Console.WriteLine(ex.Message); - Console.WriteLine("Try --help for more informaiton"); - } - - if (command.Length == 0) - ShowHelp(options); - - // by default take the first category as the series name - if (categories.Count >= 1) - series = categories.First(); - - if (commandList.Length >= 4) - { - var validQuery = true; - - if (!IsValidDeviceSet(deviceSet)) - { - Console.WriteLine("Invalid DeviceSet: {0}", deviceSet); - validQuery = false; - } - - if (!CategoriesValid(categories)) - { - Console.Write("Invalid Category(s):"); - foreach (var c in categories) - Console.Write(" {0} ", c); - Console.Write("\n"); - validQuery = false; - } - - if (validQuery) - { - var devSet = StringToDeviceSet(deviceSet); - var execString = BuildExecutionString(devSet.DeviceSetPlatform.First(), devSet, categories, series, account, user, excludeCategories: excludeCategories); - Console.WriteLine(execString); - TestCloudUtils.UploadApp(execString); - } - } - } - } - - static void ShowInteractiveHelp(OptionSet options) - { - Console.WriteLine("Usage: [OPTIONS]"); - Console.WriteLine(); - Console.WriteLine("Options:"); - options.WriteOptionDescriptions(Console.Out); - } - - static void Exit(string s) - { - Environment.Exit(0); - } - - static void ShowHelp(OptionSet options) - { - Console.WriteLine("Usage: Uploader [OPTIONS]"); - Console.WriteLine(); - Console.WriteLine("Options:"); - options.WriteOptionDescriptions(Console.Out); - - Environment.Exit(0); - } - - static DeviceSet StringToDeviceSet(string s) - { - try - { - var device = (DeviceSet)typeof (DeviceSets).GetField(s).GetValue(null); - return device; - } - catch (Exception ex) - { - Console.WriteLine("DeviceSet not found"); - return null; - } - } - - static void ListDeviceSets(string s) - { - var deviceSetsType = typeof (DeviceSets); - - var fields = deviceSetsType.GetFields(); - - foreach (var field in fields) - Console.WriteLine(field.Name); - } - - static void ListCategories(string s) - { - loaderActions.ListCategories(); - } - - static bool CategoriesValid(List<string> categories) - { - var areValid = true; - - if (categories.Count < 1) - return false; - - foreach (var category in categories) - { - if (!loaderActions.ValidateCategory(category)) - return false; - } - - return areValid; - } - - static bool IsValidDeviceSet(string deviceSet) - { - var deviceSetsType = typeof (DeviceSets); - var isValid = deviceSetsType.GetFields().Any(ds => ds.Name == deviceSet); - return isValid; - } - - public static string ConsolePath - { - get - { - string[] consolePathElements = { "..", "..", "..", "packages", "Xamarin.UITest.1.3.7", "tools", "test-cloud.exe" }; - return Path.Combine(consolePathElements); - } - } - - public static string IpaPath - { - get - { - string[] ipaPathElements = - { - "..", - "..", - "..", - "Xamarin.Forms.ControlGallery.iOS", - "bin", - "iPhone", - "Debug", - "XamarinFormsControlGalleryiOS-1.0.ipa" - }; - return Path.Combine(ipaPathElements); - } - } - - public static string IpaClassicPath - { - get - { - string[] ipaPathElements = - { - "..", - "..", - "..", - "Xamarin.Forms.ControlGallery.iOS", - "classic_bin", - "iPhone", - "Debug", - "XamarinFormsControlGalleryiOS-1.0.ipa" - }; - return Path.Combine(ipaPathElements); - } - } - - public static string ApkPath - { - get - { - string[] apkPathElements = - { - "..", - "..", - "..", - "Xamarin.Forms.ControlGallery.Android", - "bin", - "Debug", - "AndroidControlGallery.AndroidControlGallery-Signed.apk" - }; - return Path.Combine(apkPathElements); - } - } - - public static string iOSTestingDirectory - { - get - { - string[] testDiriOSPathElements = { "..", "..", "..", "Xamarin.Forms.Core.iOS.UITests", "bin", "Debug" }; - return Path.Combine(testDiriOSPathElements); - } - } - - public static string AndroidTestingDirectory - { - get - { - string[] testDirAndroidPathElements = { "..", "..", "..", "Xamarin.Forms.Core.Android.UITests", "bin", "Debug" }; - return Path.Combine(testDirAndroidPathElements); - } - } - } -} diff --git a/Xamarin.Forms.UITest.TestCloud/Xamarin.Forms.UITest.TestCloud.csproj b/Xamarin.Forms.UITest.TestCloud/Xamarin.Forms.UITest.TestCloud.csproj deleted file mode 100644 index f4ed7406..00000000 --- a/Xamarin.Forms.UITest.TestCloud/Xamarin.Forms.UITest.TestCloud.csproj +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{1E238A01-B492-461F-BADE-415E8F9C5DFC}</ProjectGuid> - <OutputType>Exe</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Xamarin.Forms.UITest.TestCloud</RootNamespace> - <AssemblyName>Xamarin.Forms.UITest.TestCloud</AssemblyName> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> - <RestorePackages>true</RestorePackages> - <PublishUrl>publish\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Foreground</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <ApplicationRevision>0</ApplicationRevision> - <ApplicationVersion>1.0.0.%2a</ApplicationVersion> - <IsWebBootstrapper>false</IsWebBootstrapper> - <UseApplicationTrust>false</UseApplicationTrust> - <BootstrapperEnabled>true</BootstrapperEnabled> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0219;0168</NoWarn> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0219;0168</NoWarn> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> - <DebugSymbols>true</DebugSymbols> - <OutputPath>bin\Turkey\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DebugType>full</DebugType> - <PlatformTarget>AnyCPU</PlatformTarget> - <ErrorReport>prompt</ErrorReport> - <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> - <Prefer32Bit>true</Prefer32Bit> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0219;0168</NoWarn> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - <Reference Include="nunit.framework"> - <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="DeviceSet.cs" /> - <Compile Include="DeviceSets.cs" /> - <Compile Include="LoaderActions.cs" /> - <Compile Include="Uploader.cs" /> - <Compile Include="Mono.Options\ArgumentSource.cs" /> - <Compile Include="Mono.Options\Option.cs" /> - <Compile Include="Mono.Options\OptionAction.cs" /> - <Compile Include="Mono.Options\OptionContext.cs" /> - <Compile Include="Mono.Options\OptionException.cs" /> - <Compile Include="Mono.Options\StringCoda.cs" /> - <Compile Include="Mono.Options\OptionSet.cs" /> - <Compile Include="Mono.Options\OptionValueCollection.cs" /> - <Compile Include="Mono.Options\OptionValueType.cs" /> - <Compile Include="Mono.Options\ResponseFileSource.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="TestCloudUtils.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj"> - <Project>{a34ebe01-25bf-4e69-a2dc-2288dc625541}</Project> - <Name>Xamarin.Forms.Core.Android.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj"> - <Project>{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}</Project> - <Name>Xamarin.Forms.Core.iOS.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> - <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> - <Name>Xamarin.Forms.Core</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj"> - <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project> - <Name>Xamarin.Forms.CustomAttributes</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Loader\Xamarin.Forms.Loader.csproj"> - <Project>{00211725-2f89-4e2c-ac5a-38e5ff61be67}</Project> - <Name>Xamarin.Forms.Loader</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Platform\Xamarin.Forms.Platform.csproj"> - <Project>{67f9d3a8-f71e-4428-913f-c37ae82cdb24}</Project> - <Name>Xamarin.Forms.Platform</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <Folder Include="Logs\" /> - </ItemGroup> - <ItemGroup> - <BootstrapperPackage Include=".NETFramework,Version=v4.5"> - <Visible>False</Visible> - <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> - <Install>false</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1</ProductName> - <Install>false</Install> - </BootstrapperPackage> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> - </Target> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.TestCloud/packages.config b/Xamarin.Forms.UITest.TestCloud/packages.config deleted file mode 100644 index d18b935f..00000000 --- a/Xamarin.Forms.UITest.TestCloud/packages.config +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Mono.Options" version="1.1" targetFramework="net45" /> - <package id="NUnit" version="2.6.4" targetFramework="net45" /> -</packages>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/App.config b/Xamarin.Forms.UITest.Validator/App.config deleted file mode 100644 index 8e156463..00000000 --- a/Xamarin.Forms.UITest.Validator/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/DomMemberModel.cs b/Xamarin.Forms.UITest.Validator/DomMemberModel.cs deleted file mode 100644 index 7f005405..00000000 --- a/Xamarin.Forms.UITest.Validator/DomMemberModel.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Collections.Generic; - -namespace Xamarin.Forms.UITest.Validator -{ - internal class DomMemberModel - { - readonly List<string> _androidtests; - readonly List<string> _iOStests; - readonly string _name; - - public DomMemberModel(string memberName, List<string> iOsTestsForMember, List<string> androidTestsForMember) - { - _name = memberName; - _iOStests = iOsTestsForMember; - var isiOsTested = iOsTestsForMember.Count != 0; - NumberOfiOsTests = iOsTestsForMember.Count; - - _androidtests = androidTestsForMember; - var isAndroidTested = androidTestsForMember.Count != 0; - NumberOfAndroidTests = androidTestsForMember.Count; - - IsTested = isiOsTested && isAndroidTested; - } - - public bool IsTested { get; } - - public int NumberOfiOsTests { get; } - - public int NumberOfAndroidTests { get; } - - public string Html() - { - var html = ""; - - if (IsTested) - html += "<div class=\"testedMember\">" + _name + "</div>"; - else - html += "<div class=\"unTestedMember\">" + _name + "</div>"; - - html += "<div class=\"platformTestContainer\">"; - html += "<div class=\"iosColumn\">"; - foreach (var test in _iOStests) - html += "<div class=\"test ios\">" + test + "</div>"; - html += "</div>"; - - html += "<div class=\"androidColumn\">"; - foreach (var test in _androidtests) - html += "<div class=\"test android\">" + test + "</div>"; - html += "</div>"; - - html += "</div>"; - - return html; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/DomTypeModel.cs b/Xamarin.Forms.UITest.Validator/DomTypeModel.cs deleted file mode 100644 index 16d70bd9..00000000 --- a/Xamarin.Forms.UITest.Validator/DomTypeModel.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Xamarin.Forms.Loader; - -namespace Xamarin.Forms.UITest.Validator -{ - internal class DomTypeModel - { - readonly List<string> _androidTypeTests; - readonly List<string> _iosTypeTests; - public string TypeName; - - public DomTypeModel(FormsType formsType, Dictionary<Type, List<FormsUiTest>> typeiOsuiTestDictionary, - Dictionary<Type, List<FormsUiTest>> typeAndroidUiTestDictionary) - { - TypeName = formsType.Type.Name; - - var iOsTests = new List<FormsUiTest>(); - var androidTests = new List<FormsUiTest>(); - - _iosTypeTests = new List<string>(); - _androidTypeTests = new List<string>(); - - Rank = 0; - - if (typeiOsuiTestDictionary.ContainsKey(formsType.Type)) - { - iOsTests = - (from test in typeiOsuiTestDictionary[formsType.Type] - select test).ToList(); - } - - if (typeAndroidUiTestDictionary.ContainsKey(formsType.Type)) - { - androidTests = - (from test in typeAndroidUiTestDictionary[formsType.Type] - select test).ToList(); - } - - _iosTypeTests = - (from test in iOsTests - where test.MemberName == "" - select test.TestName).ToList(); - - _androidTypeTests = - (from test in androidTests - where test.MemberName == "" - select test.TestName).ToList(); - - Rank -= _iosTypeTests.Count; - Rank -= _androidTypeTests.Count; - - Children = new List<DomMemberModel>(); - - foreach (var formsMember in formsType.Members()) - { - var iOsMemberTests = - (from test in iOsTests - where test.MemberName == formsMember.MemberInfo.Name - select test.TestName).ToList(); - - Rank -= iOsMemberTests.Count; - - var androidMemberTests = - (from test in androidTests - where test.MemberName == formsMember.MemberInfo.Name - select test.TestName).ToList(); - - Rank -= androidMemberTests.Count; - - Children.Add(new DomMemberModel(formsMember.MemberInfo.Name, iOsMemberTests, androidMemberTests)); - } - - Rank += Children.Count; - } - - public List<DomMemberModel> Children { get; } - - public int Rank { get; } - - public string Html() - { - var html = - "<div class=\"type\" id=\"" + TypeName + "\">" + - "<div class=\"stats\">" + - "<h2>" + TypeName + "</h2>" + - "<h3>Number of tests: " + TotalTests() + "</h3>" + - string.Format("<h3>{0:N2}%</h3>", PercentageTested() * 100) + - "<div class=\"progressBar\">" + - "<div class=\"testedBox\" style=\"width:" + 290 * PercentageTested() + "px\"></div>" + - "</div>" + - "</div>" + - "<div class=\"platform\">" + - "<div class=\"ios\">iOS</div>" + - "<div class=\"android\">Android</div>" + - "</div>"; - - html += - "<div class=\"testsForType\">" + - "<div class=\"platformTestContainer\">"; - html += "<div class=\"iosColumn\">"; - foreach (var iosTest in _iosTypeTests) - html += "<div class=\"test ios\">" + iosTest + "</div>"; - html += "</div>"; - html += "<div class=\"androidColumn\">"; - foreach (var androidTest in _androidTypeTests) - html += "<div class=\"test android\">" + androidTest + "</div>"; - html += "</div>" + - "</div>" + - "</div>"; - - html += "<div class=\"members\">"; - foreach (var child in Children) - { - html += "<div class=\"member\">"; - html += child.Html(); - html += "</div>"; - } - - html += "</div>"; - - html += "</div>"; - return html; - } - - int TotalTests() - { - int result = _iosTypeTests.Count + _androidTypeTests.Count; - foreach (var child in Children) - result += child.NumberOfiOsTests + child.NumberOfAndroidTests; - return result; - } - - int NumberOfTestedMembers() - { - int result = 0; - foreach (var child in Children) - { - if (child.IsTested) - result += 1; - } - return result; - } - - double PercentageTested() - { - if (Children.Count > 0) - return (NumberOfTestedMembers() / (double)Children.Count); - - return 0.0; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/FormsUITest.cs b/Xamarin.Forms.UITest.Validator/FormsUITest.cs deleted file mode 100644 index 508b1777..00000000 --- a/Xamarin.Forms.UITest.Validator/FormsUITest.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Xamarin.Forms.UITest.Validator -{ - internal class FormsUiTest - { - public FormsUiTest(string memberName, string testName) - { - MemberName = memberName; - TestName = testName; - } - - public string MemberName { get; private set; } - - public string TestName { get; private set; } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/LoaderActions.cs b/Xamarin.Forms.UITest.Validator/LoaderActions.cs deleted file mode 100644 index 9de39f21..00000000 --- a/Xamarin.Forms.UITest.Validator/LoaderActions.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using Xamarin.Forms.CustomAttributes; -using Xamarin.Forms.Loader; - -namespace Xamarin.Forms.UITest.Validator -{ - internal class LoaderActions - { - readonly IEnumerable<TestType> _androidTestTypes; - readonly IEnumerable<TestType> _iOsTestTypes; - - public LoaderActions() - { - var formsLoader = new FormsLoader(); - FormsTypes = formsLoader.FormsTypes(); - _iOsTestTypes = formsLoader.IOSTestTypes(); - _androidTestTypes = formsLoader.AndroidTestTypes(); - - TypeiOsuiTestDictionary = BuildTypeUiTestDictionary(_iOsTestTypes); - TypeAndroidUiTestDictionary = BuildTypeUiTestDictionary(_androidTestTypes); - - Debug.WriteLine("HI"); - } - - internal IEnumerable<FormsType> FormsTypes { get; } - - internal Dictionary<Type, List<FormsUiTest>> TypeiOsuiTestDictionary { get; } - - internal Dictionary<Type, List<FormsUiTest>> TypeAndroidUiTestDictionary { get; } - - Dictionary<Type, List<FormsUiTest>> BuildTypeUiTestDictionary(IEnumerable<TestType> testTypes) - { - var result = new Dictionary<Type, List<FormsUiTest>>(); - - foreach (TestType testType in testTypes) - { - foreach (TestMember testMember in testType.Members()) - { - IEnumerable<UiTestAttribute> testAttrs = testMember.UiTestAttributes(); - foreach (UiTestAttribute testAttr in testAttrs) - { - Type type = testAttr.Type; - string memberName = testAttr.MemberName; - string testName = testMember.MemberInfo.Name; - - if (!result.ContainsKey(type)) - result.Add(type, new List<FormsUiTest> { new FormsUiTest(memberName, testName) }); - else - result[type].Add(new FormsUiTest(memberName, testName)); - } - } - } - - return result; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs b/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs deleted file mode 100644 index 00442570..00000000 --- a/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly: AssemblyTitle("Xamarin.Forms.UITest.Validator")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Xamarin.Forms.UITest.Validator")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly: Guid("e1948442-ac28-49be-ac46-8ceeff28e183")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css b/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css deleted file mode 100644 index d04f971b..00000000 --- a/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css +++ /dev/null @@ -1,206 +0,0 @@ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; - font-family: sans-serif; - font-size: 14px; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} - -html { - padding: 50px; -} - -#totalStats { - width: 1000px; - padding: 20px; -} - -#totalStats #coverage { - float: left; - font-size:225%; - padding: 10px; -} - -.totalStatsLarge { - padding : 15px 10px; - text-align: start; - width: 200px; - float: right; - color: #808080; - font-size: 18px; -} - -.totalStatsSmall { - padding : 5px 10px; - text-align: start; - width: 200px; - float: right; - color: #808080; - font-size: 18px; -} - -#totalStats .coverageDetail { - float: left; - font-size:150%; - padding: 20px; -} - -.cell { - width: 200px; - border: 1px solid green; - float: left; -} - -.test { - color: blue; -} - -.type { - clear: both; - width: 1000px; - overflow: hidden; - border: 1px solid #bbb; - margin: 5px; -} - -.stats { - height: 37px; - border-bottom: 1px solid #ddd; -} - -.stats h2 { - cursor: pointer; - font-size: 115%; - float: left; - width: 300px; - padding: 7px 0px 10px 10px; -} - -.stats h3 { - float: left; - width: 200px; - padding: 11px 0px 10px 0px; -} - -.platform { - width: 500px; - padding: 20px 0px 20px 10px; - margin: 0px 0px 0px 300px; - -} - -.platform .ios { - font-size: 18px; - width: 200px; - float: left; -} - -.platform .android { - font-size: 18px; -} - -.type .testsForType, .type .members, .type .platform { - display: none; -} - -.type.expanded .testsForType, .type.expanded .members, .type.expanded .platform { - display: block; -} - -.testsForType { - padding: 0px 0px 20px 20px; -} - -.members { - padding: 0px 0px 20px 20px; -} - -.member { - clear: both; - padding: 3px; -} - -.testedMember { - font-size: 100%; - color: green; -} - -.unTestedMember { - height: 28px; - font-size: 100%; - color: red; -} - -.test { - color: blue; - text-decoration: underline; -} - -.platformTestContainer { - width: 400px; - margin-left: 290px; -} - -.iosColumn { - float: left; - width: 180px; - margin-right: 20px; - overflow: hidden; -} - -.androidColumn { - float: left; - width: 180px; - margin-right: 20px; - overflow: hidden; -} - -.progressBar { - float: right; - background-color: #ee8888; - width: 290px; - height: 37px; -} - -.testedBox { - background-color: #88cc88; - height: 37px; -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js b/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js deleted file mode 100644 index d204495f..00000000 --- a/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js +++ /dev/null @@ -1,6 +0,0 @@ -$(function () { - $('body').on('click', '.stats', function (e) { - e.preventDefault(); - $(this).parents('.type').toggleClass('expanded'); - }); -});
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Validator.cs b/Xamarin.Forms.UITest.Validator/Validator.cs deleted file mode 100644 index d384940f..00000000 --- a/Xamarin.Forms.UITest.Validator/Validator.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.IO; -using System.Linq; - -namespace Xamarin.Forms.UITest.Validator -{ - //[UITest (typeof(Button), "Clicked")] - internal class Validator - { - // TODO - Add support for muliple attributes (i.e. Fonts or Image.Aspect) - // TODO - Add analysis of test duplication using duplicated tags - // TODO - Support Single class analysis by passing a class name into the program - // TODO - Stats of public surface area coverage - - static int Main(string[] args) - { - Console.WriteLine("Generating UITest code coverage"); - - // Currently scanning for public events, public properties and public methods. - - var loaderActions = new LoaderActions(); - - var domTypes = - (from formsType in loaderActions.FormsTypes - where formsType.Members().Count() > 1 - select - new DomTypeModel(formsType, loaderActions.TypeiOsuiTestDictionary, loaderActions.TypeAndroidUiTestDictionary)) - .OrderByDescending(domType => domType.Rank); - - var typeMemberHtml = ""; - int numberOfTestedMembers = 0; - int numberOfMembers = 0; - - foreach (var domType in domTypes) - { - numberOfTestedMembers += (from member in domType.Children where member.IsTested select member).Count(); - numberOfMembers += domType.Children.Count; - typeMemberHtml += domType.Html(); - } - - var html = - "<html>" + - "<head>" + - "<link rel=\"stylesheet\" type=\"text/css\" href=\"Css/styles.css\">" + - "<script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-2.1.3.min.js\"></script>" + - "<script type=\"text/javascript\" src=\"Js/script.js\"></script>" + - "</head>" + - "<body>" + - "<div id=\"totalStats\">" + - string.Format("<div id=\"coverage\">{0:N2}%<span class=\"totalStatsLarge\"> Covered!!</span></div>", - (numberOfTestedMembers / (double)numberOfMembers) * 100) + - string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Members</span></div>", - numberOfMembers) + - string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Tested Members</span></div>", - numberOfTestedMembers) + - "</div>" + - "<div id=\"container\">" + - typeMemberHtml + - "</div>" + - "</body>" + - "</html>"; - - File.WriteAllText("../../UITestCoverage/index.html", html); - - return 0; - } - } -}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj b/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj deleted file mode 100644 index a1c52807..00000000 --- a/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{115C31B9-C1B2-4B00-BB0E-EA36F105903E}</ProjectGuid> - <OutputType>Exe</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Xamarin.Forms.UITest.Validator</RootNamespace> - <AssemblyName>Xamarin.Forms.UITest.Validator</AssemblyName> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> - <RestorePackages>true</RestorePackages> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0114;0108;0108</NoWarn> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0114;0108;0108</NoWarn> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> - <DebugSymbols>true</DebugSymbols> - <OutputPath>bin\Turkey\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DebugType>full</DebugType> - <PlatformTarget>AnyCPU</PlatformTarget> - <ErrorReport>prompt</ErrorReport> - <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> - <Prefer32Bit>true</Prefer32Bit> - <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0114;0108;0108</NoWarn> - </PropertyGroup> - <ItemGroup> - <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> - <Private>True</Private> - <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Web" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - <Reference Include="Xamarin.UITest, Version=1.3.7.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\Xamarin.UITest.1.3.7\lib\Xamarin.UITest.dll</HintPath> - <Private>True</Private> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="DomMemberModel.cs" /> - <Compile Include="DomTypeModel.cs" /> - <Compile Include="FormsUITest.cs" /> - <Compile Include="LoaderActions.cs" /> - <Compile Include="Validator.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - <None Include="Logs\Xamarin.Forms.UITest.Validator.log" /> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> - <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> - <Name>Xamarin.Forms.Core</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj"> - <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project> - <Name>Xamarin.Forms.CustomAttributes</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Loader\Xamarin.Forms.Loader.csproj"> - <Project>{00211725-2f89-4e2c-ac5a-38e5ff61be67}</Project> - <Name>Xamarin.Forms.Loader</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj"> - <Project>{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}</Project> - <Name>Xamarin.Forms.Core.iOS.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj"> - <Project>{A34EBE01-25BF-4E69-A2DC-2288DC625541}</Project> - <Name>Xamarin.Forms.Core.Android.UITests</Name> - </ProjectReference> - <ProjectReference Include="..\Xamarin.Forms.Platform\Xamarin.Forms.Platform.csproj"> - <Project>{67f9d3a8-f71e-4428-913f-c37ae82cdb24}</Project> - <Name>Xamarin.Forms.Platform</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup /> - <ItemGroup> - <Content Include="UITestCoverage\Css\styles.css" /> - <Content Include="UITestCoverage\Js\script.js" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> - </Target> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/packages.config b/Xamarin.Forms.UITest.Validator/packages.config deleted file mode 100644 index ab8ea991..00000000 --- a/Xamarin.Forms.UITest.Validator/packages.config +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="NUnit" version="2.6.4" targetFramework="net45" /> - <package id="Xamarin.UITest" version="1.3.7" targetFramework="net45" /> -</packages>
\ No newline at end of file diff --git a/Xamarin.Forms.sln b/Xamarin.Forms.sln index b1899efe..168583a8 100644 --- a/Xamarin.Forms.sln +++ b/Xamarin.Forms.sln @@ -49,9 +49,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuspec", ".nuspec", "{7E12 .nuspec\Xamarin.Forms.Maps.props = .nuspec\Xamarin.Forms.Maps.props .nuspec\Xamarin.Forms.Maps.targets = .nuspec\Xamarin.Forms.Maps.targets .nuspec\Xamarin.Forms.nuspec = .nuspec\Xamarin.Forms.nuspec + .nuspec\Xamarin.Forms.Pages.Azure.nuspec = .nuspec\Xamarin.Forms.Pages.Azure.nuspec .nuspec\Xamarin.Forms.Pages.nuspec = .nuspec\Xamarin.Forms.Pages.nuspec .nuspec\Xamarin.Forms.targets = .nuspec\Xamarin.Forms.targets - .nuspec\Xamarin.Forms.Pages.Azure.nuspec = .nuspec\Xamarin.Forms.Pages.Azure.nuspec EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WP8", "Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8.csproj", "{517B6AE0-792B-4665-9376-5CA33E539181}" @@ -84,16 +84,10 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "APIDocs", "docs\APIDocs.shp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android.FormsViewGroup", "Xamarin.Forms.Platform.Android.FormsViewGroup\Xamarin.Forms.Platform.Android.FormsViewGroup.csproj", "{3B72465B-ACAE-43AE-9327-10F372FE5F80}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.UITest.Validator", "Xamarin.Forms.UITest.Validator\Xamarin.Forms.UITest.Validator.csproj", "{115C31B9-C1B2-4B00-BB0E-EA36F105903E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.iOS.UITests", "Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj", "{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Android.UITests", "Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj", "{A34EBE01-25BF-4E69-A2DC-2288DC625541}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Loader", "Xamarin.Forms.Loader\Xamarin.Forms.Loader.csproj", "{00211725-2F89-4E2C-AC5A-38E5FF61BE67}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.UITest.TestCloud", "Xamarin.Forms.UITest.TestCloud\Xamarin.Forms.UITest.TestCloud.csproj", "{1E238A01-B492-461F-BADE-415E8F9C5DFC}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.CustomAttributes", "Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj", "{4DCD0420-1168-4B77-86DB-6196EE4BD491}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.iOS.Classic", "Xamarin.Forms.Maps.iOS\Xamarin.Forms.Maps.iOS.Classic.csproj", "{CA10FACD-22AB-463F-A20E-379C212B0858}" @@ -758,32 +752,6 @@ Global {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|ARM.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|ARM.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|iPhone.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|Templates.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|x64.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|x64.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|x86.ActiveCfg = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Debug|x86.Build.0 = Debug|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|Any CPU.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|ARM.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|ARM.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|iPhone.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|iPhone.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|Templates.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|x64.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|x64.Build.0 = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|x86.ActiveCfg = Release|Any CPU - {115C31B9-C1B2-4B00-BB0E-EA36F105903E}.Release|x86.Build.0 = Release|Any CPU {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -836,58 +804,6 @@ Global {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|Any CPU.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|ARM.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|ARM.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|iPhone.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|Templates.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|x64.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|x64.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|x86.ActiveCfg = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Debug|x86.Build.0 = Debug|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|Any CPU.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|Any CPU.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|ARM.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|ARM.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|iPhone.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|iPhone.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|Templates.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|x64.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|x64.Build.0 = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|x86.ActiveCfg = Release|Any CPU - {00211725-2F89-4E2C-AC5A-38E5FF61BE67}.Release|x86.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|ARM.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|ARM.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|iPhone.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|Templates.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|x64.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|x64.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|x86.ActiveCfg = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Debug|x86.Build.0 = Debug|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|Any CPU.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|ARM.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|ARM.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|iPhone.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|iPhone.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|Templates.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|x64.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|x64.Build.0 = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|x86.ActiveCfg = Release|Any CPU - {1E238A01-B492-461F-BADE-415E8F9C5DFC}.Release|x86.Build.0 = Release|Any CPU {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.Build.0 = Debug|Any CPU {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -1748,11 +1664,8 @@ Global {BD50B39A-EBC5-408F-9C5E-923A8EBAE473} = {132FB9A4-613F-44CE-95D5-758D32D231DD} {DC1F3933-AC99-4887-8B09-E13C2B346D4F} = {DDDFBCAF-93DE-4868-8296-FD909EF32EF7} {3B72465B-ACAE-43AE-9327-10F372FE5F80} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} - {115C31B9-C1B2-4B00-BB0E-EA36F105903E} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} {EADD8100-B3AE-4A31-92C4-267A64A1C6EB} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} {A34EBE01-25BF-4E69-A2DC-2288DC625541} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} - {00211725-2F89-4E2C-AC5A-38E5FF61BE67} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} - {1E238A01-B492-461F-BADE-415E8F9C5DFC} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} {4DCD0420-1168-4B77-86DB-6196EE4BD491} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} {CA10FACD-22AB-463F-A20E-379C212B0858} = {132FB9A4-613F-44CE-95D5-758D32D231DD} {C7131F14-274F-4B55-ACA9-E81731AD012F} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} diff --git a/check-previous-test-results.sh b/check-previous-test-results.sh deleted file mode 100755 index b9f3b117..00000000 --- a/check-previous-test-results.sh +++ /dev/null @@ -1,71 +0,0 @@ -appfolder="$1" -rootfolder="$2" -changesfile="$3" -platformkeyword="$4" - -previousrunfolder="$rootfolder/PreviousUITestResults" -should_run_tests=false - -echo "Looking for $previousrunfolder" - -if test -e $previousrunfolder -then - echo "Found previous build's test results folder" -else - should_run_tests=true - echo "Previous test results folder not found" -fi - -echo "Looking for $previousrunfolder/nunit_output.xml" - -if test -e $previousrunfolder/nunit_output.xml -then - echo "Found previous NUnit results" -else - should_run_tests=true - echo "Previous NUnit results not found" -fi - -if test -e $changesfile -then - echo "Found list of changes:" - changes_require_tests=false - cat $changesfile - - # Look for platform-specific code changes - if grep -q $platformkeyword $changesfile - then - echo "Found changes to $platformkeyword stuff" - should_run_tests=true - changes_require_tests=true - fi - - # Now check for universal stuff (Core, Issues...) - if grep -q -e 'Xamarin\.Forms\.Controls' -e 'Xamarin\.Forms\.Core' -e 'Xamarin\.Forms\.CustomAttributes' -e 'Xamarin\.Forms\.Xaml' $changesfile - then - echo "Found changes which require a UI Tests run" - should_run_tests=true - changes_require_tests=true - fi - - if ! $changes_require_tests - then - echo "No changes which require a UI Tests run for $platformkeyword were found" - fi - -else - should_run_tests=false - echo "No changes in this build" -fi - -if $should_run_tests -then - echo "Can't reuse previous results; UI tests will be run." - touch $appfolder/noresults.xml - exit 1 -else - echo "We can just reuse the previous test results" - echo "##teamcity[importData type='nunit' path='$previousrunfolder/nunit_output.xml' parseOutOfDate='true']" - cp $previousrunfolder/nunit_output.xml $appfolder/nunit_output.xml - exit 0 -fi
\ No newline at end of file |