From 854ea7fa60e9d51aa6f3631b549ff32fb2629328 Mon Sep 17 00:00:00 2001 From: Milton Mazzarri Date: Fri, 26 May 2017 17:29:44 -0500 Subject: [PATCH 1/2] [Windows] Fix unit tests --- test/ex_doc/formatter/epub_test.exs | 14 +++++++++----- test/ex_doc/formatter/html/templates_test.exs | 18 +++++++++++------- test/ex_doc/formatter/html_test.exs | 18 +++++++++++------- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/test/ex_doc/formatter/epub_test.exs b/test/ex_doc/formatter/epub_test.exs index ba4628946..51e751b24 100644 --- a/test/ex_doc/formatter/epub_test.exs +++ b/test/ex_doc/formatter/epub_test.exs @@ -40,6 +40,10 @@ defmodule ExDoc.Formatter.EPUBTest do |> :zip.unzip([cwd: unzip_dir]) end + defp normalize_eol(line) do + String.replace(line, "\r\n", "\n") + end + test "check headers for module pages" do generate_docs_and_unzip doc_config([main: "RandomError"]) @@ -130,13 +134,13 @@ defmodule ExDoc.Formatter.EPUBTest do config = doc_config([main: "README"]) generate_docs_and_unzip(config) - content = File.read!("#{output_dir()}/OEBPS/readme.xhtml") + content = "#{output_dir()}/OEBPS/readme.xhtml" |> File.read!() |> normalize_eol() assert content =~ ~r{README [^<]*} - assert content =~ ~r{RandomError} - assert content =~ ~r{CustomBehaviourImpl.hello/1} - assert content =~ ~r{TypesAndSpecs.Sub} + assert content =~ ~r{RandomError} + assert content =~ ~r{CustomBehaviourImpl.hello/1} + assert content =~ ~r{TypesAndSpecs.Sub} - content = File.read!("#{output_dir()}/OEBPS/nav.xhtml") + content = "#{output_dir()}/OEBPS/nav.xhtml" |> File.read!() |> normalize_eol() assert content =~ ~r{
  • README
  • } end diff --git a/test/ex_doc/formatter/html/templates_test.exs b/test/ex_doc/formatter/html/templates_test.exs index a7a7a1edf..9333a1db1 100644 --- a/test/ex_doc/formatter/html/templates_test.exs +++ b/test/ex_doc/formatter/html/templates_test.exs @@ -35,6 +35,10 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do Templates.module_page(hd(mods), @empty_nodes_map, doc_config()) end + defp normalize_eol(line) do + String.replace(line, "\r\n", "\n") + end + setup_all do File.mkdir_p!("test/tmp/html_templates") File.cp_r!("priv/ex_doc/formatter/html/assets", "test/tmp/html_templates") @@ -166,14 +170,14 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## LISTING test "site title text links to homepage_url when set" do - content = Templates.sidebar_template(doc_config(), @empty_nodes_map) + content = doc_config() |> Templates.sidebar_template(@empty_nodes_map) |> normalize_eol() assert content =~ ~r{\n\s*\n\s*} end test "site title text links to main when there is no homepage_url" do config = %ExDoc.Config{project: "Elixir", version: "1.0.1", source_root: File.cwd!, main: "hello",} - content = Templates.sidebar_template(config, @empty_nodes_map) + content = config |> Templates.sidebar_template(@empty_nodes_map) |> normalize_eol() assert content =~ ~r{\n\s*\n\s*} end @@ -202,7 +206,7 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## MODULES test "module_page outputs the functions and docstrings" do - content = get_module_page([CompiledWithDocs]) + content = [CompiledWithDocs] |> get_module_page() |> normalize_eol() # Title and headers assert content =~ ~r{CompiledWithDocs [^<]*} @@ -260,14 +264,14 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## BEHAVIOURS test "module_page outputs behavior and callbacks" do - content = get_module_page([CustomBehaviourOne]) + content = [CustomBehaviourOne] |> get_module_page() |> normalize_eol() assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomBehaviourOne\s*behaviour}m assert content =~ ~r{Callbacks} assert content =~ ~r{
    } assert content =~ ~s[hello(integer)] assert content =~ ~s[greet(arg0)] - content = get_module_page([CustomBehaviourTwo]) + content = [CustomBehaviourTwo] |> get_module_page() |> normalize_eol() assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomBehaviourTwo\s*behaviour\s*}m assert content =~ ~r{Callbacks} assert content =~ ~r{
    } @@ -276,14 +280,14 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## PROTOCOLS test "module_page outputs the protocol type" do - content = get_module_page([CustomProtocol]) + content = [CustomProtocol] |> get_module_page() |> normalize_eol() assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomProtocol\s*protocol\s*}m end ## TASKS test "module_page outputs the task type" do - content = get_module_page([Mix.Tasks.TaskWithDocs]) + content = [Mix.Tasks.TaskWithDocs] |> get_module_page() |> normalize_eol() assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*mix task_with_docs\s*}m end end diff --git a/test/ex_doc/formatter/html_test.exs b/test/ex_doc/formatter/html_test.exs index 08c0b23b3..d9a3b7609 100644 --- a/test/ex_doc/formatter/html_test.exs +++ b/test/ex_doc/formatter/html_test.exs @@ -40,6 +40,10 @@ defmodule ExDoc.Formatter.HTMLTest do ExDoc.generate_docs(config[:project], config[:version], config) end + defp normalize_eol(line) do + String.replace(line, "\r\n", "\n") + end + test "guess url base on source_url and source_root options" do file_path = "#{output_dir()}/CompiledWithDocs.html" for scheme <- ["http", "https"] do @@ -176,7 +180,7 @@ defmodule ExDoc.Formatter.HTMLTest do test "run generates the api reference file" do generate_docs(doc_config()) - content = File.read!("#{output_dir()}/api-reference.html") + content = "#{output_dir()}/api-reference.html" |> File.read!() |> normalize_eol() assert content =~ ~r{CompiledWithDocs} assert content =~ ~r{

    moduledoc

    } assert content =~ ~r{CompiledWithDocs.Nested} @@ -187,16 +191,16 @@ defmodule ExDoc.Formatter.HTMLTest do config = doc_config([main: "readme"]) generate_docs(config) - content = File.read!("#{output_dir()}/index.html") + content = "#{output_dir()}/index.html" |> File.read!() |> normalize_eol() assert content =~ ~r{} - content = File.read!("#{output_dir()}/readme.html") + content = "#{output_dir()}/readme.html" |> File.read!() |> normalize_eol() assert content =~ ~r{README [^<]*} - assert content =~ ~r{

    .*.*Header sample.*

    }ms + assert content =~ ~r{

    .*.*Header sample.*

    }ms assert content =~ ~r{

    .*.*more > than.*

    }ms - assert content =~ ~r{RandomError} - assert content =~ ~r{CustomBehaviourImpl.hello/1} - assert content =~ ~r{TypesAndSpecs.Sub} + assert content =~ ~r{RandomError} + assert content =~ ~r{CustomBehaviourImpl.hello/1} + assert content =~ ~r{TypesAndSpecs.Sub} end test "run generates pages with custom names" do From 257e764d8dcc7b2ed0c4e39e274476799723c0ad Mon Sep 17 00:00:00 2001 From: Milton Mazzarri Date: Wed, 31 May 2017 16:53:25 -0500 Subject: [PATCH 2/2] Update regexes --- test/ex_doc/formatter/epub_test.exs | 8 ++--- test/ex_doc/formatter/html/templates_test.exs | 36 +++++++++---------- test/ex_doc/formatter/html_test.exs | 10 ++---- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/test/ex_doc/formatter/epub_test.exs b/test/ex_doc/formatter/epub_test.exs index 51e751b24..e904a8749 100644 --- a/test/ex_doc/formatter/epub_test.exs +++ b/test/ex_doc/formatter/epub_test.exs @@ -40,10 +40,6 @@ defmodule ExDoc.Formatter.EPUBTest do |> :zip.unzip([cwd: unzip_dir]) end - defp normalize_eol(line) do - String.replace(line, "\r\n", "\n") - end - test "check headers for module pages" do generate_docs_and_unzip doc_config([main: "RandomError"]) @@ -134,13 +130,13 @@ defmodule ExDoc.Formatter.EPUBTest do config = doc_config([main: "README"]) generate_docs_and_unzip(config) - content = "#{output_dir()}/OEBPS/readme.xhtml" |> File.read!() |> normalize_eol() + content = File.read!("#{output_dir()}/OEBPS/readme.xhtml") assert content =~ ~r{README [^<]*} assert content =~ ~r{RandomError} assert content =~ ~r{CustomBehaviourImpl.hello/1} assert content =~ ~r{TypesAndSpecs.Sub} - content = "#{output_dir()}/OEBPS/nav.xhtml" |> File.read!() |> normalize_eol() + content = File.read!("#{output_dir()}/OEBPS/nav.xhtml") assert content =~ ~r{
  • README
  • } end diff --git a/test/ex_doc/formatter/html/templates_test.exs b/test/ex_doc/formatter/html/templates_test.exs index 9333a1db1..8d8790ad5 100644 --- a/test/ex_doc/formatter/html/templates_test.exs +++ b/test/ex_doc/formatter/html/templates_test.exs @@ -35,10 +35,6 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do Templates.module_page(hd(mods), @empty_nodes_map, doc_config()) end - defp normalize_eol(line) do - String.replace(line, "\r\n", "\n") - end - setup_all do File.mkdir_p!("test/tmp/html_templates") File.cp_r!("priv/ex_doc/formatter/html/assets", "test/tmp/html_templates") @@ -170,15 +166,15 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## LISTING test "site title text links to homepage_url when set" do - content = doc_config() |> Templates.sidebar_template(@empty_nodes_map) |> normalize_eol() - assert content =~ ~r{\n\s*\n\s*} + content = Templates.sidebar_template(doc_config(), @empty_nodes_map) + assert content =~ ~r{\s*\s*} end test "site title text links to main when there is no homepage_url" do config = %ExDoc.Config{project: "Elixir", version: "1.0.1", source_root: File.cwd!, main: "hello",} - content = config |> Templates.sidebar_template(@empty_nodes_map) |> normalize_eol() - assert content =~ ~r{\n\s*\n\s*} + content = Templates.sidebar_template(config, @empty_nodes_map) + assert content =~ ~r{\s*\s*} end test "list_page enables nav link when module type have at least one element" do @@ -206,11 +202,11 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## MODULES test "module_page outputs the functions and docstrings" do - content = [CompiledWithDocs] |> get_module_page() |> normalize_eol() + content = get_module_page([CompiledWithDocs]) # Title and headers assert content =~ ~r{CompiledWithDocs [^<]*} - assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CompiledWithDocs\s*} + assert content =~ ~r{

    \s*Elixir v1.0.1\s*CompiledWithDocs\s*} refute content =~ ~r{module} assert content =~ ~r{moduledoc.*Example.*CompiledWithDocs\.example.*}ms assert content =~ ~r{

    .*.*.*.*Example.*

    }ms @@ -221,13 +217,13 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do assert content =~ ~r{example_1/0.*\(macro\)}ms # Source - assert content =~ ~r{]*>\n\s*\n\s*View Source\n\s*}ms + assert content =~ ~r{]*>\s*\s*View Source\s*}ms # Functions assert content =~ ~s{
    } assert content =~ ~s{} assert content =~ ~s{example(foo, bar \\\\ Baz)} - assert content =~ ~r{\n\s*\n\s*Link to this function\n\s*}ms + assert content =~ ~r{\s*\s*Link to this function\s*}ms end test "module_page outputs the types and function specs" do @@ -264,15 +260,15 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## BEHAVIOURS test "module_page outputs behavior and callbacks" do - content = [CustomBehaviourOne] |> get_module_page() |> normalize_eol() - assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomBehaviourOne\s*behaviour}m + content = get_module_page([CustomBehaviourOne]) + assert content =~ ~r{

    \s*Elixir v1.0.1\s*CustomBehaviourOne\s*behaviour}m assert content =~ ~r{Callbacks} assert content =~ ~r{
    } assert content =~ ~s[hello(integer)] assert content =~ ~s[greet(arg0)] - content = [CustomBehaviourTwo] |> get_module_page() |> normalize_eol() - assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomBehaviourTwo\s*behaviour\s*}m + content = get_module_page([CustomBehaviourTwo]) + assert content =~ ~r{

    \s*Elixir v1.0.1\s*CustomBehaviourTwo\s*behaviour\s*}m assert content =~ ~r{Callbacks} assert content =~ ~r{
    } end @@ -280,14 +276,14 @@ defmodule ExDoc.Formatter.HTML.TemplatesTest do ## PROTOCOLS test "module_page outputs the protocol type" do - content = [CustomProtocol] |> get_module_page() |> normalize_eol() - assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*CustomProtocol\s*protocol\s*}m + content = get_module_page([CustomProtocol]) + assert content =~ ~r{

    \s*Elixir v1.0.1\s*CustomProtocol\s*protocol\s*}m end ## TASKS test "module_page outputs the task type" do - content = [Mix.Tasks.TaskWithDocs] |> get_module_page() |> normalize_eol() - assert content =~ ~r{

    \n\s*Elixir v1.0.1\n\s*mix task_with_docs\s*}m + content = get_module_page([Mix.Tasks.TaskWithDocs]) + assert content =~ ~r{

    \s*Elixir v1.0.1\s*mix task_with_docs\s*}m end end diff --git a/test/ex_doc/formatter/html_test.exs b/test/ex_doc/formatter/html_test.exs index d9a3b7609..7b2d693f5 100644 --- a/test/ex_doc/formatter/html_test.exs +++ b/test/ex_doc/formatter/html_test.exs @@ -40,10 +40,6 @@ defmodule ExDoc.Formatter.HTMLTest do ExDoc.generate_docs(config[:project], config[:version], config) end - defp normalize_eol(line) do - String.replace(line, "\r\n", "\n") - end - test "guess url base on source_url and source_root options" do file_path = "#{output_dir()}/CompiledWithDocs.html" for scheme <- ["http", "https"] do @@ -180,7 +176,7 @@ defmodule ExDoc.Formatter.HTMLTest do test "run generates the api reference file" do generate_docs(doc_config()) - content = "#{output_dir()}/api-reference.html" |> File.read!() |> normalize_eol() + content = File.read!("#{output_dir()}/api-reference.html") assert content =~ ~r{CompiledWithDocs} assert content =~ ~r{

    moduledoc

    } assert content =~ ~r{CompiledWithDocs.Nested} @@ -191,10 +187,10 @@ defmodule ExDoc.Formatter.HTMLTest do config = doc_config([main: "readme"]) generate_docs(config) - content = "#{output_dir()}/index.html" |> File.read!() |> normalize_eol() + content = File.read!("#{output_dir()}/index.html") assert content =~ ~r{} - content = "#{output_dir()}/readme.html" |> File.read!() |> normalize_eol() + content = File.read!("#{output_dir()}/readme.html") assert content =~ ~r{README [^<]*} assert content =~ ~r{

    .*.*Header sample.*

    }ms assert content =~ ~r{

    .*.*more > than.*

    }ms