mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Restructuring how the test suite is driven
This commit is contained in:
parent
6f5b03dc0f
commit
c29748ede5
7 changed files with 37 additions and 5 deletions
5
src/spectator/config.cr
Normal file
5
src/spectator/config.cr
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module Spectator
|
||||||
|
# Provides customization and describes specifics for how Spectator will run and report tests.
|
||||||
|
class Config
|
||||||
|
end
|
||||||
|
end
|
|
@ -16,7 +16,7 @@ module Spectator::Formatters
|
||||||
def start_suite
|
def start_suite
|
||||||
end
|
end
|
||||||
|
|
||||||
def end_suite(results : TestResults)
|
def end_suite(results : TestSuiteResults)
|
||||||
puts
|
puts
|
||||||
puts
|
puts
|
||||||
display_failures(results)
|
display_failures(results)
|
||||||
|
|
|
@ -1,8 +1,26 @@
|
||||||
module Spectator::Formatters
|
module Spectator::Formatters
|
||||||
|
# Interface for reporting test progress and results.
|
||||||
|
#
|
||||||
|
# The methods should be called in this order:
|
||||||
|
# 1. `#start_suite`
|
||||||
|
# 2. `#start_example`
|
||||||
|
# 3. `#end_example`
|
||||||
|
# 4. `#end_suite`
|
||||||
|
#
|
||||||
|
# Steps 2 and 3 are called for each example in the suite.
|
||||||
abstract class Formatter
|
abstract class Formatter
|
||||||
|
# Called when a test suite is starting to execute.
|
||||||
abstract def start_suite
|
abstract def start_suite
|
||||||
abstract def end_suite(results : TestResults)
|
|
||||||
|
# Called when a test suite finishes.
|
||||||
|
# The results from the entire suite are provided.
|
||||||
|
abstract def end_suite(results : TestSuiteResults)
|
||||||
|
|
||||||
|
# Called before a test starts.
|
||||||
abstract def start_example(example : Example)
|
abstract def start_example(example : Example)
|
||||||
|
|
||||||
|
# Called when a test finishes.
|
||||||
|
# The result of the test is provided.
|
||||||
abstract def end_example(result : Result)
|
abstract def end_example(result : Result)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -25,7 +25,9 @@ require "./root_example_group"
|
||||||
|
|
||||||
require "./example_failed"
|
require "./example_failed"
|
||||||
require "./expectation_failed"
|
require "./expectation_failed"
|
||||||
require "./test_results"
|
require "./config"
|
||||||
|
require "./test_suite"
|
||||||
|
require "./test_suite_results"
|
||||||
require "./runner"
|
require "./runner"
|
||||||
|
|
||||||
require "./result"
|
require "./result"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
module Spectator
|
module Spectator
|
||||||
|
# Main driver for executing tests and feeding results to formatters.
|
||||||
class Runner
|
class Runner
|
||||||
def initialize(@group : ExampleGroup,
|
def initialize(@group : ExampleGroup,
|
||||||
@formatter : Formatters::Formatter = Formatters::DefaultFormatter.new)
|
@formatter : Formatters::Formatter = Formatters::DefaultFormatter.new)
|
||||||
|
@ -16,7 +17,7 @@ module Spectator
|
||||||
end.as(Result)
|
end.as(Result)
|
||||||
end.to_a
|
end.to_a
|
||||||
end
|
end
|
||||||
@formatter.end_suite(TestResults.new(results, elapsed))
|
@formatter.end_suite(TestSuiteResults.new(results, elapsed))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
5
src/spectator/test_suite.cr
Normal file
5
src/spectator/test_suite.cr
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module Spectator
|
||||||
|
# Encapsulates the tests to run and additional properties about them.
|
||||||
|
class TestSuite
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,6 @@
|
||||||
module Spectator
|
module Spectator
|
||||||
class TestResults
|
# Outcome of all tests in a suite.
|
||||||
|
class TestSuiteResults
|
||||||
getter runtime : Time::Span
|
getter runtime : Time::Span
|
||||||
|
|
||||||
@results : Array(Result)
|
@results : Array(Result)
|
Loading…
Reference in a new issue