创建测试套件时出错:"无法满足-package-id"

Jac*_*ang 8 haskell cabal

我正在尝试HaskSplit在我的.cabal配置中为我的项目创建一个测试套件:

-- Initial HaskSplit.cabal generated by cabal init.  For further 
-- documentation, see http://haskell.org/cabal/users-guide/

name:                HaskSplit
version:             0.1.0.0
synopsis:            Haskell Implementation of Shamir's Secret Sharing Scheme
-- description:         
license:             MIT
license-file:        LICENSE
author:              
maintainer:          
-- copyright:           
category:            Security
build-type:          Simple
-- extra-source-files:  
cabal-version:       >=1.10

executable HaskSplit
  main-is:             Main.hs
  default-language:    Haskell2010
  -- other-modules:       
  other-extensions:    TemplateHaskell, NoImplicitPrelude, RankNTypes, OverloadedStrings
  build-depends:       base >=4.6 && <4.7,
                       resourcet >=1.1 && <1.2,
                       bytestring >=0.10 && <0.11,
                       conduit-extra >=1.1 && <1.2,
                       vector >=0.10 && <0.11,
                       conduit >=1.1 && <1.2,
                       conduit-combinators >=0.2 && <0.3,
                       mono-traversable >=0.5 && <0.6,
                       safe >=0.3 && <0.4,
                       transformers >=0.3 && <0.4,
                       filepath >= 1.3,
                       directory >=1.2,
                       Glob >= 0.7.4,
                       errors >= 1.4,
                       optparse-applicative >= 0.8
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:         -Wall -fno-warn-orphans

test-suite tests
  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  hs-source-dirs:      tests
  main-is:             Test.hs
  ghc-options:         -Wall -fno-warn-orphans
  build-depends:       base == 4.*,
                       QuickCheck >=2.6 && <2.7,
                       test-framework-quickcheck2 >= 0.3.0.3,
                       HaskSplit
Run Code Online (Sandbox Code Playgroud)

查看示例测试套件安装在这里,我注意到他们指定自己的包作为构建-取决于模块之一.因此我做了同样的事情,所以我可以保留build-depends我的测试套件列表.

但是当我cabal repl test:tests在命令行中尝试时,我收到以下错误:

<command line>: cannot satisfy -package-id HaskSplit-0.1.0.0-inplace
Run Code Online (Sandbox Code Playgroud)

我不太清楚我在这里缺少什么,有人能帮助我吗?它周围是否发生了循环依赖?或者我是否需要为构建创建我的包的库实例 - 依赖于工作?

谢谢!

mhw*_*bat 9

build-depends部分只能包含,而不能包含模块.我建议你在你的cabal文件中添加一个库.该exposed-modules图书馆的部分应列出所有的测试(或库中的任何其他用户)可能需要引用模块.

作为创建库的替代方法,您只需将所需的模块添加到测试套件部分的其他模块部分即可.但是,如果你想要包含很多模块,我认为库方法更好.

  • 抓一点.这个[问答](http://stackoverflow.com/questions/10163604/how-to-reduce-duplication-in-the-build-depends-fields-of-a-cabal-file)似乎回答了我的问题. (2认同)