biblatex:如何构建测试环境

biblatex:如何构建测试环境

也许这个问题也很有趣,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");
  }
}

相关内容