markdown_test v0.1.2 MarkdownTest
MarkdownTest
Test the Elixir code in your markdown!
Usage
Add :markdown_test
as a dependency in your mix.exs
file:
# mix.exs
defp deps do
[
{:markdown_test, "0.1.2", only: :test}
]
end
In any test module, use MarkdownTest
to pull in the test_markdown/1
macro and call it for your markdown file:
defmodule MyLibraryTest do
use MarkdownTest
test_markdown("README.md")
end
Then add some Elixir code to test in your markdown file.
The format roughly resembles that of a doctest
.
In order to be picked up, a code block must be between the following markdown comment tags:
<!--- MARKDOWN_TEST_START -->
...code
<!--- MARKDOWN_TEST_END -->
.
Examples
iex> 1 + 2
3
The expression and expected values can span multiple lines:
iex> a = %{cool: :beans}
...> b = %{beans: :cool}
...> Map.merge(a, b)
%{
cool: :beans,
beans: :cool
}
You can also include any setup code that needs to be run prior to testing the code:
defmodule MyModule do
def add(x, y), do: x + y
end
iex> MyModule.add(1, 2)
3
markdown_test
will assert that the expression and the expected value match according to Elixir's pattern matching.
Therefore, you can write a test like this:
defmodule MyModule do
def big_result do
{:ok, List.duplicate("hey", 1000)}
end
end
iex> MyModule.big_result()
{:ok, ["hey" | _]}
If you don't add any assertion code, markdown_test
will just verify that the code snippet compiles, like:
%{
this: %{
"should" => :compile
}
}
Link to this section Summary
Functions
This macro will test the assertions defined in the markdown file located at the given path.
Link to this section Functions
This macro will test the assertions defined in the markdown file located at the given path.