Я бы хотел использовать библиотеку quickcheck Haskell, чтобы проверить код C. Самый простой способ - сделать foreign import
и написать свойство поверх получаемой функции haskell. Проблема в том, что если код C вызывает segfault или может привести к повреждению памяти, мои тесты либо сбой без вывода, либо что-то совершенно непредсказуемое.
Второй вариант - сделать простые исполняемые обертки над C-битами и выполнить их вне процесса тестирования через System.Process
. Излишне говорить, что для этого требуется много лесов и сериализации значений, но, с другой стороны, он может обрабатывать segfaults.
Есть ли способ сделать стратегию foreign import
безопасной как запуск внешнего процесса?