Haskell 如何为Cabal/Stack包指定源文件,而不仅仅是hs源目录/源目录?
我有一个Haskell项目,它是使用Stack(因此是Cabal)构建的。 现在我有src/directory和tests/directory,但我想将测试和源文件混合在一起,这意味着所有内容都将转到src/directory 为此,我需要将Haskell 如何为Cabal/Stack包指定源文件,而不仅仅是hs源目录/源目录?,haskell,testing,cabal,haskell-stack,Haskell,Testing,Cabal,Haskell Stack,我有一个Haskell项目,它是使用Stack(因此是Cabal)构建的。 现在我有src/directory和tests/directory,但我想将测试和源文件混合在一起,这意味着所有内容都将转到src/directory 为此,我需要将testsbuildinfo源文件定义为src/中扩展名为.test.hs的文件。 然而,似乎定义源文件的唯一选择是堆栈中的source dirs或cabal中的hs source dirs,这意味着我必须将src作为source dirs,这似乎是错误的,
tests
buildinfo源文件定义为src/中扩展名为.test.hs的文件。
然而,似乎定义源文件的唯一选择是堆栈中的source dirs
或cabal中的hs source dirs
,这意味着我必须将src
作为source dirs
,这似乎是错误的,因为它也捕获了正常的源文件
这是我的软件包的哪一部分。yaml:
tests:
myapp-test:
main: Main.hs
source-dirs: test
...
我希望它是smth,比如:
tests:
myapp-test:
main: Main.hs
source-files: src/**/*.test.hs
...
有没有类似的选项,比如源文件,或者其他方法来实现这一点?谢谢 分离
src
和测试dir是惯例,但不是必须的。
hs源目录
默认为
阴谋集团自己找到所有的源文件。
否则会有额外的源文件
您可以在模块级别进行选择:公开模块
,其他模块
。
您可以将它们用于库和可执行文件
在您的.cabal
文件中:
- 每个可执行文件使用一个
可执行文件
条目。
main是带有模块main的文件,其中…
- 每个库使用一个
库
- 每个测试应用程序使用一个
测试套件
条目
类型是必需的(例如类型:exitcode-stdio-1.0
)
main是
是测试文件
ghc选项:-main为
- 在测试文件中还有一个
阴谋集团的用法:
cabal new-build
cabal new-test [<which test>]
cabal new-run <file without path>
阴谋集团新构建
阴谋集团新试验[]
阴谋集团新运行
深入distnewstyle
你会发现
x
目录下的可执行文件
- 测试可执行文件位于
t
目录下
- 库
.so
文件位于l
目录下
链接:
- (阴谋集团文件)[
- 示例项目:
(hspec示例)[
(美味阴谋集团示例测试)[
- 阴谋集团来源:
*.cabal
,阴谋集团/cabal/doc/buildinfo字段参考。rst
我认为没有一种简单的方法可以做到这一点。我建议您坚持将源代码和测试保存在单独目录中的惯例。如果您想将一小部分包含的模块和测试打包在一起,只需创建另一个库!您能说一下为什么要将文件混合在一个目录中吗?也许我们可以建议一种替代方法,即解决您的问题。@DanielWagner感谢您尝试找到解决方案!我最近一直在使用javascript,并且习惯于将测试文件放在源文件旁边。我以前也在项目中工作过,这些文件被拆分到不同的目录结构中,这样我就可以对两者进行比较。我更喜欢将它们放在源文件旁边iles,因为它更容易找到和打开->我不需要浏览两个并行目录结构。我肯定有优点和缺点,但我发现这是我喜欢/更喜欢的smth。但我很想听到不同的意见。
cabal new-build
cabal new-test [<which test>]
cabal new-run <file without path>