Skip to content

Create .exdoc file after warning about using an existing directory #1713

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
2 changes: 2 additions & 0 deletions lib/ex_doc/formatter/html.ex
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ defmodule ExDoc.Formatter.HTML do
"ExDoc is outputting to an existing directory. " <>
"Beware documentation output may be mixed with other entries"
)

create.(root)
end
end

Expand Down
38 changes: 38 additions & 0 deletions test/ex_doc/formatter/epub_io_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
defmodule ExDoc.Formatter.EPUBIOTest do
use ExUnit.Case, async: false

@moduletag :tmp_dir

test "succeeds if trying to write into an empty existing directory", %{tmp_dir: tmp_dir} do
File.mkdir!("#{tmp_dir}/doc")

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) == ""
end

test "warns if trying to write into existing directory with files", %{tmp_dir: tmp_dir} do
File.mkdir!("#{tmp_dir}/doc")
File.touch!("#{tmp_dir}/doc/foo.txt")

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) =~ "ExDoc is outputting to an existing directory"

# Warn only once
assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) == ""
end

defp generate_docs(tmp_dir) do
config = [
app: :foo,
formatter: "epub",
output: "#{tmp_dir}/doc",
source_beam: "#{tmp_dir}/ebin"
]

ExDoc.generate_docs("Foo", "1.0.0", config)
end
end
27 changes: 0 additions & 27 deletions test/ex_doc/formatter/epub_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -103,33 +103,6 @@ defmodule ExDoc.Formatter.EPUBTest do
assert File.regular?(tmp_dir <> "/epub/another_dir/#{doc_config(context)[:project]}.epub")
end

test "succeeds if trying to write into an empty existing directory", context do
config = doc_config(context)

new_output = config[:output] <> "/new-dir"
File.mkdir_p!(new_output)

new_config = Keyword.put(config, :output, new_output)

refute ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(new_config)
end) =~ "ExDoc is outputting to an existing directory"
end

test "warns if trying to write into existing directory with files", context do
config = doc_config(context)
new_output = config[:output] <> "/new-dir"

File.mkdir_p!(new_output)
File.touch!(Path.join(new_output, "dummy-file"))

new_config = Keyword.put(config, :output, new_output)

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(new_config)
end) =~ "ExDoc is outputting to an existing directory"
end

test "generates an EPUB file with a standardized structure", %{tmp_dir: tmp_dir} = context do
generate_docs_and_unzip(context, doc_config(context))

Expand Down
38 changes: 38 additions & 0 deletions test/ex_doc/formatter/html_io_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
defmodule ExDoc.Formatter.HtmlIOTest do
use ExUnit.Case, async: false

@moduletag :tmp_dir

test "succeeds if trying to write into an empty existing directory", %{tmp_dir: tmp_dir} do
File.mkdir!("#{tmp_dir}/doc")

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) == ""
end

test "warns if trying to write into existing directory with files", %{tmp_dir: tmp_dir} do
File.mkdir!("#{tmp_dir}/doc")
File.touch!("#{tmp_dir}/doc/foo.txt")

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) =~ "ExDoc is outputting to an existing directory"

# Warn only once
assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(tmp_dir)
end) == ""
end

defp generate_docs(tmp_dir) do
config = [
app: :foo,
formatter: "html",
output: "#{tmp_dir}/doc",
source_beam: "#{tmp_dir}/ebin"
]

ExDoc.generate_docs("Foo", "1.0.0", config)
end
end
27 changes: 0 additions & 27 deletions test/ex_doc/formatter/html_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -180,33 +180,6 @@ defmodule ExDoc.Formatter.HTMLTest do
refute content_module =~ re[:index][:refresh]
end

test "succeeds if trying to write into an empty existing directory", context do
config = doc_config(context)

new_output = config[:output] <> "/new-dir"
File.mkdir_p!(new_output)

new_config = Keyword.put(config, :output, new_output)

refute ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(new_config)
end) =~ "ExDoc is outputting to an existing directory"
end

test "warns if trying to write into existing directory with files", context do
config = doc_config(context)
new_output = config[:output] <> "/new-dir"

File.mkdir_p!(new_output)
File.touch!(Path.join(new_output, "dummy-file"))

new_config = Keyword.put(config, :output, new_output)

assert ExUnit.CaptureIO.capture_io(:stderr, fn ->
generate_docs(new_config)
end) =~ "ExDoc is outputting to an existing directory"
end

test "allows to set the authors of the document", %{tmp_dir: tmp_dir} = context do
generate_docs(doc_config(context, authors: ["John Doe", "Jane Doe"]))
content_index = File.read!(tmp_dir <> "/html/api-reference.html")
Expand Down