1

我正在研究proto-lens#400调整 Haskell 代码生成器。在其中一项测试中,我想验证某些 API尚未构建。具体来说,我想确保某种类型的程序不会成功进行类型检查。我也有一个类似的程序,它改变了一个标识符,它应该编译,以防止打破测试的错字。阅读扩展和使用 GHC 作为库我设法让我的测试编写了一个小文件,并使用 GHC 作为库对其进行编译。

但我需要测试发出的代码来加载其他一些模块。特别是该项目的代码生成器的输出及其具有传递依赖关系的运行时环境。我充其量对提供构建时间系统的 stack 和 hpack 有一个非常粗略的了解。我知道我可以将依赖项添加到某些package.yaml文件以使它们可用于单个测试,但我不知道如何从作为运行测试的一部分设置的 GHC 会话中访问此类依赖项。我想我可能会在某些环境变量中找到一些可用的数据,但我也相信这种方法可能没有记录,并且容易在没有警告的情况下中断。

我怎样才能让测试用例将 GHC 用作库并让它访问用表示的依赖项package.yaml?或者,我可以使用常规测试用例以外的其他构造来表达具有依赖关系的文件,但检查该文件是否无法编译?

4

1 回答 1

0

我不知道这是否适用于您,因为有太多细节在我脑海中浮现,但测试类型错误的一种方法是构建您的测试套件-fdefer-type-errors并在运行时捕获异常(类型TypeError) .

于 2020-11-20T17:44:54.227 回答