Perl6: чтение файла в тестовой папке при использовании оказаться на6

При написании тестов текстовый файл читается в папке тестов, но не за ее пределами (т. Е. При работе с proof6). Например, этот код читает ReadConfig.ini внутри тестовой папки, но не за ее пределами:

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

С другой стороны, этот код работает вне тестовой папки:

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

Какой будет правильный синтаксис?

Спасибо!

1 ответ

Решение

Итак, ваш тест содержит что-то вроде:

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') );
Другие вопросы по тегам