/// <summary> /// Gets the trait values from the Category attribute. /// </summary> /// <param name="traitAttribute">The trait attribute containing the trait values.</param> /// <returns>The trait values.</returns> public IEnumerable <KeyValuePair <string, string> > GetTraits(IAttributeInfo traitAttribute) { TargetFrameworkMonikers frameworks = (TargetFrameworkMonikers)traitAttribute.GetConstructorArguments().First(); return(DiscovererHelpers.TestFrameworkApplies(frameworks) ? new[] { new KeyValuePair <string, string>(XunitConstants.Category, XunitConstants.Failing) } : Array.Empty <KeyValuePair <string, string> >()); }
/// <summary> /// Gets the trait values from the Category attribute. /// </summary> /// <param name="traitAttribute">The trait attribute containing the trait values.</param> /// <returns>The trait values.</returns> public IEnumerable <KeyValuePair <string, string> > GetTraits(IAttributeInfo traitAttribute) { IEnumerable <object> ctorArgs = traitAttribute.GetConstructorArguments(); Debug.Assert(ctorArgs.Count() >= 2); string issue = ctorArgs.First().ToString(); TestPlatforms platforms = TestPlatforms.Any; TargetFrameworkMonikers frameworks = TargetFrameworkMonikers.Any; TestRuntimes runtimes = TestRuntimes.Any; Type calleeType = null; string[] conditionMemberNames = null; foreach (object arg in ctorArgs.Skip(1)) // First argument is the issue number. { if (arg is TestPlatforms) { platforms = (TestPlatforms)arg; } else if (arg is TargetFrameworkMonikers) { frameworks = (TargetFrameworkMonikers)arg; } else if (arg is TestRuntimes) { runtimes = (TestRuntimes)arg; } else if (arg is Type) { calleeType = (Type)arg; } else if (arg is string[]) { conditionMemberNames = (string[])arg; } } if (calleeType != null && conditionMemberNames != null) { if (!DiscovererHelpers.Evaluate(calleeType, conditionMemberNames)) { yield return(new KeyValuePair <string, string>(XunitConstants.Category, XunitConstants.Failing)); } } else if (DiscovererHelpers.TestPlatformApplies(platforms) && DiscovererHelpers.TestRuntimeApplies(runtimes) && DiscovererHelpers.TestFrameworkApplies(frameworks)) { yield return(new KeyValuePair <string, string>(XunitConstants.Category, XunitConstants.Failing)); } }
internal static IEnumerable <KeyValuePair <string, string> > EvaluateArguments(IEnumerable <object> ctorArgs, string category, int skipFirst = 1) { Debug.Assert(ctorArgs.Count() >= 2); TestPlatforms platforms = TestPlatforms.Any; TargetFrameworkMonikers frameworks = TargetFrameworkMonikers.Any; TestRuntimes runtimes = TestRuntimes.Any; Type calleeType = null; string[] conditionMemberNames = null; foreach (object arg in ctorArgs.Skip(skipFirst)) // First argument is the issue number or reason. { if (arg is TestPlatforms) { platforms = (TestPlatforms)arg; } else if (arg is TargetFrameworkMonikers) { frameworks = (TargetFrameworkMonikers)arg; } else if (arg is TestRuntimes) { runtimes = (TestRuntimes)arg; } else if (arg is Type) { calleeType = (Type)arg; } else if (arg is string[]) { conditionMemberNames = (string[])arg; } } if (calleeType != null && conditionMemberNames != null) { if (DiscovererHelpers.Evaluate(calleeType, conditionMemberNames)) { yield return(new KeyValuePair <string, string>(XunitConstants.Category, category)); } } else if (DiscovererHelpers.TestPlatformApplies(platforms) && DiscovererHelpers.TestRuntimeApplies(runtimes) && DiscovererHelpers.TestFrameworkApplies(frameworks)) { yield return(new KeyValuePair <string, string>(XunitConstants.Category, category)); } }
/// <summary> /// Gets the trait values from the Category attribute. /// </summary> /// <param name="traitAttribute">The trait attribute containing the trait values.</param> /// <returns>The trait values.</returns> public IEnumerable <KeyValuePair <string, string> > GetTraits(IAttributeInfo traitAttribute) { IEnumerable <object> ctorArgs = traitAttribute.GetConstructorArguments(); Debug.Assert(ctorArgs.Count() >= 2); string issue = ctorArgs.First().ToString(); TestPlatforms platforms = TestPlatforms.Any; TargetFrameworkMonikers frameworks = TargetFrameworkMonikers.Any; TestRuntimes runtimes = TestRuntimes.Any; foreach (object arg in ctorArgs.Skip(1)) // First argument is the issue number. { if (arg is TestPlatforms) { platforms = (TestPlatforms)arg; } else if (arg is TargetFrameworkMonikers) { frameworks = (TargetFrameworkMonikers)arg; } else if (arg is TestRuntimes) { runtimes = (TestRuntimes)arg; } } if (DiscovererHelpers.TestPlatformApplies(platforms) && DiscovererHelpers.TestRuntimeApplies(runtimes) && DiscovererHelpers.TestFrameworkApplies(frameworks)) { return(new[] { new KeyValuePair <string, string>(XunitConstants.Category, XunitConstants.Failing) }); } return(Array.Empty <KeyValuePair <string, string> >()); }