【问题标题】:Including data files only in cabal test suites仅在 cabal 测试套件中包含数据文件
【发布时间】:2015-03-31 05:47:10
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: haskell cabal


    【解决方案1】:

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

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

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

    【讨论】:

    • 这不是意味着测试套件二进制文件必须猜测源代码所在的位置吗?
    • Ganesh,我编辑了我的回复以解决测试数据文件的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多