访问Haskell测试中的测试资源

时间:2015-05-26 05:44:01

标签: haskell integration-testing cabal

这可能是一个基本问题,但我已经谷歌搜索了一段时间......我有一个Cabal-ized Haskell项目,我正在为它编写集成测试。我希望能够在同一个仓库中包含我的项目的测试资源,并在测试中访问它们。例如,以下是我想要完成的几件事:

1)将虚拟数据库实例检入我的仓库,包括一个旋转数据库进程的shell脚本。我想编写一个Hspec集成测试,它可以旋转数据库进程,对它进行一些调用,然后将其关闭。所以我需要能够找到shell脚本,以便我可以使用System.Process.createProcess

2)签入配对"输入"和"输出"文件。我的测试应该处理每个输入文件,并将它们与相应的输出文件进行比较,以确保它们匹配。 (我已经读过" golden"但它似乎无法解决首先查找/读取输入文件的问题?)

简而言之,我怎样才能创建一个"资源"我的Haskell项目的根文件夹中的文件夹,并在测试中找到它的路径?

1 个答案:

答案 0 :(得分:2)

查看使用输入和输出文件的现有项目。

例如,使用haddock,源代码位于https://github.com/haskell/haddock。他们将测试文件放在文件夹(https://github.com/haskell/haddock/tree/master/html-test/ref)下,并在cabal文件(https://github.com/haskell/haddock/blob/master/haddock.cabal)中引用它们作为extra-source-files。然后测试代码(https://github.com/haskell/haddock/blob/master/html-test/run.lhs)使用一些CPP宏(__FILE__)来获取当前目录,然后可以解析相对于该文件夹的文件。