From 3ae8e407dc79a9026f08ca4b3aa31666f61c042d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20M=C3=BCller?= Date: Sun, 10 Sep 2023 13:47:33 -0300 Subject: [PATCH] Add test for referencing filtered typespec case --- lib/ex_doc/language/elixir.ex | 2 +- test/ex_doc/formatter/html_test.exs | 10 ++++++++++ test/ex_doc/language/elixir_test.exs | 10 ---------- test/fixtures/references_typespec.ex | 10 ++++++++++ 4 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/references_typespec.ex diff --git a/lib/ex_doc/language/elixir.ex b/lib/ex_doc/language/elixir.ex index 67459a732..75847a872 100644 --- a/lib/ex_doc/language/elixir.ex +++ b/lib/ex_doc/language/elixir.ex @@ -790,7 +790,7 @@ defmodule ExDoc.Language.Elixir do original_text = call_string <> "()" if Enum.any?(config.filtered_modules, &(&1.id == module_string)) do - warn("Typespec references filtered module: #{all}", {config.file, config.line}, config.id) + warn("typespec references filtered module: #{all}", {config.file, config.line}, config.id) end url = diff --git a/test/ex_doc/formatter/html_test.exs b/test/ex_doc/formatter/html_test.exs index 03490d5f4..68eee7860 100644 --- a/test/ex_doc/formatter/html_test.exs +++ b/test/ex_doc/formatter/html_test.exs @@ -141,6 +141,15 @@ defmodule ExDoc.Formatter.HTMLTest do assert output =~ ~r"Warnings.bar/0.*\n test/fixtures/warnings.ex:8: t:Warnings.t/0" end + test "warns when referencing typespec on filtered module", context do + output = + capture_io(:stderr, fn -> + generate_docs(doc_config(context, filter_modules: ~r/ReferencesTypespec/)) + end) + + assert output =~ "typespec references filtered module: TypesAndSpecs.public(integer())" + end + test "generates headers for index.html and module pages", %{tmp_dir: tmp_dir} = context do generate_docs(doc_config(context, main: "RandomError")) content_index = File.read!(tmp_dir <> "/html/index.html") @@ -221,6 +230,7 @@ defmodule ExDoc.Formatter.HTMLTest do %{"id" => "CustomProtocol"}, %{"id" => "DuplicateHeadings"}, %{"id" => "OverlappingDefaults"}, + %{"id" => "ReferencesTypespec"}, %{"id" => "TypesAndSpecs"}, %{"id" => "TypesAndSpecs.Sub"}, %{"id" => "Warnings"}, diff --git a/test/ex_doc/language/elixir_test.exs b/test/ex_doc/language/elixir_test.exs index 01a635b64..91d3d9153 100644 --- a/test/ex_doc/language/elixir_test.exs +++ b/test/ex_doc/language/elixir_test.exs @@ -439,16 +439,6 @@ defmodule ExDoc.Language.ElixirTest do warn(~m"`c:InMemory.unknown/0`") end - test "warning if typespec references filtered module" do - ExDoc.Refs.insert([ - {{:module, AutolinkTest.Keep}, :public}, - {{:function, AutolinkTest.Filtered}, :public}, - {{:type, AutolinkTest.Filtered, :type, 0}, :public} - ]) - - # TODO: testing - end - test "warnings" do ExDoc.Refs.insert([ {{:module, AutolinkTest.Foo}, :public}, diff --git a/test/fixtures/references_typespec.ex b/test/fixtures/references_typespec.ex new file mode 100644 index 000000000..a52c728ee --- /dev/null +++ b/test/fixtures/references_typespec.ex @@ -0,0 +1,10 @@ +defmodule ReferencesTypespec do + @moduledoc """ + references public typespecs + """ + + @spec a() :: TypesAndSpecs.public(integer()) + def a do + 10 + end +end