编写测试时,文本文件在测试文件夹中读取,但在文件夹外不被读取(即,在运行 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
。因此,在编写测试时,应使用绝对化路径,以便工具不限于在特定位置内运行测试。
my %v = ReadIni( $*PROGRAM.dirname.IO.add('ReadConfig.ini') );
另一方面,如果您提供绝对文件路径,则含义没有差异,无论您在哪个目录中,这都将执行您的意思。但是,我建议不要使用不包括窗口上音量部分的dirname
,而是使用父级:
my %v = ReadIni( $*PROGRAM.parent.add('ReadConfig.ini') );