Packages
croma
0.6.4
0.13.0
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Elixir macro utilities to make type-based programming easier
Current section
Files
Jump to
Current section
Files
lib/croma/test_case.ex
defmodule Croma.TestCase do
@moduledoc """
Module to be `use`d by test modules to make tests a bit shorter.
`use Croma.TestCase` is almost the same as `use ExUnit.Case`.
Options passed to `use Croma.TestCase` will also be passed to `use ExUnit.Case`.
The only difference is that it automatically adds an alias to the test target module,
which is inferred from the name of the test module.
## Example
defmodule MyProject.SomeModuleTest do
use Croma.TestCase
...
end
is equivalent to
defmodule MyProject.SomeModuleTest do
use ExUnit.Case
alias MyProject.SomeModule
...
end
If you want to pass `as` option to `alias`, use `alias_as`:
defmodule MyProject.SomeModuleTest do
use Croma.TestCase, alias_as: M
...
end
is converted to
defmodule MyProject.SomeModuleTest do
use ExUnit.Case
alias MyProject.SomeModule, as: M
...
end
"""
defmacro __using__(opts) do
%Macro.Env{module: current_module} = __CALLER__
target_module = Atom.to_string(current_module) |> String.replace(~r/Test$/, "") |> List.wrap |> Module.safe_concat
alias_opts =
case opts[:alias_as] do
nil -> []
name -> [as: name]
end
quote do
use ExUnit.Case, unquote(opts)
alias unquote(target_module), unquote(alias_opts)
end
end
end