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') );
编写测试时,文本文件会在测试文件夹中读取,但不会在文件夹外读取(即,当 运行 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') );