Perl6: чтение файла в тестовой папке при использовании оказаться6 - PullRequest
9 голосов
/ 24 апреля 2019

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

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

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

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

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

Спасибо!

1 Ответ

9 голосов
/ 24 апреля 2019

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

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

Когда вы объявляете относительный путь к файлу, он будет абсолютным против $*CWD.Поэтому, если вы запустите свой тест в папке t/, он будет искать t/ReadConfig.ini, а если вы запустите его в папке t/../, он будет искать ../ReadConfig.ini.Поэтому, когда вы пишете тесты, вы должны использовать абсолютные пути, чтобы инструментарий не ограничивался запуском тестов в определенном месте.


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

С другой стороны, если вы указали абсолютный путь к файлу, тогданет никаких расхождений в том, что имеется в виду, и это будет делать то, что вы имеете в виду, независимо от того, в каком каталоге вы находитесь. Однако я бы предложил не использовать dirname, который не включает в себя часть тома на окнах, а вместо этого использовал бы parent:

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