我有一些数据文件,这些文件只属于我的测试程序,与主库一起分发可能会让人感到困惑。
不幸的是, field只适用于整个阴谋文件,而不是像test-suite那样的一个部分。如果我尝试在测试套件中使用它,我只会得到:
Warning: ssh.cabal: Unknown fields: data-files (line 71)是否有一种自然的方法将这些文件与我的测试程序相关联,以便仅在指定--enable-tests时才复制它们?
如果没有更好的方法,我可能会使用模板Haskell将它们嵌入到可执行文件中,然后在运行时再次写出它们,或者类似的东西,但是感觉很难看。
发布于 2015-11-27 10:27:58
没有Cabal属性允许您将数据文件与测试套件(或构建的任何非全局节)关联起来。
这个问题的常见解决方案是在extra-source-files属性中声明这些文件。该属性也是全局的,它确保所列出的文件包含在发行版tarball中,以便测试套件在运行时能够找到它们。但是,与data-files不同的是,extra-source-files没有安装--这可能是您想要的,因为您的测试套件也没有安装。因此,在构建(和测试套件运行)期间,这些文件是可用的,但它们在安装过程中不会占用空间。
像cabal-install和stack这样的构建驱动程序将执行测试套件,当前的工作目录指向项目的顶层目录,即包含项目的Cabal文件的目录。因此,如果您在test/my-data-file.txt上有一个数据文件,那么您的测试套件就可以使用该路径访问该文件。
https://stackoverflow.com/questions/29361413
复制相似问题