Automated tests 文档中包含julia DocString中的jldoctest块,但测试不在其上运行
我正在学习Julia,我正在尝试在函数的doctring中加入doctest,形式为 我无法运行这些doctest:当我在预期输出中包含错误时,不会发生任何事情 将运行标记源中jldoctest blocs的测试 以下是我的测试设置: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
$ 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上面清单中的code>是必需的,请参阅
$ 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,
)