Automated tests 文档中包含julia DocString中的jldoctest块,但测试不在其上运行

Automated tests 文档中包含julia DocString中的jldoctest块,但测试不在其上运行,automated-tests,julia,docstring,Automated Tests,Julia,Docstring,我正在学习Julia,我正在尝试在函数的doctring中加入doctest,形式为 我无法运行这些doctest:当我在预期输出中包含错误时,不会发生任何事情 将运行标记源中jldoctest blocs的测试 以下是我的测试设置: $ tree DocTests/ DocTests/ ├── docs │   ├── make.jl │   └── src │   ├── index.md └── src └── DocTests.jl 6 directories, 13

我正在学习Julia,我正在尝试在函数的doctring中加入doctest,形式为

我无法运行这些doctest:当我在预期输出中包含错误时,不会发生任何事情

将运行标记源中jldoctest blocs的测试

以下是我的测试设置:

$ tree DocTests/
DocTests/
├── docs
│   ├── make.jl
│   └── src
│       ├── index.md
└── src
    └── DocTests.jl

6 directories, 13 files
具有以下
DocTests/src/DocTests.jl
模块内容:

module DocTests

export test

"""
    test(x)

```jldoctest
julia> test(2)
4
```
"""
test(x) = x+1

end
以下
DocTests/docs/make.jl
文档构建说明:

push!(LOAD_PATH, "../src/")
using Documenter, DocTests

makedocs(sitename="Testing doctests",
    doctest = true,
)
以及以下
DocTests/docs/src/index.md
markdown源代码:

 ```@autodocs
Modules = [DocTests]
```

### Just testing jldoctests

```@meta
DocTestSetup = quote
    using DocTests
end
```

```jldoctest
julia> test(2)
5
```

```@meta
DocTestSetup = nothing
```
这就是我构建文档时发生的情况:

$ cd DocTests/docs/
$ julia make.jl
[ Info: SetupBuildDirectory: setting up build directory.
[ Info: Doctest: running doctests.
┌ Error: doctest failure in src/index.md:14-17
│ 
│ ```jldoctest
│ julia> test(2)
│ 5
│ ```
│ 
│ Subexpression:
│ 
│ test(2)
│ 
│ Evaluated output:
│ 
│ 3
│ 
│ Expected output:
│ 
│ 5
│ 
│   diff =
│    Warning: Diff output requires color.
│    53
└ @ Documenter.DocTests ~/.julia/packages/Documenter/zbb48/src/DocTests.jl:364
[ Info: ExpandTemplates: expanding markdown templates.
[ Info: CrossReferences: building cross-references.
[ Info: CheckDocument: running document checks.
[ Info: Populate: populating indices.
[ Info: RenderDocument: rendering document.
[ Info: HTMLWriter: rendering HTML pages.
如您所见,只运行标记源中的测试(预期输出
5
),而不是函数docstring中的测试(预期输出
4

在我的浏览器中加载
build/index.html
,表明函数的反文档已经生成。具体而言,html文件包含以下代码:


似乎只有在
makedocs
调用中指定了包含docstrings的模块时,才会运行docstrings中包含的doctests

按如下方式修改文件
DocTests/docs/make.jl
,会导致doctest根据需要失败:

请注意,必须在用于评估doctest的沙盒中调用
使用doctest
。文件
DocTests/docs/src/index.md
中的
@meta
块中的调用仅将DocTests带到该文件中DocTests的作用域中。doctests模块的docstrings中doctests的作用域不受影响,因此额外调用
DocMeta.setdocmeta是必需的,请参阅

$ julia --version
julia version 1.1.1
push!(LOAD_PATH, "../src/")
using Documenter, DocTests

DocMeta.setdocmeta!(DocTests, :DocTestSetup, :(using DocTests); recursive=true)

makedocs(
    sitename = "Testing doctests",
    modules  = [DocTests],
    doctest  = true,
)