Packages
espec
0.2.0
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.ex
defmodule ESpec do
@spec_agent_name :espec_specs_agent
defmacro __using__(_arg) do
quote do
unquote(__MODULE__).add_spec(__MODULE__)
import unquote(__MODULE__)
Module.register_attribute __MODULE__, :examples, accumulate: true
@context []
@before_compile unquote(__MODULE__)
import ESpec.Context
import ESpec.Example
import ESpec.Expect
use ESpec.Expect
import ESpec.Allow
import ESpec.Before
import ESpec.Finally
import ESpec.Let
end
end
defmacro __before_compile__(_env) do
quote do
def examples, do: Enum.reverse(@examples)
def run, do: ESpec.Runner.run_examples(@examples, __MODULE__)
end
end
def run(opts) do
ESpec.Runner.run(opts)
|> ESpec.Formatter.print_result
end
def start do
{:ok, _} = Application.ensure_all_started(:espec)
start_specs_agent
ESpec.Let.start_agent
ESpec.Mock.start_agent
end
def start_specs_agent do
Agent.start_link(fn -> [] end, name: @spec_agent_name)
end
def specs do
Agent.get(@spec_agent_name, &(&1))
end
def add_spec(module) do
Agent.update(@spec_agent_name, &[module | &1])
end
end