diff --git a/lib/ex_doc/formatter/html.ex b/lib/ex_doc/formatter/html.ex
index 2c1ef3cbd..d02a06b38 100644
--- a/lib/ex_doc/formatter/html.ex
+++ b/lib/ex_doc/formatter/html.ex
@@ -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
diff --git a/test/ex_doc/formatter/epub_io_test.exs b/test/ex_doc/formatter/epub_io_test.exs
new file mode 100644
index 000000000..086374790
--- /dev/null
+++ b/test/ex_doc/formatter/epub_io_test.exs
@@ -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
diff --git a/test/ex_doc/formatter/epub_test.exs b/test/ex_doc/formatter/epub_test.exs
index 58c8c330c..c1f02225c 100644
--- a/test/ex_doc/formatter/epub_test.exs
+++ b/test/ex_doc/formatter/epub_test.exs
@@ -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))
diff --git a/test/ex_doc/formatter/html_io_test.exs b/test/ex_doc/formatter/html_io_test.exs
new file mode 100644
index 000000000..8da38c2b2
--- /dev/null
+++ b/test/ex_doc/formatter/html_io_test.exs
@@ -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
diff --git a/test/ex_doc/formatter/html_test.exs b/test/ex_doc/formatter/html_test.exs
index ee8489c94..9cde053da 100644
--- a/test/ex_doc/formatter/html_test.exs
+++ b/test/ex_doc/formatter/html_test.exs
@@ -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")