应该从其他*包中堆叠repl加载测试模块吗?

时间:2017-08-15 15:00:14

标签: haskell haskell-stack

我有一个项目可以提取两个本地包。我的stack.yaml有:

packages:
- '.'
- '../creatur-wains'
- '../creatur-wains-test-utils'

creatur-wainscreatur-wains-test-utils都定义了一个名为ALife.Creatur.Wain.TestUtils的模块,但在creatur-wains中,它只是测试代码的一部分,而不是库的一部分。当我使用ghci时,这不是问题。我可以加载这两个包,只显示TestUtilscreatur-wains-test-utils的版本。

但是,Stack似乎也从creatur-wains引入了测试模块,因此我收到以下错误:

$ stack repl
The following GHC options are incompatible with GHCi and have not been passed to it: -Werror -threaded
Configuring GHCi with the following packages: creatur-dvector-wains, creatur-wains-test-utils, creatur-wains

* * * * * * * *
The following modules are present in multiple packages:
 * ALife.Creatur.Wain.TestUtils (in creatur-wains, creatur-wains-test-utils)
* * * * * * * *

Not attempting to start ghci due to these duplicate modules.
Use --no-load to try to start it anyway, without loading any modules (but these are still likely to cause errors)

我可以使用--no-load解决这个问题,并逐个添加软件包,但这有点单调乏味。这是stack repl的理想行为,还是一个bug?

1 个答案:

答案 0 :(得分:1)

来自stack ghci文档(https://docs.haskellstack.org/en/stable/ghci/):

  

与堆栈构建类似,默认情况下是加载项目中所有库和可执行文件的ghci。

因此,要加载一个包,您需要执行stack ghci creatur-wains