我正在编写一个新的Perl 6项目以便工作,并希望能够测试是否可以正确use
d替换所有零件。为此,我使用了use-ok
模块中的Test
子例程。我正在尝试使用以下代码轻松测试所有模块文件:
"META6.json".IO.slurp.&from-json<provides>
.grep(*.value.starts-with("lib")).Hash.keys
.map({ use-ok $_ })
我的问题是,有几个文件包含MAIN
子例程的定义。从运行prove -e 'perl6 -Ilib' t
的输出中可以看到,其中一个文件正在执行MAIN
,然后测试停止。
我想测试这些文件是否可以正确use
d,而无需实际运行其中定义的MAIN
子。我该怎么办?
答案 0 :(得分:4)
仅当文件MAIN
位于程序主线的顶层时才执行。所以:
sub MAIN() is export { } # this will be executed when the mainline executes
但是,如果将MAIN
子项移出顶层,则将不执行。但是您可以仍然将其导出。
{
sub MAIN() is export { } # will *not* execute
}
很抱歉,回答了这么长时间:我花了一段时间才弄清楚问题是什么:-)