RandomError
}
@@ -153,14 +142,14 @@ defmodule ExDoc.Formatter.EPUBTest do
assert content =~
~r{TypesAndSpecs.Sub
}
- content = File.read!("#{output_dir()}/OEBPS/nav.xhtml")
+ content = File.read!(tmp_dir <> "/epub/OEBPS/nav.xhtml")
assert content =~ ~r{moduledoc
} @@ -213,12 +204,12 @@ defmodule ExDoc.Formatter.HTMLTest do ~r{mix task_with_docs} end - test "groups modules by nesting" do - doc_config() + test "groups modules by nesting", %{tmp_dir: tmp_dir} = context do + doc_config(context) |> Keyword.put(:nest_modules_by_prefix, [Common.Nesting.Prefix.B, Common.Nesting.Prefix.B.B]) |> generate_docs() - "sidebarNodes=" <> content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + "sidebarNodes=" <> content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert {:ok, %{"modules" => modules}} = Jason.decode(content) assert %{"nested_context" => "Common.Nesting.Prefix.B"} = @@ -228,7 +219,7 @@ defmodule ExDoc.Formatter.HTMLTest do Enum.find(modules, fn %{"id" => id} -> id == "Common.Nesting.Prefix.B.B.A" end) end - test "groups modules by nesting respecting groups" do + test "groups modules by nesting respecting groups", %{tmp_dir: tmp_dir} = context do groups = [ Group1: [ Common.Nesting.Prefix.B.A, @@ -240,12 +231,12 @@ defmodule ExDoc.Formatter.HTMLTest do ] ] - doc_config() + doc_config(context) |> Keyword.put(:nest_modules_by_prefix, [Common.Nesting.Prefix.B, Common.Nesting.Prefix.B.B]) |> Keyword.put(:groups_for_modules, groups) |> generate_docs() - "sidebarNodes=" <> content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + "sidebarNodes=" <> content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert {:ok, %{"modules" => modules}} = Jason.decode(content) assert %{"Group1" => [_, _], "Group2" => [_, _]} = @@ -253,15 +244,15 @@ defmodule ExDoc.Formatter.HTMLTest do end describe "generates logo" do - test "overriding previous entries" do - File.mkdir_p!("#{output_dir()}/assets") - File.touch!("#{output_dir()}/assets/logo.png") - generate_docs(doc_config(logo: "test/fixtures/elixir.png")) - assert File.read!("#{output_dir()}/assets/logo.png") != "" + test "overriding previous entries", %{tmp_dir: tmp_dir} = context do + File.mkdir_p!(tmp_dir <> "/html/assets") + File.touch!(tmp_dir <> "/html/assets/logo.png") + generate_docs(doc_config(context, logo: "test/fixtures/elixir.png")) + assert File.read!(tmp_dir <> "/html/assets/logo.png") != "" end - test "fails when logo is not an allowed format" do - config = doc_config(logo: "README.md") + test "fails when logo is not an allowed format", context do + config = doc_config(context, logo: "README.md") assert_raise ArgumentError, "image format not recognized, allowed formats are: .jpg, .png", @@ -270,22 +261,25 @@ defmodule ExDoc.Formatter.HTMLTest do end describe "canonical URL" do - test "is included when canonical options is specified" do + test "is included when canonical options is specified", %{tmp_dir: tmp_dir} = context do config = - doc_config(extras: ["test/fixtures/README.md"], canonical: "https://hexdocs.pm/elixir/") + doc_config(context, + extras: ["test/fixtures/README.md"], + canonical: "https://hexdocs.pm/elixir/" + ) generate_docs(config) - content = File.read!("#{output_dir()}/api-reference.html") + content = File.read!(tmp_dir <> "/html/api-reference.html") assert content =~ ~r{ "/html/readme.html") assert content =~ ~r{ "/html/api-reference.html") refute content =~ ~r{ "/html/LICENSE") + refute File.exists?(tmp_dir <> "/html/license") + refute File.exists?(tmp_dir <> "/html/PlainText.txt") + refute File.exists?(tmp_dir <> "/html/plaintext.txt") + refute File.exists?(tmp_dir <> "/html/PlainTextFiles.md") + refute File.exists?(tmp_dir <> "/html/plaintextfiles.md") + refute File.exists?(tmp_dir <> "/html/README.md") + refute File.exists?(tmp_dir <> "/html/readme.md") assert File.read!("test/fixtures/LivebookFile.livemd") == - File.read!("#{output_dir()}/livebookfile.livemd") + File.read!(tmp_dir <> "/html/livebookfile.livemd") end - test "alongside other content" do - config = doc_config(main: "readme", extras: @extras) + test "alongside other content", %{tmp_dir: tmp_dir} = context do + config = doc_config(context, main: "readme", extras: @extras) generate_docs(config) - content = File.read!("#{output_dir()}/index.html") + content = File.read!(tmp_dir <> "/html/index.html") assert content =~ ~r{} - content = File.read!("#{output_dir()}/readme.html") + content = File.read!(tmp_dir <> "/html/readme.html") assert content =~ ~r{Read the license and the plain-text file.} - plain_text_file = File.read!("#{output_dir()}/plaintext.html") + plain_text_file = File.read!(tmp_dir <> "/html/plaintext.html") assert plain_text_file =~ ~r{PlainText.*}s @@ -373,14 +367,14 @@ defmodule ExDoc.Formatter.HTMLTest do assert plain_text_file =~ ~s{\n## Neither formatted\n} assert plain_text_file =~ ~s{\n `t:term/0`\n} - license = File.read!("#{output_dir()}/license.html") + license = File.read!(tmp_dir <> "/html/license.html") assert license =~ ~r{LICENSE.*}s assert license =~ ~s{
\nLicensed under the Apache License, Version 2.0 (the "License")} - content = File.read!("#{output_dir()}/livebookfile.html") + content = File.read!(tmp_dir <> "/html/livebookfile.html") assert content =~ ~s{} end - test "with absolute and dot-relative paths for extra" do + test "with absolute and dot-relative paths for extra", %{tmp_dir: tmp_dir} = context do config = - doc_config( + doc_config(context, extras: ["./test/fixtures/README.md", Path.expand("test/fixtures/LivebookFile.livemd")] ) generate_docs(config) - content = File.read!("#{output_dir()}/readme.html") + content = File.read!(tmp_dir <> "/html/readme.html") assert content =~ ~s{ "/html/livebookfile.html") assert content =~ ~s{ "/html/dist/sidebar_items-*.js") assert content =~ ~s("modules":[]) assert content =~ @@ -424,15 +418,16 @@ defmodule ExDoc.Formatter.HTMLTest do ~s({"group":"","headers":[{"anchor":"heading-without-content","id":"Heading without content"},{"anchor":"header-sample","id":"Header sample"},{"anchor":"more-than","id":"more > than"}],"id":"readme","title":"README"}) end - test "containing settext headers while discarding links on header" do + test "containing settext headers while discarding links on header", + %{tmp_dir: tmp_dir} = context do generate_docs( - doc_config( + doc_config(context, source_beam: "unknown", extras: ["test/fixtures/ExtraPageWithSettextHeader.md"] ) ) - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert content =~ ~s("extras":[{"group":"","headers":[],"id":"api-reference","title":"API Reference"},) @@ -442,9 +437,9 @@ defmodule ExDoc.Formatter.HTMLTest do ~s(id":"extrapagewithsettextheader","title":"Extra Page Title"}]) end - test "with custom names" do + test "with custom names", %{tmp_dir: tmp_dir} = context do generate_docs( - doc_config( + doc_config(context, extras: [ "test/fixtures/PlainTextFiles.md", "test/fixtures/LICENSE": [filename: "linked-license"], @@ -453,65 +448,73 @@ defmodule ExDoc.Formatter.HTMLTest do ) ) - refute File.regular?("#{output_dir()}/license.html") - assert File.regular?("#{output_dir()}/linked-license.html") + refute File.regular?(tmp_dir <> "/html/license.html") + assert File.regular?(tmp_dir <> "/html/linked-license.html") - refute File.regular?("#{output_dir()}/plaintext.html") - assert File.regular?("#{output_dir()}/plain_text.html") + refute File.regular?(tmp_dir <> "/html/plaintext.html") + assert File.regular?(tmp_dir <> "/html/plain_text.html") - content = File.read!("#{output_dir()}/plaintextfiles.html") + content = File.read!(tmp_dir <> "/html/plaintextfiles.html") assert content =~ ~r{Plain Text Files.*}s assert content =~ ~R{Read the license and the plain-text file.} - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert content =~ ~r{"id":"linked-license","title":"LICENSE"} end - test "with custom title" do - generate_docs(doc_config(extras: ["test/fixtures/README.md": [title: "Getting Started"]])) - content = File.read!("#{output_dir()}/readme.html") + test "with custom title", %{tmp_dir: tmp_dir} = context do + generate_docs( + doc_config(context, extras: ["test/fixtures/README.md": [title: "Getting Started"]]) + ) + + content = File.read!(tmp_dir <> "/html/readme.html") assert content =~ ~r{
Getting Started — Elixir v1.0.1 } - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert content =~ ~r{"group":"","headers":\[[^\]]+\],"id":"readme","title":"Getting Started"} end - test "with custom groups" do + test "with custom groups", %{tmp_dir: tmp_dir} = context do extra_config = [ extras: ["test/fixtures/README.md"], groups_for_extras: [Intro: ~r/fixtures\/READ.?/] ] - generate_docs(doc_config(extra_config)) - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + generate_docs(doc_config(context, extra_config)) + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert content =~ ~r{"group":"Intro","headers":\[[^\]]+\],"id":"readme","title":"README"} end - test "with auto-extracted titles" do - generate_docs(doc_config(extras: ["test/fixtures/ExtraPage.md"])) - content = File.read!("#{output_dir()}/extrapage.html") + test "with auto-extracted titles", %{tmp_dir: tmp_dir} = context do + generate_docs(doc_config(context, extras: ["test/fixtures/ExtraPage.md"])) + content = File.read!(tmp_dir <> "/html/extrapage.html") assert content =~ ~r{Extra Page Title — Elixir v1.0.1 } - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") assert content =~ ~r{"id":"extrapage","title":"Extra Page Title"} end - test "without api-reference" do + test "without api-reference", %{tmp_dir: tmp_dir} = context do generate_docs( - doc_config(api_reference: false, extras: ["test/fixtures/README.md"], main: "readme") + doc_config(context, + api_reference: false, + extras: ["test/fixtures/README.md"], + main: "readme" + ) ) - refute File.exists?("#{output_dir()}/api-reference.html") - content = read_wildcard!("#{output_dir()}/dist/sidebar_items-*.js") + refute File.exists?(tmp_dir <> "/html/api-reference.html") + content = read_wildcard!(tmp_dir <> "/html/dist/sidebar_items-*.js") refute content =~ ~r{"id":"api-reference","title":"API Reference"} end - test "pages include links to the previous/next page if applicable" do + test "pages include links to the previous/next page if applicable", + %{tmp_dir: tmp_dir} = context do generate_docs( - doc_config( + doc_config(context, extras: [ "test/fixtures/LICENSE", "test/fixtures/README.md" @@ -521,14 +524,14 @@ defmodule ExDoc.Formatter.HTMLTest do # We have three extras: API Reference, LICENSE and README - content_first = File.read!("#{output_dir()}/api-reference.html") + content_first = File.read!(tmp_dir <> "/html/api-reference.html") refute content_first =~ ~r{Previous Page} assert content_first =~ ~r{\s*\s*Next Page →\s*\s*\s*LICENSE\s*\s*} - content_middle = File.read!("#{output_dir()}/license.html") + content_middle = File.read!(tmp_dir <> "/html/license.html") assert content_middle =~ ~r{\s*\s*← Previous Page\s*\s*\s*API Reference\s*\s*} @@ -536,7 +539,7 @@ defmodule ExDoc.Formatter.HTMLTest do assert content_middle =~ ~r{\s*\s*Next Page →\s*\s*\s*README\s*\s*} - content_last = File.read!("#{output_dir()}/readme.html") + content_last = File.read!(tmp_dir <> "/html/readme.html") assert content_last =~ ~r{\s*\s*← Previous Page\s*\s*\s*LICENSE\s*\s*} @@ -544,32 +547,37 @@ defmodule ExDoc.Formatter.HTMLTest do refute content_last =~ ~r{Next Page} end - test "before_closing_*_tags required by the user are placed in the right place" do + test "before_closing_*_tags required by the user are placed in the right place", + %{ + tmp_dir: tmp_dir + } = context do generate_docs( - doc_config( + doc_config(context, before_closing_head_tag: &before_closing_head_tag/1, before_closing_body_tag: &before_closing_body_tag/1, extras: ["test/fixtures/README.md"] ) ) - content = File.read!("#{output_dir()}/api-reference.html") + content = File.read!(tmp_dir <> "/html/api-reference.html") assert content =~ ~r[#{@before_closing_head_tag_content_html}\s*] assert content =~ ~r[#{@before_closing_body_tag_content_html}\s*