mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Mark example pending if block is omitted
This commit is contained in:
parent
117ed90185
commit
6f4cc12dfd
1 changed files with 29 additions and 24 deletions
|
@ -18,8 +18,6 @@ module Spectator::DSL
|
||||||
# Default tags can be provided with *tags* and *metadata*.
|
# Default tags can be provided with *tags* and *metadata*.
|
||||||
# The tags are merged with parent groups.
|
# The tags are merged with parent groups.
|
||||||
# Any items with falsey values from *metadata* remove the corresponding tag.
|
# Any items with falsey values from *metadata* remove the corresponding tag.
|
||||||
#
|
|
||||||
# TODO: Mark example as pending if block is omitted.
|
|
||||||
macro define_example(name, *tags, **metadata)
|
macro define_example(name, *tags, **metadata)
|
||||||
# Defines an example.
|
# Defines an example.
|
||||||
#
|
#
|
||||||
|
@ -40,29 +38,39 @@ module Spectator::DSL
|
||||||
macro {{name.id}}(what = nil, *tags, **metadata, &block)
|
macro {{name.id}}(what = nil, *tags, **metadata, &block)
|
||||||
\{% raise "Cannot use '{{name.id}}' inside of a test block" if @def %}
|
\{% raise "Cannot use '{{name.id}}' inside of a test block" if @def %}
|
||||||
\{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %}
|
\{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %}
|
||||||
\{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %}
|
|
||||||
|
|
||||||
_spectator_tags(%tags, :tags, {{tags.splat(",")}} {{metadata.double_splat}})
|
_spectator_tags(%tags, :tags, {{tags.splat(",")}} {{metadata.double_splat}})
|
||||||
_spectator_tags(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}})
|
_spectator_tags(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}})
|
||||||
|
|
||||||
private def \%test(\{{block.args.splat}}) : Nil
|
\{% if block %}
|
||||||
\{{block.body}}
|
\{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %}
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::DSL::Builder.add_example(
|
private def \%test(\{{block.args.splat}}) : Nil
|
||||||
_spectator_example_name(\{{what}}),
|
\{{block.body}}
|
||||||
::Spectator::Location.new(\{{block.filename}}, \{{block.line_number}}, \{{block.end_line_number}}),
|
|
||||||
new.as(::Spectator::Context),
|
|
||||||
\%tags
|
|
||||||
) do |example|
|
|
||||||
example.with_context(\{{@type.name}}) do
|
|
||||||
\{% if block.args.empty? %}
|
|
||||||
\%test
|
|
||||||
\{% else %}
|
|
||||||
\%test(example)
|
|
||||||
\{% end %}
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
::Spectator::DSL::Builder.add_example(
|
||||||
|
_spectator_example_name(\{{what}}),
|
||||||
|
::Spectator::Location.new(\{{block.filename}}, \{{block.line_number}}, \{{block.end_line_number}}),
|
||||||
|
new.as(::Spectator::Context),
|
||||||
|
\%tags
|
||||||
|
) do |example|
|
||||||
|
example.with_context(\{{@type.name}}) do
|
||||||
|
\{% if block.args.empty? %}
|
||||||
|
\%test
|
||||||
|
\{% else %}
|
||||||
|
\%test(example)
|
||||||
|
\{% end %}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
\{% else %}
|
||||||
|
::Spectator::DSL::Builder.add_pending_example(
|
||||||
|
_spectator_example_name(\{{what}}),
|
||||||
|
::Spectator::Location.new(\{{what.filename}}, \{{what.line_number}}),
|
||||||
|
\%tags
|
||||||
|
)
|
||||||
|
\{% end %}
|
||||||
end
|
end
|
||||||
|
|
||||||
define_pending_example :x{{name.id}}, pending: "Temporarily skipped with x{{name.id}}"
|
define_pending_example :x{{name.id}}, pending: "Temporarily skipped with x{{name.id}}"
|
||||||
|
@ -88,23 +96,20 @@ module Spectator::DSL
|
||||||
# It has no effect on the test and is purely used for output.
|
# It has no effect on the test and is purely used for output.
|
||||||
# If omitted, a name is generated from the first assertion in the test.
|
# If omitted, a name is generated from the first assertion in the test.
|
||||||
#
|
#
|
||||||
# The example will be marked as pending if the block is omitted.
|
|
||||||
# A block or name must be provided.
|
|
||||||
#
|
|
||||||
# Tags can be specified by adding symbols (keywords) after the first argument.
|
# Tags can be specified by adding symbols (keywords) after the first argument.
|
||||||
# Key-value pairs can also be specified.
|
# Key-value pairs can also be specified.
|
||||||
# Any falsey items will remove a previously defined tag.
|
# Any falsey items will remove a previously defined tag.
|
||||||
macro {{name.id}}(what = nil, *tags, **metadata, &block)
|
macro {{name.id}}(what = nil, *tags, **metadata, &block)
|
||||||
\{% raise "Cannot use '{{name.id}}' inside of a test block" if @def %}
|
\{% raise "Cannot use '{{name.id}}' inside of a test block" if @def %}
|
||||||
\{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %}
|
\{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %}
|
||||||
\{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %}
|
\{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block && block.args.size > 1 %}
|
||||||
|
|
||||||
_spectator_tags(%tags, :tags, {{tags.splat(",")}} {{metadata.double_splat}})
|
_spectator_tags(%tags, :tags, {{tags.splat(",")}} {{metadata.double_splat}})
|
||||||
_spectator_tags(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}})
|
_spectator_tags(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}})
|
||||||
|
|
||||||
::Spectator::DSL::Builder.add_pending_example(
|
::Spectator::DSL::Builder.add_pending_example(
|
||||||
_spectator_example_name(\{{what}}),
|
_spectator_example_name(\{{what}}),
|
||||||
::Spectator::Location.new(\{{block.filename}}, \{{block.line_number}}, \{{block.end_line_number}}),
|
::Spectator::Location.new(\{{(what || block).filename}}, \{{(what || block).line_number}}, \{{(what || block).end_line_number}}),
|
||||||
\%tags
|
\%tags
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue