class Rspec::Core::World
def apply_exclusion_filters(collection, conditions={})
def apply_exclusion_filters(collection, conditions={}) find(collection, :negative, conditions) end
def apply_inclusion_filters(collection, conditions={})
def apply_inclusion_filters(collection, conditions={}) find(collection, :positive, conditions) end
def example_groups_to_run
def example_groups_to_run return @example_groups_to_run if @example_groups_to_run if filter || exclusion_filter @example_groups_to_run = filter_example_groups if @example_groups_to_run.size == 0 && Rspec::Core.configuration.run_all_when_everything_filtered? Rspec::Core.configuration.puts "No examples were matched by #{filter.inspect}, running all" # reset the behaviour list to all example groups, and add back all examples @example_groups_to_run = @example_groups @example_groups.each { |b| b.examples_to_run.replace(b.examples) } else Rspec::Core.configuration.puts "Run filtered using #{filter.inspect}" end else @example_groups_to_run = @example_groups @example_groups.each { |b| b.examples_to_run.replace(b.examples) } end @example_groups_to_run end
def exclusion_filter
def exclusion_filter Rspec::Core.configuration.exclusion_filter end
def filter
def filter Rspec::Core.configuration.filter end
def filter_example_groups
def filter_example_groups example_groups.inject([]) do |list_of_example_groups, example_group| examples = example_group.examples examples = apply_exclusion_filters(examples, exclusion_filter) if exclusion_filter examples = apply_inclusion_filters(examples, filter) if filter examples.uniq! example_group.examples_to_run.replace(examples) if examples.empty? list_of_example_groups << nil else list_of_example_groups << example_group end end.compact end
def find(collection, type_of_filter=:positive, conditions={})
def find(collection, type_of_filter=:positive, conditions={}) negative = type_of_filter != :positive collection.select do |item| # negative conditions.any?, positive conditions.all? ????? result = conditions.all? do |filter_on, filter| item.metadata.apply_condition(filter_on, filter) end negative ? !result : result end end
def initialize
def initialize @example_groups = [] end
def shared_example_groups
def shared_example_groups @shared_example_groups ||= {} end
def total_examples_to_run
def total_examples_to_run @total_examples_to_run ||= example_groups_to_run.inject(0) { |sum, b| sum += b.examples_to_run.size } end