我想用 Haskell 的 quickcheck 库测试一些 C 代码。最简单的方法似乎是 foreign import
在生成的 haskell 函数之上执行并编写一个属性。这样做的问题是,如果 C 代码导致段错误或设法破坏内存,我的测试要么崩溃而没有输出,要么做一些完全不可预测的事情。
第二种选择是在 C 位上制作简单的可执行包装器,并在测试过程之外通过System.Process
. 不用说,这样做需要大量的脚手架和序列化值,但另一方面,它可以处理段错误。
有什么方法可以使foreign import
策略像运行外部进程一样安全?