perl - 如何测试 Perl 模块以检查 Makefile.PL 是否声明了所有依赖项?

标签 perl testing module release cpan

我想编写一个 t/00-check-deps.t 模块来查找 MyModule.pm 中的所有依赖项,并确保它们存在于 发布前的 Makefile.PL

这样,当我在分发到 CPAN 之前进行 make test 时,我就会知道在发布之前没有忘记任何内容。我看过ExtUtils套件,但我还没有看到任何明显的东西已经解决了这个问题。这似乎是人们想要解决的一个常见问题。

你会怎么做?

最佳答案

这是我的做法。感谢@ikegami scandeps hint :

find lib -name '*.pm' | xargs scandeps.pl -R | \
  perl -MJSON -le '
    undef $/; 
    %d=eval(<STDIN>);
    $j=JSON::from_json(`cat MYMETA.json`); 
    foreach (keys(%d)) {
      warn "Missing: $_ => $d{$_}\n" if !defined($j->{prereqs}{runtime}{requires}{$_}) 
    }
    '

打印:

Missing: Carp => 1.42
Missing: PDL::Constants => 0.02
Missing: Exporter => 5.72
Missing: constant => 1.33
Missing: PDL => 2.080
Missing: PDL::LinearAlgebra => 0.35
Missing: PDL::Ops => undef

关于perl - 如何测试 Perl 模块以检查 Makefile.PL 是否声明了所有依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73254321/

相关文章:

Java + Node 模块

perl - 终端:我在哪里?

python - 调整目录中的图像大小

perl - APT 错误 : Depends: perl (= 5. 14.2-6ubuntu2) 但要安装 5.14.2-6ubuntu2.1

php - 如何在旧版项目中实现测试框架

ruby-on-rails - 如何让 Rails 测试数据库在每次测试前重建?

amazon-web-services - 测试 Recipe 时,Chef-Solo 在 Vagrant 中找不到设备错误

javascript - Node.js 模块的正确用法

python - 如何从模块命名空间获取全局变量?

正则表达式在预期不匹配时进行负向后查找匹配