mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Implement fail-fast in runner
Report tracks number of omitted tests due to abort.
This commit is contained in:
parent
9e63c20df2
commit
a31d5c8b5b
4 changed files with 82 additions and 7 deletions
|
@ -17,10 +17,15 @@ module Spectator
|
|||
# Number of pending examples.
|
||||
getter pending_count = 0
|
||||
|
||||
# Number of remaining tests.
|
||||
# This will be greater than zero only in fail-fast mode.
|
||||
getter remaining_count
|
||||
|
||||
# Creates the report.
|
||||
# The *results* are from running the examples in the test suite.
|
||||
# The *runtime* is the total time it took to execute the suite.
|
||||
def initialize(@results : Array(Result), @runtime)
|
||||
# The *remaining_count* is the number of tests skipped due to fail-fast.
|
||||
def initialize(@results : Array(Result), @runtime, @remaining_count = 0)
|
||||
@results.each do |result|
|
||||
case result
|
||||
when SuccessfulResult
|
||||
|
@ -46,6 +51,12 @@ module Spectator
|
|||
failed_count > 0
|
||||
end
|
||||
|
||||
# Indicates whether there were skipped tests
|
||||
# because of a failure causing the test to abort.
|
||||
def remaining?
|
||||
remaining_count > 0
|
||||
end
|
||||
|
||||
# Returns a set of results for all failed examples.
|
||||
def failures
|
||||
@results.each.compact_map(&.as?(FailedResult))
|
||||
|
|
|
@ -16,20 +16,28 @@ module Spectator
|
|||
@config.formatter.start_suite(@suite)
|
||||
|
||||
# Run all examples and capture the results.
|
||||
results = [] of Result
|
||||
results = Array(Result).new(@suite.size)
|
||||
elapsed = Time.measure do
|
||||
results = @suite.map do |example|
|
||||
run_example(example).as(Result)
|
||||
end
|
||||
collect_results(results)
|
||||
end
|
||||
|
||||
# Generate a report and pass it along to the formatter.
|
||||
report = Report.new(results, elapsed)
|
||||
remaining = @suite.size - results.size
|
||||
report = Report.new(results, elapsed, remaining)
|
||||
@config.formatter.end_suite(report)
|
||||
|
||||
!report.failed?
|
||||
end
|
||||
|
||||
# Runs all examples and adds results to a list.
|
||||
private def collect_results(results)
|
||||
@suite.each do |example|
|
||||
result = run_example(example).as(Result)
|
||||
results << result
|
||||
break if @config.fail_fast? && result.is_a?(FailedResult)
|
||||
end
|
||||
end
|
||||
|
||||
# Runs a single example and returns the result.
|
||||
# The formatter is given the example and result information.
|
||||
private def run_example(example)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue