haskell - 仅在 cabal 测试套件中包含数据文件

标签 haskell cabal

我有一些仅属于我的测试程序的数据文件,并且与主库一起分发会令人困惑。

不幸的是,.cabal data-files field仅适用于整个 cabal 文件,而不是像 test-suite 这样的单个部分.如果我尝试在测试套件节中使用它,我会得到:

Warning: ssh.cabal: Unknown fields: data-files (line 71)

有没有一种自然的方法可以将这些文件与我的测试程序相关联,以便它们仅在 --enable-tests 时被复制?指定?

如果没有更好的方法,我可能会使用 Template Haskell 将它们嵌入到可执行文件中,然后在运行时再次将它们写出来或类似的东西,但感觉很丑陋。

最佳答案

没有 Cabal 属性允许您将数据文件与测试套件(或构建的任何非全局节)相关联。

此问题的常见解决方案是在 extra-source-files 中声明这些文件。属性。该属性也是全局的,它确保列出的文件包含在发布 tarball 中,以便测试套件在运行时可以找到它们。不像 data-files ,但是,extra-source-files没有安装——这可能是你想要的,因为你的测试套件也没有安装。因此这些文件在构建(和测试套件运行)期间可用,但它们不会占用安装空间。

构建驱动程序,如 cabal-installstack将执行测试套件,当前工作目录指向项目的顶级目录,即包含项目的 Cabal 文件的目录。因此,如果您有一个位于 test/my-data-file.txt 的数据文件,那么您的测试套件可以使用该路径访问该文件。

关于haskell - 仅在 cabal 测试套件中包含数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29361413/

相关文章:

haskell - 是否有与 Data.Text 的 Show 类型类等效的东西?

haskell - 如何在 Haskell 中调用 void C 函数

haskell - 为什么 Haskell 模式必须是线性的?

haskell - 用 Darcs 安装 gtk2hs

linux - 安装 svgcairo 时的依赖库

haskell - 使用 Comonad Fix 组合器

haskell - 为什么 cabal 不能动态构建 mighttpd2?

haskell - 包括嵌入 Cabal 的文本文件

haskell - 为什么 cabal 不能保留同一个包的多个版本?

performance - 如何重构这个 Haskell 随机字节输出器?