也许这个问题也很有趣,biblatex
但事情是这样的:我最近发表了我的biblatex
风格biblatex-fiwi我总是无法确保更新不会导致意外行为。例如,我刚刚意识到我上次的更新包含一个愚蠢的错误,即在重要的地方漏掉了冒号。以前的版本中存在冒号,但由于我不够小心,现在它已经消失了。
我希望有某种自动化测试环境,可以根据定义的结果检查一组书目条目。目前我总是必须自己检查最终的 PDF,这很容易出错。
做到这一点最简单的方法是什么?
答案1
- 保存旧输出,
- 创建新的,
- 将两者都转换
pdftotext
为真实文本, - 将输出与进行比较
diff
。
都可以用脚本完成
答案2
我对 biblatex-apa 也有同样的问题。我选择了一个使用 CAM::PDF 模块的 perl 脚本,它可以比较 PDF 并告诉您差异。我保存了样式中包含的测试文档的“参考”PDF,然后运行此脚本将此 PDF 与更改后的同一测试文档的一个输出进行比较。如果一切正常,这将成为新的参考文档。脚本的输出并不是很好 - 它逐页比较,如果页面相同,则说“ok”,否则输出一个相当无用的错误消息,但至少我知道在那时要检查哪个页面的差异...脚本如下。您可以看到我的两个 PDF 在哪里被提及。我只是在与这两个 PDF 相同的目录中运行它。
#!/usr/bin/perl
use Test::More;
use Test::Deep;
use CAM::PDF;
cmp_pdf('biblatex-apa-test.pdf', 'reference.pdf');
done_testing;
sub cmp_pdf ($$) {
my ($got, $expected) = @_;
$got = CAM::PDF->new($got) or die "Could not create CAM::PDF instance with : $got";
$expected = CAM::PDF->new($expected) or die "Could not create CAM::PDF instance with : $expected";
foreach my $page_num (1 .. $expected->numPages()) {
my $tree1 = $got->getPageContentTree($page_num, "verbose");
my $tree2 = $expected->getPageContentTree($page_num, "verbose");
cmp_deeply($tree1->{blocks}, $tree2->{blocks}, "Page $page_num");
}
}