Perl6:使用prove6时读取测试文件夹中的文件

问题描述 投票:9回答:1

在编写测试时,文本文件会在测试文件夹中读取,但不会在文件夹外部读取(即,在运行prove6时)。例如,此代码在测试文件夹中读取ReadConfig.ini,但不在其外部:

my %v = ReadIni( 'ReadConfig.ini' );

另一方面,此代码在测试文件夹之外工作:

my %v = ReadIni( $*PROGRAM.dirname.IO.add('ReadConfig.ini') );

正确的语法是什么?

谢谢!

testing path perl6 perl-prove
1个回答
9
投票

所以你的测试包含类似的东西:

my %v = ReadIni( 'ReadConfig.ini' );

当你声明一个相对文件路径时,它将对$*CWD绝对化。因此,如果您在t/文件夹中运行测试,它将查找t/ReadConfig.ini,如果您在t/../文件夹中运行它,它将查找../ReadConfig.ini。因此,在编写测试时,应使用绝对路径,以便工具不限于在特定位置内运行测试。


my %v = ReadIni( $*PROGRAM.dirname.IO.add('ReadConfig.ini') );

另一方面,如果你提供一个绝对的文件路径,那么它的意思就没有差异了,无论你在哪个目录,这将是你的意思。但我建议不要使用不包括音量部分的dirname在Windows上,而是使用父:

my %v = ReadIni( $*PROGRAM.parent.add('ReadConfig.ini') );
© www.soinside.com 2019 - 2024. All rights reserved.