markdown_test v0.1.2 MarkdownTest

MarkdownTest

Build Status Coverage Status Hex Version

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

Link to this macro

test_markdown(path)

(macro)
test_markdown(path :: Path.t()) :: Macro.t()

This macro will test the assertions defined in the markdown file located at the given path.