Add example filter to config

This commit is contained in:
Michael Miller 2019-03-25 11:17:53 -06:00
parent d1767ebb7a
commit 3654b2473b
2 changed files with 21 additions and 0 deletions

View file

@ -19,6 +19,9 @@ module Spectator
# Indicates whether tests are run in a random order.
getter? randomize : Bool
# Filter that determines which examples to run.
getter example_filter : ExampleFilter
# Creates a new configuration.
def initialize(builder)
@formatters = builder.formatters
@ -27,6 +30,7 @@ module Spectator
@dry_run = builder.dry_run?
@random = builder.random
@randomize = builder.randomize?
@example_filter = builder.example_filter
end
# Yields each formatter that should be reported to.

View file

@ -17,6 +17,7 @@ module Spectator
@fail_blank = false
@dry_run = false
@randomize = false
@filters = [] of ExampleFilter
# Sets the primary formatter to use for reporting test progress and results.
def formatter=(formatter : Formatting::Formatter)
@ -108,6 +109,22 @@ module Spectator
@randomize
end
# Adds a filter to determine which examples can run.
def add_example_filter(filter : ExampleFilter)
@filters << filter
end
# Retrieves a filter that determines which examples can run.
# If no filters were added with `#add_example_filter`,
# then the returned filter will allow all examples to be run.
protected def example_filter
if @filters.empty?
NullExampleFilter.new
else
CompositeExampleFilter.new(@filters)
end
end
# Creates a configuration.
def build : Config
Config.new(self)