Packages
espec
0.7.2
1.10.0
1.9.2
1.9.1
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.7
0.3.5
0.3.0
0.2.0
0.1.0
BDD testing framework for Elixir inspired by RSpec.
Current section
Files
Jump to
Current section
Files
lib/espec/finally.ex
defmodule ESpec.Finally do
@moduledoc """
Defines `finally` macro.
The block is evaluated after the example.
`__` is available.
Define the `finally` before example!.
"""
@doc "Struct has random fuction name."
defstruct function: ""
@doc """
Adds %ESpec.Finally sutructs to the context and
defines random function with random name which will be called when example is run.
"""
defmacro finally(do: block) do
function = random_finally_name
quote do
tail = @context
head = %ESpec.Finally{function: unquote(function)}
def unquote(function)(var!(__)), do: unquote(block)
@context [head | tail]
end
end
defp random_finally_name, do: String.to_atom("finally_#{ESpec.Support.random_string}")
end