Haskell IO Testing - PullRequest
       23

Haskell IO Testing

8 голосов
/ 31 октября 2009

Я пытался выяснить, существует ли уже принятый метод для тестирования файловых операций в Haskell, но мне еще предстоит найти какую-либо информацию, которая будет полезна для того, что я пытаюсь сделать.

Я пишу небольшую библиотеку, которая выполняет различные операции с файловой системой (рекурсивно просматривает каталог и возвращает список всех файлов; синхронизирует несколько каталогов, чтобы каждый каталог содержал одни и те же файлы, используя inode в качестве теста на равенство и жестких ссылок). .) и я хочу убедиться, что они действительно работают, но единственный способ проверить их - создать временный каталог с известной структурой и сравнить результаты от функций, выполняемых в этом временном каталоге, с известными результатами. , Дело в том, что я хотел бы получить как можно больше тестового покрытия, в то же время будучи в основном автоматизированным: я не хочу создавать структуру каталогов вручную.

Я искал google и hackage, но пакеты, которые я видел на hackage, не используют никакого тестирования - может быть, я просто выбрал неправильные - и все, что я найду в google, не имеет отношения к IO-тестированию.

Любая помощь будет оценена

Спасибо, Джеймс

Ответы [ 4 ]

2 голосов
/ 31 октября 2009

HUnit - обычная библиотека для тестов на основе ввода-вывода. Я не знаю набора свойств / комбинаторов для действий с файлами - это было бы полезно.

2 голосов
/ 31 октября 2009

Может быть, вы найдете способ заставить эту работать на вас.

EDIT:

пакеты, которые я видел на hackage, не используют никакого тестирования

Я нашел инфраструктуру для модульного тестирования для Haskell на Hackage. Включая эту платформу, возможно, вы могли бы использовать утверждения для проверки того, что требуемые файлы присутствуют в каталогах, которые вы хотите, чтобы они были, и они соответствовали своему назначению.

1 голос
/ 08 ноября 2009

Если вы хотите, в основном, автоматизировать тестирование монадического кода, вам может понадобиться Monadic QuickCheck . Вы можете записать свойства, которые, по вашему мнению, должны быть истинными, такие как

  • Если вы создадите файл с разрешением на чтение, можно будет открыть файл для чтения.

  • Если вы удалите файл, он не откроется.

  • Что бы вы еще ни думали о ...

QuickCheck будет генерировать случайные тесты.

1 голос
/ 31 октября 2009

Нет причин, по которым ваш тестовый код не может создать временный каталог и проверять его содержимое после запуска вашего нечистого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...