Я новичок в OCaml и Dune и пытаюсь создать базовый проект с тестовыми примерами. Я хочу, чтобы мой тестовый модуль мог читать текстовые файлы из подкаталога и обрабатывать входные данные этих файлов. Однако, хотя я читаю документацию Dune, у меня возникли проблемы с поиском правильных разделов, в которых можно указать Dune включить каталог, в котором нет файлов .ml.
Когда я создаю проект Dune, он не включает каталог, в который я помещаю тестовые файлы.
|-project
|-lib
|-test
|-test_files (* Not included in _build *)
test_input1.txt
test_input2.txt
tests.ml
Кажется, что многие разделы, например include_subdirs
, предписывают Dune искать модули, но похоже, что Dune будет игнорировать немодульные файлы. Это то, что происходит? Как мне обойти это?
Продолжая изучать документацию, я заставил это работать. В конечном итоге Dune пытается собрать пакеты, и чтобы обозначить неисполняемый файл как принадлежащий пакету, мы можем использовать раздел install.
Прежде чем изучить результаты теста, я не осознавал, что порядок строф имеет значение. Изначально у меня была строфа test
перед строфой install
, которая не удалась. Я понял, что это может иметь значение, только после того, как заметил, что вывод ошибок включает номера строк.
Мой окончательный файл dune
выглядел так:
(install
(files
(glob_files test_files/*.txt))
(section share))
(test
(name test_reader)
(libraries typecheck alcotest))
Затем в моем файле OCaml я смог найти файл по адресу test_files/filename.txt
.
Есть ли причина для отрицательного голосования?