mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Move top-level DSL to its own module
This commit is contained in:
parent
87c8914187
commit
c36e006c85
3 changed files with 31 additions and 27 deletions
|
@ -7,6 +7,7 @@ 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
|
||||||
|
include DSL::Top
|
||||||
|
|
||||||
# Current version of the Spectator library.
|
# Current version of the Spectator library.
|
||||||
VERSION = {{ `shards version #{__DIR__}`.stringify.chomp }}
|
VERSION = {{ `shards version #{__DIR__}`.stringify.chomp }}
|
||||||
|
@ -14,33 +15,6 @@ module Spectator
|
||||||
# Logger for Spectator internals.
|
# Logger for Spectator internals.
|
||||||
Log = ::Log.for(self)
|
Log = ::Log.for(self)
|
||||||
|
|
||||||
# Top-level describe method.
|
|
||||||
# All specs in a file must be wrapped in this call.
|
|
||||||
# This takes an argument and a block.
|
|
||||||
# The argument is what your spec is describing.
|
|
||||||
# It can be any Crystal expression,
|
|
||||||
# but is typically a class name or feature string.
|
|
||||||
# The block should contain all of the specs for what is being described.
|
|
||||||
# Example:
|
|
||||||
# ```
|
|
||||||
# Spectator.describe Foo do
|
|
||||||
# # Your specs for `Foo` go here.
|
|
||||||
# end
|
|
||||||
# ```
|
|
||||||
# NOTE: Inside the block, the `Spectator` prefix is no longer needed.
|
|
||||||
# Actually, prefixing methods and macros with `Spectator`
|
|
||||||
# most likely won't work and can cause compiler errors.
|
|
||||||
macro describe(description, &block)
|
|
||||||
class ::SpectatorTestContext
|
|
||||||
example_group({{description}}) {{block}}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# :ditto:
|
|
||||||
macro context(description, &block)
|
|
||||||
describe({{description}}) {{block}}
|
|
||||||
end
|
|
||||||
|
|
||||||
# Flag indicating whether Spectator should automatically run tests.
|
# Flag indicating whether Spectator should automatically run tests.
|
||||||
# This should be left alone (set to true) in typical usage.
|
# This should be left alone (set to true) in typical usage.
|
||||||
# There are times when Spectator shouldn't run tests.
|
# There are times when Spectator shouldn't run tests.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
require "./dsl/builder"
|
require "./dsl/builder"
|
||||||
require "./dsl/examples"
|
require "./dsl/examples"
|
||||||
require "./dsl/groups"
|
require "./dsl/groups"
|
||||||
|
require "./dsl/top"
|
||||||
|
|
||||||
module Spectator
|
module Spectator
|
||||||
# Namespace containing methods representing the spec domain specific language.
|
# Namespace containing methods representing the spec domain specific language.
|
||||||
|
|
29
src/spectator/dsl/top.cr
Normal file
29
src/spectator/dsl/top.cr
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
require "./groups"
|
||||||
|
|
||||||
|
module Spectator::DSL
|
||||||
|
module Top
|
||||||
|
{% for method in %i[example_group describe context] %}
|
||||||
|
# Top-level describe method.
|
||||||
|
# All specs in a file must be wrapped in this call.
|
||||||
|
# This takes an argument and a block.
|
||||||
|
# The argument is what your spec is describing.
|
||||||
|
# It can be any Crystal expression,
|
||||||
|
# but is typically a class name or feature string.
|
||||||
|
# The block should contain all of the examples for what is being described.
|
||||||
|
# Example:
|
||||||
|
# ```
|
||||||
|
# Spectator.describe Foo do
|
||||||
|
# # Your examples for `Foo` go here.
|
||||||
|
# end
|
||||||
|
# ```
|
||||||
|
# NOTE: Inside the block, the `Spectator` prefix is no longer needed.
|
||||||
|
# Actually, prefixing methods and macros with `Spectator`
|
||||||
|
# most likely won't work and can cause compiler errors.
|
||||||
|
macro {{method.id}}(description, &block)
|
||||||
|
class ::SpectatorTestContext
|
||||||
|
{{method.id}}(\{{description}}) \{{block}}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
{% end %}
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue