mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-02-20 21:04:17 +08:00
Use shorter name for doctests module (#1874)
Co-authored-by: José Valim <jose.valim@dashbit.co>
This commit is contained in:
parent
30df25a709
commit
a6a56ff30c
5 changed files with 65 additions and 2 deletions
|
@ -143,4 +143,21 @@ defmodule Livebook.Intellisense.Docs do
|
|||
# loads elixir.beam, so we explicitly list it.
|
||||
defp ensure_loaded?(Elixir), do: false
|
||||
defp ensure_loaded?(module), do: Code.ensure_loaded?(module)
|
||||
|
||||
@doc """
|
||||
Checks if the module has any documentation.
|
||||
"""
|
||||
@spec any_docs?(module()) :: boolean()
|
||||
def any_docs?(module) do
|
||||
case Code.fetch_docs(module) do
|
||||
{:docs_v1, _, _, _, %{}, _, _} ->
|
||||
true
|
||||
|
||||
{:docs_v1, _, _, _, _, _, docs} ->
|
||||
Enum.any?(docs, &match?({_, _, _, %{}, _}, &1))
|
||||
|
||||
_ ->
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -456,7 +456,9 @@ defmodule Livebook.Runtime.Evaluator do
|
|||
end
|
||||
|
||||
if ebin_path() do
|
||||
Livebook.Runtime.Evaluator.Doctests.run(new_context.env.context_modules)
|
||||
new_context.env.context_modules
|
||||
|> Enum.filter(&Livebook.Intellisense.Docs.any_docs?/1)
|
||||
|> Livebook.Runtime.Evaluator.Doctests.run()
|
||||
end
|
||||
|
||||
state = put_context(state, ref, new_context)
|
||||
|
|
|
@ -36,7 +36,18 @@ defmodule Livebook.Runtime.Evaluator.Doctests do
|
|||
end
|
||||
|
||||
defp define_test_module(modules) do
|
||||
name = Module.concat([LivebookDoctest | modules])
|
||||
id =
|
||||
modules
|
||||
|> Enum.sort()
|
||||
|> Enum.map_join("-", fn module ->
|
||||
module
|
||||
|> Atom.to_string()
|
||||
|> String.replace_prefix("Elixir.", "")
|
||||
end)
|
||||
|> :erlang.md5()
|
||||
|> Base.encode32(padding: false)
|
||||
|
||||
name = Module.concat([LivebookDoctest, "TestModule#{id}"])
|
||||
|
||||
try do
|
||||
defmodule name do
|
||||
|
|
13
test/livebook/hubs/docs_test.exs
Normal file
13
test/livebook/hubs/docs_test.exs
Normal file
|
@ -0,0 +1,13 @@
|
|||
defmodule Livebook.Intellisense.DocsTest do
|
||||
use ExUnit.Case, async: true
|
||||
|
||||
alias Livebook.Intellisense.Docs
|
||||
|
||||
test "any_docs?/1" do
|
||||
refute Docs.any_docs?(Livebook.TestModules.Docs.Without)
|
||||
refute Docs.any_docs?(Livebook.TestModules.Docs.ModuleHidden)
|
||||
refute Docs.any_docs?(Livebook.TestModules.Docs.FunctionHidden)
|
||||
assert Docs.any_docs?(Livebook.TestModules.Docs.Module)
|
||||
assert Docs.any_docs?(Livebook.TestModules.Docs.Function)
|
||||
end
|
||||
end
|
20
test/support/test_modules/docs.ex
Normal file
20
test/support/test_modules/docs.ex
Normal file
|
@ -0,0 +1,20 @@
|
|||
defmodule Livebook.TestModules.Docs.Without do
|
||||
end
|
||||
|
||||
defmodule Livebook.TestModules.Docs.ModuleHidden do
|
||||
@moduledoc false
|
||||
end
|
||||
|
||||
defmodule Livebook.TestModules.Docs.Module do
|
||||
@moduledoc "Hello."
|
||||
end
|
||||
|
||||
defmodule Livebook.TestModules.Docs.FunctionHidden do
|
||||
@doc false
|
||||
def hello(), do: "hello"
|
||||
end
|
||||
|
||||
defmodule Livebook.TestModules.Docs.Function do
|
||||
@doc "Hello."
|
||||
def hello(), do: "hello"
|
||||
end
|
Loading…
Reference in a new issue