Эликсир: проверка сигилы

Я написал удивительный сигил:

defmodule Sigiltest do

  @doc """
  An awesome sigil!

  ### Usage

      iex> ~a{I love elixir}
      "I love elixir, awesome!"
  """
  def sigil_a(content, _flags) do
    "#{content}, awesome!"
  end
end

Вот тестовый модуль:

defmodule SigiltestTest do
  use ExUnit.Case
  doctest Sigiltest
end

Когда я запускаю mix test, я получаю следующий вывод:

Compiled lib/sigiltest.ex
** (CompileError) (for doctest at) lib/sigiltest.ex:7: undefined function sigil_a/2
    (stdlib) lists.erl:1337: :lists.foreach/2
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6

Есть ли способ запустить doctests на сигиле? Если да, то как?


person Nagasaki45    schedule 12.06.2016    source источник


Ответы (1)


Это потому, что sigil_a отсутствует в контексте, в котором выполняются doctests. Вы можете импортировать Sigiltest явно:

@doc """
An awesome sigil!

### Usage

    iex> import Sigiltest
    iex> ~a{I love elixir}
    "I love elixir, awesome!"
"""

или добавьте import: true к вызову doctest:

doctest Sigiltest, import: true
person Dogbert    schedule 12.06.2016