Mim*_*net 9 testing module perl6
这是/ t中的通用代码,用于测试/ lib中的 .pm6模块是否加载。
use lib $*PROGRAM.sibling('../lib');
use Test;
my @dir = dir($*PROGRAM.sibling('../lib'), test => { $_ ~~ /.*pm6/ } );
plan @dir.elems;
sub module( IO $dir ) {
$dir.basename.Str ~~ /(\w+)\.pm6/;
return $0.Str;
}
for @dir.map(&module) -> $module {
use-ok $module, "This module loads: $module";
}
Run Code Online (Sandbox Code Playgroud)
在继续之前(递归地查看lib子文件夹),我想知道这是正确的方法。
谢谢!
uge*_*exe 10
如果要测试格式正确的发行版,则应使用:
use lib $*PROGRAM.parent(2);
Run Code Online (Sandbox Code Playgroud)
通过指向use lib
的目录包含您META6.json的,而不是lib
你帮助确保提供META6.json文件的入口是最新的(因为文件没有在META6.json列出,但该目录不存在内lib
不会看到)。
(我什至更进一步,说根本不使用use lib '...'
,而是使用来运行测试perl6 -I ...
。例如-如果您想出于某种原因在已安装的发行版上运行这些测试(出于某种原因)怎么办? ?)
这样,您可以使用META6数据跳过目录递归。一种方法是直接读取META6.json,但是更好的方法是从发行版本身获取模块名称:
# file: zef/t/my-test.t
# cwd: zef/
use lib $*PROGRAM.parent(2); # or better: perl6 -I. t/my-test.t
use Test;
my $known-module = CompUnit::DependencySpecification.new(short-name => "Zef");
my $comp-unit = $*REPO.resolve($known-module);
my @module-names = $comp-unit.distribution.meta<provides>.keys;
use-ok($_) for @module-names;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
141 次 |
最近记录: |