From feea74bca34da98e77e9a18a1a97528579a66f21 Mon Sep 17 00:00:00 2001 From: Wojtek Mach Date: Tue, 15 Feb 2022 09:37:35 +0100 Subject: [PATCH 1/3] Add `:otp_eep48` and `:otp_has_docs` tags --- test/ex_doc/formatter/html/erlang_test.exs | 2 +- test/ex_doc/language/elixir_test.exs | 1 - test/ex_doc/language/erlang_test.exs | 2 +- test/ex_doc/retriever/erlang_test.exs | 2 +- test/test_helper.exs | 7 +++++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/test/ex_doc/formatter/html/erlang_test.exs b/test/ex_doc/formatter/html/erlang_test.exs index 65ce16180..79818c8cc 100644 --- a/test/ex_doc/formatter/html/erlang_test.exs +++ b/test/ex_doc/formatter/html/erlang_test.exs @@ -2,7 +2,7 @@ defmodule ExDoc.Formatter.HTML.ErlangTest do use ExUnit.Case import TestHelper - @moduletag :otp24 + @moduletag :otp_eep48 @moduletag :tmp_dir test "it works", c do diff --git a/test/ex_doc/language/elixir_test.exs b/test/ex_doc/language/elixir_test.exs index f06b096a0..5ef4dfd44 100644 --- a/test/ex_doc/language/elixir_test.exs +++ b/test/ex_doc/language/elixir_test.exs @@ -97,7 +97,6 @@ defmodule ExDoc.Language.ElixirTest do assert_unchanged("bar/1", current_module: AutolinkTest.Foo) end - @tag :otp24 test "auto-imported function" do assert autolink_doc("+/2") == ~m"[`+/2`](https://hexdocs.pm/elixir/Kernel.html#+/2)" diff --git a/test/ex_doc/language/erlang_test.exs b/test/ex_doc/language/erlang_test.exs index fef344ae4..82e8d1aa6 100644 --- a/test/ex_doc/language/erlang_test.exs +++ b/test/ex_doc/language/erlang_test.exs @@ -2,7 +2,7 @@ defmodule ExDoc.Language.ErlangTest do use ExUnit.Case import TestHelper - @moduletag :otp24 + @moduletag :otp_has_docs @moduletag :tmp_dir describe "autolink_doc/2" do diff --git a/test/ex_doc/retriever/erlang_test.exs b/test/ex_doc/retriever/erlang_test.exs index 00224d30d..db29a0f68 100644 --- a/test/ex_doc/retriever/erlang_test.exs +++ b/test/ex_doc/retriever/erlang_test.exs @@ -3,7 +3,7 @@ defmodule ExDoc.Retriever.ErlangTest do alias ExDoc.{Retriever, DocAST, Language.Erlang} import TestHelper - @moduletag :otp24 + @moduletag :otp_eep48 @moduletag :tmp_dir describe "docs_from_modules/2" do diff --git a/test/test_helper.exs b/test/test_helper.exs index bc25221fa..30d955a87 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,6 +1,9 @@ +otp_eep48? = Code.ensure_loaded?(:edoc_doclet_chunks) + exclude = [ earmark: not ExDoc.Markdown.Earmark.available?(), - otp24: System.otp_release() < "24" + otp_eep48: not otp_eep48?, + otp_has_docs: not match?({:docs_v1, _, _, _, _, _, _}, Code.fetch_docs(:array)) ] ExUnit.start(exclude: Enum.filter(exclude, &elem(&1, 1))) @@ -71,7 +74,7 @@ defmodule TestHelper do :ok end - if Code.ensure_loaded?(:edoc_doclet_chunks) do + if otp_eep48? do def edoc_to_chunk(module) do source_path = module.module_info(:compile)[:source] dir = :filename.dirname(source_path) From db31195e7d62d93c6abe126f380dfb0422af7044 Mon Sep 17 00:00:00 2001 From: Wojtek Mach Date: Tue, 15 Feb 2022 10:08:38 +0100 Subject: [PATCH 2/3] Fix compatibility on Elixir 1.11 --- lib/ex_doc/language/elixir.ex | 9 ++++++--- test/ex_doc/language/elixir_test.exs | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/ex_doc/language/elixir.ex b/lib/ex_doc/language/elixir.ex index f34487e92..c50f39343 100644 --- a/lib/ex_doc/language/elixir.ex +++ b/lib/ex_doc/language/elixir.ex @@ -627,9 +627,12 @@ defmodule ExDoc.Language.Elixir do defp parse_function("__block__"), do: {:function, :__block__} defp parse_function(string) do - case Code.string_to_quoted(string <> "/0") do - {:ok, {:/, _, [{function, _, _}, 0]}} when is_atom(function) -> {:function, function} - _ -> :error + case Code.string_to_quoted("& #{string}/0") do + {:ok, {:&, _, [{:/, _, [{function, _, _}, 0]}]}} when is_atom(function) -> + {:function, function} + + _ -> + :error end end diff --git a/test/ex_doc/language/elixir_test.exs b/test/ex_doc/language/elixir_test.exs index 5ef4dfd44..a3f3fb4f8 100644 --- a/test/ex_doc/language/elixir_test.exs +++ b/test/ex_doc/language/elixir_test.exs @@ -101,6 +101,9 @@ defmodule ExDoc.Language.ElixirTest do assert autolink_doc("+/2") == ~m"[`+/2`](https://hexdocs.pm/elixir/Kernel.html#+/2)" + assert autolink_doc("&/1") == + ~m"[`&/1`](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#&/1)" + assert autolink_doc("for/1") == ~m"[`for/1`](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#for/1)" From a33f74bedfa830b1eae45675aa6e47f6cfe764ca Mon Sep 17 00:00:00 2001 From: Wojtek Mach Date: Tue, 15 Feb 2022 10:15:25 +0100 Subject: [PATCH 3/3] More compatibility fixes --- test/ex_doc/language/elixir_test.exs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/ex_doc/language/elixir_test.exs b/test/ex_doc/language/elixir_test.exs index a3f3fb4f8..cc44c3484 100644 --- a/test/ex_doc/language/elixir_test.exs +++ b/test/ex_doc/language/elixir_test.exs @@ -109,7 +109,10 @@ defmodule ExDoc.Language.ElixirTest do assert autolink_doc("for/1", apps: [:elixir]) == ~m"[`for/1`](Kernel.SpecialForms.html#for/1)" + end + @tag skip: not Version.match?(System.version(), "~> 1.13") + test "stepped range" do assert autolink_doc("..///3") == ~m"[`..///3`](https://hexdocs.pm/elixir/Kernel.html#..///3)" end