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') );