2020-09-12 21:58:54 +00:00
|
|
|
require "./example_filter"
|
|
|
|
require "./formatting"
|
|
|
|
|
2018-12-12 18:48:08 +00:00
|
|
|
module Spectator
|
|
|
|
# Provides customization and describes specifics for how Spectator will run and report tests.
|
|
|
|
class Config
|
2019-03-23 23:00:21 +00:00
|
|
|
@formatters : Array(Formatting::Formatter)
|
2018-12-13 21:16:49 +00:00
|
|
|
|
2019-03-22 05:40:00 +00:00
|
|
|
# Indicates whether the test should abort on first failure.
|
|
|
|
getter? fail_fast : Bool
|
|
|
|
|
2019-03-22 19:21:37 +00:00
|
|
|
# Indicates whether the test should fail if there are no examples.
|
|
|
|
getter? fail_blank : Bool
|
|
|
|
|
2019-03-22 20:05:48 +00:00
|
|
|
# Indicates whether the test should be done as a dry-run.
|
|
|
|
# Examples won't run, but the output will show that they did.
|
|
|
|
getter? dry_run : Bool
|
|
|
|
|
2019-03-24 01:42:19 +00:00
|
|
|
# Random number generator to use for everything.
|
|
|
|
getter random : Random
|
2019-03-24 01:18:29 +00:00
|
|
|
|
2019-03-24 01:43:41 +00:00
|
|
|
# Indicates whether tests are run in a random order.
|
|
|
|
getter? randomize : Bool
|
|
|
|
|
2020-07-27 16:36:53 +00:00
|
|
|
# Random seed used for number generation.
|
|
|
|
getter! random_seed : UInt64?
|
|
|
|
|
2019-03-25 18:26:45 +00:00
|
|
|
# Indicates whether profiling information should be displayed.
|
|
|
|
getter? profile : Bool
|
|
|
|
|
2019-03-25 17:17:53 +00:00
|
|
|
# Filter that determines which examples to run.
|
|
|
|
getter example_filter : ExampleFilter
|
|
|
|
|
2018-12-13 21:16:49 +00:00
|
|
|
# Creates a new configuration.
|
2019-03-22 05:03:13 +00:00
|
|
|
def initialize(builder)
|
2019-03-23 23:00:21 +00:00
|
|
|
@formatters = builder.formatters
|
2019-03-22 05:40:00 +00:00
|
|
|
@fail_fast = builder.fail_fast?
|
2019-03-22 19:21:37 +00:00
|
|
|
@fail_blank = builder.fail_blank?
|
2019-03-22 20:05:48 +00:00
|
|
|
@dry_run = builder.dry_run?
|
2019-03-24 01:42:19 +00:00
|
|
|
@random = builder.random
|
2019-03-24 01:43:41 +00:00
|
|
|
@randomize = builder.randomize?
|
2020-07-27 16:36:53 +00:00
|
|
|
@random_seed = builder.seed?
|
2019-03-25 18:26:45 +00:00
|
|
|
@profile = builder.profile?
|
2019-03-25 17:17:53 +00:00
|
|
|
@example_filter = builder.example_filter
|
2018-12-13 21:16:49 +00:00
|
|
|
end
|
2019-03-23 23:00:21 +00:00
|
|
|
|
|
|
|
# Yields each formatter that should be reported to.
|
|
|
|
def each_formatter
|
|
|
|
@formatters.each do |formatter|
|
|
|
|
yield formatter
|
|
|
|
end
|
|
|
|
end
|
2018-12-12 18:48:08 +00:00
|
|
|
end
|
|
|
|
end
|