mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Support example as block argument to let and subject
Surprisingly, RSpec supports this. https://relishapp.com/rspec/rspec-core/v/3-10/docs/metadata/current-example
This commit is contained in:
parent
76378c9dae
commit
5cccf5b4cb
1 changed files with 8 additions and 1 deletions
|
@ -10,11 +10,15 @@ module Spectator::DSL
|
|||
macro let(name, &block)
|
||||
{% raise "Block required for 'let'" unless block %}
|
||||
{% raise "Cannot use 'let' inside of a test block" if @def %}
|
||||
{% raise "Block argument count for 'let' must be 0..1" if block.args.size > 1 %}
|
||||
|
||||
@%value = ::Spectator::LazyWrapper.new
|
||||
|
||||
def {{name.id}}
|
||||
@%value.get {{block}}
|
||||
{% if block.args.size > 0 %}{{block.args.first}} = ::Spectator::Example.current{% end %}
|
||||
@%value.get do
|
||||
{{block.body}}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -25,6 +29,7 @@ module Spectator::DSL
|
|||
macro let!(name, &block)
|
||||
{% raise "Block required for 'let!'" unless block %}
|
||||
{% raise "Cannot use 'let!' inside of a test block" if @def %}
|
||||
{% raise "Block argument count for 'let!' must be 0..1" if block.args.size > 1 %}
|
||||
|
||||
let({{name}}) {{block}}
|
||||
before_each { {{name.id}} }
|
||||
|
@ -37,6 +42,7 @@ module Spectator::DSL
|
|||
macro subject(&block)
|
||||
{% raise "Block required for 'subject'" unless block %}
|
||||
{% raise "Cannot use 'subject' inside of a test block" if @def %}
|
||||
{% raise "Block argument count for 'subject' must be 0..1" if block.args.size > 1 %}
|
||||
|
||||
let(subject) {{block}}
|
||||
end
|
||||
|
@ -63,6 +69,7 @@ module Spectator::DSL
|
|||
macro subject!(&block)
|
||||
{% raise "Block required for 'subject!'" unless block %}
|
||||
{% raise "Cannot use 'subject!' inside of a test block" if @def %}
|
||||
{% raise "Block argument count for 'subject!' must be 0..1" if block.args.size > 1 %}
|
||||
|
||||
let!(subject) {{block}}
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue