【发布时间】:2019-02-28 19:54:02
【问题描述】:
我有一个使用 Stack(因此是 Cabal)构建的 Haskell 项目。 现在我有 src/ 目录和 tests/ 目录,但是我想将测试与源文件混合在一起,这意味着一切都将进入 src/ 目录。
为此,我需要将我的tests build-info 源文件定义为 src/ 中具有 .test.hs 扩展名的文件。
但是,似乎定义源文件的唯一选择是堆栈中的source-dirs 或cabal 中的hs-source-dirs,这意味着我必须将src 设置为source-dirs,这似乎是错误的,因为它也在捕获正常的源文件那么。
这是我的 package.yaml 的一部分:
tests:
myapp-test:
main: Main.hs
source-dirs: test
...
虽然我希望它是这样的:
tests:
myapp-test:
main: Main.hs
source-files: src/**/*.test.hs
...
有没有类似的选项,比如源文件,或任何其他方式来做到这一点?谢谢!
【问题讨论】:
-
我认为没有简单的方法可以做到这一点。我建议您遵守将源代码和测试保存在不同目录中的惯例。如果您想将一小部分包含的模块和测试打包在一起,只需创建另一个库!
-
你能说一下为什么要将文件混合在一个目录中吗?也许我们可以提出一个替代方案来解决您的顾虑。
-
@DanielWagner 感谢您尝试寻找解决方案!我最近在 javascript 方面做了很多工作,并且约定将测试文件放在源文件旁边。我之前也在项目中工作过,这些项目被分成不同的目录结构,所以我可以比较两者。当它们靠近源文件时,我更喜欢它们,因为它更容易找到和打开它们 -> 我不需要导航两个并行目录结构。我确信有利有弊,但我发现这是smth我喜欢/喜欢。但我很想听听不同的意见。
标签: haskell testing cabal haskell-stack