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

Perl6: Read file in test folder when using prove6

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

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

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

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

正确的语法是什么?

谢谢!

因此您的测试包含如下内容:

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

当您声明一个相对文件路径时,它将根据 $*CWD 绝对化。因此,如果您 运行 您的测试在 t/ 文件夹中,它将查找 t/ReadConfig.ini,如果您 运行 它在 t/../ 文件夹中,它将查找 ../ReadConfig.ini。因此,当您编写测试时,您应该使用绝对路径,这样工具就不会被限制在特定位置内的 运行ning 测试。


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

另一方面,如果您提供绝对文件路径,则其含义没有差异,无论您在哪个目录中,这都会按您的意思执行。但是我建议不要使用 dirname 不包括 windows 上的音量部分,而是使用父级:

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