mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Use standard log utility
This commit is contained in:
parent
e6d78345c4
commit
9c1fd6fb5a
3 changed files with 12 additions and 23 deletions
|
@ -1,6 +1,9 @@
|
||||||
|
require "log"
|
||||||
require "./spectator/includes"
|
require "./spectator/includes"
|
||||||
require "./spectator_test_context"
|
require "./spectator_test_context"
|
||||||
|
|
||||||
|
Log.setup_from_env
|
||||||
|
|
||||||
# Module that contains all functionality related to Spectator.
|
# Module that contains all functionality related to Spectator.
|
||||||
module Spectator
|
module Spectator
|
||||||
extend self
|
extend self
|
||||||
|
@ -8,13 +11,8 @@ module Spectator
|
||||||
# Current version of the Spectator library.
|
# Current version of the Spectator library.
|
||||||
VERSION = {{ `shards version #{__DIR__}`.stringify.chomp }}
|
VERSION = {{ `shards version #{__DIR__}`.stringify.chomp }}
|
||||||
|
|
||||||
# Inserts code to produce a debug message.
|
# Logger for Spectator internals.
|
||||||
# The code will only be injected when `spectator_debug` is defined (`-Dspectator_debug`).
|
Log = ::Log.for(self)
|
||||||
macro debug(message)
|
|
||||||
{% if flag?(:spectator_debug) %}
|
|
||||||
STDERR.puts {{message}}
|
|
||||||
{% end %}
|
|
||||||
end
|
|
||||||
|
|
||||||
# Top-level describe method.
|
# Top-level describe method.
|
||||||
# All specs in a file must be wrapped in this call.
|
# All specs in a file must be wrapped in this call.
|
||||||
|
@ -103,7 +101,7 @@ module Spectator
|
||||||
# But if an exception occurs outside an example,
|
# But if an exception occurs outside an example,
|
||||||
# it's likely the fault of the test framework (Spectator).
|
# it's likely the fault of the test framework (Spectator).
|
||||||
# So we display a helpful error that could be reported and return non-zero.
|
# So we display a helpful error that could be reported and return non-zero.
|
||||||
display_framework_error(ex)
|
Log.fatal(exception: ex) { "Spectator encountered an unexpected error" }
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,15 +141,4 @@ module Spectator
|
||||||
private def apply_command_line_args : Nil
|
private def apply_command_line_args : Nil
|
||||||
CommandLineArgumentsConfigSource.new.apply_to(@@config_builder)
|
CommandLineArgumentsConfigSource.new.apply_to(@@config_builder)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Displays a complete error stack.
|
|
||||||
# Prints an error and everything that caused it.
|
|
||||||
# Stacktrace is included.
|
|
||||||
private def display_framework_error(error) : Nil
|
|
||||||
STDERR.puts
|
|
||||||
STDERR.puts "!> Spectator encountered an unexpected error."
|
|
||||||
STDERR.puts "!> This is probably a bug and should be reported."
|
|
||||||
STDERR.puts
|
|
||||||
error.inspect_with_backtrace(STDERR)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -28,7 +28,7 @@ module Spectator
|
||||||
# Returns the result of the execution.
|
# Returns the result of the execution.
|
||||||
# The result will also be stored in `#result`.
|
# The result will also be stored in `#result`.
|
||||||
def run : Result
|
def run : Result
|
||||||
Spectator.debug("Running example #{self}")
|
Log.debug { "Running example #{self}" }
|
||||||
@delegate.call(self)
|
@delegate.call(self)
|
||||||
raise NotImplementedError.new("#run")
|
raise NotImplementedError.new("#run")
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,6 +8,8 @@ module Spectator
|
||||||
# A stack is used to track the current example group.
|
# A stack is used to track the current example group.
|
||||||
# Adding an example or group will nest it under the group at the top of the stack.
|
# Adding an example or group will nest it under the group at the top of the stack.
|
||||||
class SpecBuilder
|
class SpecBuilder
|
||||||
|
Log = ::Spectator::Log.for(self)
|
||||||
|
|
||||||
# Stack tracking the current group.
|
# Stack tracking the current group.
|
||||||
# The bottom of the stack (first element) is the root group.
|
# The bottom of the stack (first element) is the root group.
|
||||||
# The root group should never be removed.
|
# The root group should never be removed.
|
||||||
|
@ -36,7 +38,7 @@ module Spectator
|
||||||
# The newly created group is returned.
|
# The newly created group is returned.
|
||||||
# It shouldn't be used outside of this class until a matching `#end_group` is called.
|
# It shouldn't be used outside of this class until a matching `#end_group` is called.
|
||||||
def start_group(name, source = nil) : ExampleGroup
|
def start_group(name, source = nil) : ExampleGroup
|
||||||
Spectator.debug("Start group: #{name.inspect} @ #{source}")
|
Log.trace { "Start group: #{name.inspect} @ #{source}" }
|
||||||
ExampleGroup.new(name, source, current_group).tap do |group|
|
ExampleGroup.new(name, source, current_group).tap do |group|
|
||||||
@group_stack << group
|
@group_stack << group
|
||||||
end
|
end
|
||||||
|
@ -49,7 +51,7 @@ module Spectator
|
||||||
# At this point, it is safe to use the group.
|
# At this point, it is safe to use the group.
|
||||||
# All of its examples and sub-groups have been populated.
|
# All of its examples and sub-groups have been populated.
|
||||||
def end_group : ExampleGroup
|
def end_group : ExampleGroup
|
||||||
Spectator.debug("End group: #{current_group}")
|
Log.trace { "End group: #{current_group}" }
|
||||||
raise "Can't pop root group" if root?
|
raise "Can't pop root group" if root?
|
||||||
|
|
||||||
@group_stack.pop
|
@group_stack.pop
|
||||||
|
@ -74,7 +76,7 @@ module Spectator
|
||||||
#
|
#
|
||||||
# The newly created example is returned.
|
# The newly created example is returned.
|
||||||
def add_example(name, source, context, &block : Example, Context ->) : Example
|
def add_example(name, source, context, &block : Example, Context ->) : Example
|
||||||
Spectator.debug("Add example: #{name} @ #{source}")
|
Log.trace { "Add example: #{name} @ #{source}" }
|
||||||
delegate = ExampleContextDelegate.new(context, block)
|
delegate = ExampleContextDelegate.new(context, block)
|
||||||
Example.new(delegate, name, source, current_group)
|
Example.new(delegate, name, source, current_group)
|
||||||
# The example is added to the current group by `Example` initializer.
|
# The example is added to the current group by `Example` initializer.
|
||||||
|
|
Loading…
Reference in a new issue