void SetupRunOptions(TestExecutionOptions options) { // Gallio has an extremely flexible mechanism for defining test filters // For now I will just try to pick out tags that should be included or excluded var metaFilters = from filter in options.FilterSet.Rules let rule = filter.Filter as Gallio.Model.Filters.MetadataFilter<Gallio.Model.Filters.ITestDescriptor> where rule != null select new { RuleType = filter.RuleType, Rule = rule }; var tagFilters = from meta in metaFilters let rule = meta.Rule let value = rule.ValueFilter as Gallio.Model.Filters.EqualityFilter<string> where value != null && rule.Key == "Tag" group value.Comparand by meta.RuleType into g select g; var includeTags = tagFilters.SingleOrDefault(g => g.Key == Gallio.Model.Filters.FilterRuleType.Inclusion) ?? Enumerable.Empty<string>(); var excludeTags = tagFilters.SingleOrDefault(g => g.Key == Gallio.Model.Filters.FilterRuleType.Exclusion) ?? Enumerable.Empty<string>(); _options = new RunOptions(includeTags, excludeTags, new string[0]); }
private Controller(Action<string> listenCallback, RunOptions runOptions) { _listener = new ControllerRunListener(listenCallback); _explorer = new AssemblyExplorer(); _runner = new DefaultRunner(_listener, runOptions, signalRunStartAndEnd: false); }