我正在尝试用系统编写回归测试l3build
。我知道如何从一个文件l3build save
创建一个文件,以便将来的测试可以与假定成功的结果进行比较。.tlg
.lvt
但我不知道如何让 l3build 从.lvt
文件生成 PDF,所以我可以查看输出并验证它是否按照我的要求执行。这似乎是运行之前过程中的一个自然步骤l3build save
。
我还知道如何制作一个.lvt
文件和一个.lve
文件,以便l3build check
可以验证测试输出是否等于预期输出。所以我可以编写.lve
使用低级代码来生成我希望文件.lvt
生成的内容。但我也看不到.lve
文件中的 PDF 输出。
这是一个 MWE (我们称之为testfiles/test.lvt
):
\input regression-test.tex
\documentclass{article}
\usepackage{expl3}
\usepackage{amsfonts}
\newcommand{\R}{\mathbb{R}}
\begin{document}
\START
\ExplSyntaxOn
\box_new:N \l_tmp_box
\hbox_set:Nn \l_tmp_box {$\R$}
\box_show:N \l_tmp_box
\ExplSyntaxOff
\END
\end{document}
然后在和中l3build save test
生成,但两个目录中都没有PDF文件。test.tlg
testfiles/
build/test
答案1
好的,所以我从评论中学到了我需要避免的事情,\END
因为这会使 tex 运行短路,并且我必须确保生成一些(非对数)输出。
我\END
从上面的 MWE 中删除了。为了确保生成了一些输出,我\box_use:N
在该\box_show:N
行中添加了一行。该show
行仅描述框,并且仅将其保存在文件中.log
。该use
行实际上将框放入输出流中。
所以现在我的测试是这样的:
\input regression-test.tex
\documentclass{article}
\usepackage{expl3}
\usepackage{amsfonts}
\newcommand{\R}{\mathbb{R}}
\begin{document}
\ExplSyntaxOn
\START
\box_new:N \l_tmp_box
\hbox_set:Nn \l_tmp_box {$\R$}
\box_show:N \l_tmp_box
\box_use:N \l_tmp_box
\ExplSyntaxOff
\end{document}
现在创建如下l3build save test
文件:build/test/test.tlg
This is a generated file for the l3build validation system.
Don't change this file in any respect.
> \box...=
\hbox(6.88889+0.0)x7.22223
.\mathon
.\U/msb/m/n/10 R
.\mathoff
! OK.
<argument> \l_tmp_box
l. ...\box_show:N \l_tmp_box
[1
] (test.aux)
它还会创建其中build/test/test.pdf
的内容\l_tmp_box
。我不必重复测试代码,只需多加一行即可以两种不同的方式处理框。