在 Cabal 测试套件中查找我的可执行文件

kin*_*ini 5 testing haskell cabal

我正在尝试为构建可执行文件的 cabal 项目编写测试套件。我希望套件中的测试运行该特定的可执行文件,但我不知道在哪里可以找到它(因为我的测试可能是从某个未知位置的沙箱中运行的)。

Cabal 在调用我的测试套件时应该知道我的项目的可执行文件在哪里。我的测试模块/程序有什么方法可以从 Cabal 收集这些信息和其他类似信息,也许是使用新的detailed-1.0测试框架?

Ste*_*ehl 3

您可以在 cabal 文件中包含一个“神奇”模块来查询与项目相关的路径。

name: myproject

library

  other-modules:       
    Paths_myproject
Run Code Online (Sandbox Code Playgroud)

该模块 ( import Paths_myproject) 导出几个FilePath值,可用于查询 Cabal 在安装项目时使用的各种路径。

Paths_myproject.getBinDir        
Paths_myproject.getDataDir       
Paths_myproject.getDataFileName  
Paths_myproject.getLibDir        
Paths_myproject.getLibexecDir    
Paths_myproject.getSysconfDir    
Paths_myproject.version
Run Code Online (Sandbox Code Playgroud)