<NME> runtests.jl
<BEF> using Test
import Documenter
include("TestUtilities.jl"); using Main.TestUtilities

@testset "Documenter" begin
    # Build the example docs
    @info "Building example/make.jl"
    include("examples/make.jl")

    # Test missing docs
    @info "Building missingdocs/make.jl"
    include("missingdocs/make.jl")

    # Error reporting.
    @info "Building errors/make.jl"
    @quietly include("errors/make.jl")

    # Unit tests for module internals.
    include("except.jl")
    include("utilities.jl")
    include("remotes.jl")

    # DocChecks tests
    include("docchecks.jl")

    # NavNode tests.
    include("navnode.jl")

    # DocSystem unit tests.
    include("docsystem.jl")

    # CrossReferences
    include("crossreferences.jl")

    # DocTest unit tests.
    @info "Running tests in doctests/"
    include("doctests/docmeta.jl")
    include("doctests/doctestapi.jl")
    include("doctests/doctests.jl")
    include("doctests/fix/tests.jl")

    # DOM Tests.
    include("dom.jl")

    # MDFlatten tests.
    include("mdflatten.jl")

    # Main build pipeline (Builder and Expanders modules)
    include("pipeline.jl")

    # HTMLWriter
    include("htmlwriter.jl")

    # LaTeXWriter
    include("latexwriter.jl")

    # Deployment configurations
    include("deployconfig.jl")
    include("deploydocs.jl")

    # Mock package docs.
    include("examples/tests.jl")

    # A simple build outside of a Git repository
    @info "Building nongit/tests.jl"
    @quietly include("nongit/tests.jl")

    # A simple build evaluating code outside build directory
    @info "Building workdir/tests.jl"
    @quietly include("workdir/tests.jl")

    # Passing a writer positionally (https://github.com/JuliaDocs/Documenter.jl/issues/1046)
    @test_throws ArgumentError makedocs(sitename="", HTML())

    # Running doctest() on our own manual
    @info "doctest() Documenter's manual"
    @quietly include("manual.jl")
end
doc = makedocs(
    debug = true,
    root  = example_root,
)

# tests

@test isa(doc, Documenter.Documents.Document)

let build_dir  = joinpath(example_root, "build"),
    source_dir = joinpath(example_root, "src")

    @test isdir(build_dir)
    @test isfile(joinpath(build_dir, "assets", "mathjaxhelper.js"))
    @test isfile(joinpath(build_dir, "assets", "Documenter.css"))
    @test isfile(joinpath(build_dir, "assets", "custom.css"))
    @test isfile(joinpath(build_dir, "lib", "functions.md"))
    @test isfile(joinpath(build_dir, "man", "tutorial.md"))
    @test isfile(joinpath(build_dir, "man", "data.csv"))

@test doc.user.root   == example_root
@test doc.user.source == "src"
@test doc.user.build  == "build"
@test doc.user.clean  == true
@test doc.user.format == Documenter.Formats.Markdown

    @test Documenter.Anchors.exists(headers, "Function-Index")
    @test Documenter.Anchors.exists(headers, "Functions")
    @test Documenter.Anchors.isunique(headers, "Functions")
    @test Documenter.Anchors.isunique(headers, "Functions", joinpath("build", "lib", "functions.md"))
    let name = "Foo", path = joinpath("build", "lib", "functions.md")
        @test Documenter.Anchors.exists(headers, name, path)
        @test !Documenter.Anchors.isunique(headers, name)
        @test !Documenter.Anchors.isunique(headers, name, path)

<MSG> Merge pull request #207 from JuliaDocs/mp/assets

Handle custom assets
<DFF> @@ -361,6 +361,7 @@ info("Building mock package docs: MarkdownWriter")
 doc = makedocs(
     debug = true,
     root  = example_root,
+    build = "build-markdown",
 )
 
 # tests
@@ -368,7 +369,7 @@ doc = makedocs(
 
 @test isa(doc, Documenter.Documents.Document)
 
-let build_dir  = joinpath(example_root, "build"),
+let build_dir  = joinpath(example_root, "build-markdown"),
     source_dir = joinpath(example_root, "src")
 
     @test isdir(build_dir)
@@ -380,6 +381,7 @@ let build_dir  = joinpath(example_root, "build"),
     @test isfile(joinpath(build_dir, "assets", "mathjaxhelper.js"))
     @test isfile(joinpath(build_dir, "assets", "Documenter.css"))
     @test isfile(joinpath(build_dir, "assets", "custom.css"))
+    @test isfile(joinpath(build_dir, "assets", "custom.js"))
     @test isfile(joinpath(build_dir, "lib", "functions.md"))
     @test isfile(joinpath(build_dir, "man", "tutorial.md"))
     @test isfile(joinpath(build_dir, "man", "data.csv"))
@@ -392,7 +394,7 @@ end
 
 @test doc.user.root   == example_root
 @test doc.user.source == "src"
-@test doc.user.build  == "build"
+@test doc.user.build  == "build-markdown"
 @test doc.user.clean  == true
 @test doc.user.format == Documenter.Formats.Markdown
 
@@ -411,8 +413,8 @@ let headers = doc.internal.headers
     @test Documenter.Anchors.exists(headers, "Function-Index")
     @test Documenter.Anchors.exists(headers, "Functions")
     @test Documenter.Anchors.isunique(headers, "Functions")
-    @test Documenter.Anchors.isunique(headers, "Functions", joinpath("build", "lib", "functions.md"))
-    let name = "Foo", path = joinpath("build", "lib", "functions.md")
+    @test Documenter.Anchors.isunique(headers, "Functions", joinpath("build-markdown", "lib", "functions.md"))
+    let name = "Foo", path = joinpath("build-markdown", "lib", "functions.md")
         @test Documenter.Anchors.exists(headers, name, path)
         @test !Documenter.Anchors.isunique(headers, name)
         @test !Documenter.Anchors.isunique(headers, name, path)

Merge pull request #207 from JuliaDocs/mp/assets