我正在编写一个新的Perl 6项目,希望能够测试所有部件是否use正确.为此,我正在使用模块中的use-ok子程序Test.我正在尝试使用以下代码轻松测试所有模块文件:
"META6.json".IO.slurp.&from-json<provides>
.grep(*.value.starts-with("lib")).Hash.keys
.map({ use-ok $_ })
Run Code Online (Sandbox Code Playgroud)
我的问题是有一些文件包含MAIN子程序的定义.从运行时看到的输出prove -e 'perl6 -Ilib' t,看起来其中一个文件正在MAIN执行,然后测试停止.
我想测试这些文件是否可以use正确运行,而不是实际运行其中MAIN定义的subs.我该怎么做?
的MAIN,如果它是在程序的主线顶层的文件时,才会执行。所以:
sub MAIN() is export { } # this will be executed when the mainline executes
Run Code Online (Sandbox Code Playgroud)
但是,如果您将MAINsub 移出顶层,它将不会被执行。但是您仍然可以导出它。
{
sub MAIN() is export { } # will *not* execute
}
Run Code Online (Sandbox Code Playgroud)
抱歉花了这么长时间才回答:我花了一段时间才弄清楚问题是什么:-)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |