Ash*_*ley 6 haskell cabal cabal-install
假设我有三个自己的包,AB&C,依赖于Hackage中的许多其他包.我正在使用cabal 1.18.
我像这样设置了沙箱:
cd /path/to/sandbox
cabal sandbox init
cabal sandbox add-source /path/to/A
cabal sandbox add-source /path/to/B
cabal sandbox add-source /path/to/C
Run Code Online (Sandbox Code Playgroud)
我想构建所有包,在我的包上运行所有测试套件,但不运行依赖包,显示完整的测试输出.最好的方法是什么?
cd /path/to/sandbox
cabal install --enable-tests A B C
Run Code Online (Sandbox Code Playgroud)
问题:
--show-details=always给cabal install.cabal install A先前做了,A将不会重建,测试将无法运行.cd /path/to/A
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox
cd /path/to/B
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox
cd /path/to/A
cabal configure --enable-tests
cabal test --show-details=always
cd /path/to/B
cabal configure --enable-tests
cabal test --show-details=always
cabal install C
Run Code Online (Sandbox Code Playgroud)
问题:
在沙箱中cabal.config,添加该行tests: True.
问题:
Cabal在这里真的缺少功能.我的计划是推广cabal,因此它对"当前包"的概念较少(或没有).现在很多命令都假设您在一个带有.cabal文件的目录中,并且您希望对该包执行操作.如您所见,对于大型多包装项目来说,这种情况并不常见.
我想是的阴谋采取对大多数命令,例如目标清单build,test,bench等,您可以从几个包通过运行测试
cabal test --show-details=always \
pkg-dir1:some-test1 pkg-dir1:some-test2 pkg-dir2
Run Code Online (Sandbox Code Playgroud)
(上面的例子表明,应该可以只指定包的某些部分.)
我意识到这对你现在没什么帮助,但至少你知道我们正朝着哪个方向前进.