首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建测试套件时出错:“无法满足-package-id”

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

Stack Overflow用户
提问于 2014-05-22 10:05:51
回答 2查看 1.8K关注 0票数 8

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

代码语言:javascript
复制
-- 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

查看测试套件设置here的示例,我注意到他们将自己的包指定为依赖于构建的模块之一。因此,我也这么做了,这样我就可以为我的测试套件保留我的build-depends列表了。

然而,当我在命令行中尝试cabal repl test:tests时,我会得到以下错误:

代码语言:javascript
复制
<command line>: cannot satisfy -package-id HaskSplit-0.1.0.0-inplace

我不太确定我在这里错过了什么,有人能帮我吗?这里会发生循环依赖吗?还是我需要为构建依赖的包创建一个库实例来工作?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 11:54:27

build-depends部分只能包含库,而不能包含模块。我建议你在你的阴谋档案里增加一个图书馆。库的exposed-modules部分应该列出您的测试(或库的任何其他用户)可能需要引用的所有模块。

作为创建库的替代方法,您可以简单地将所需的模块添加到测试套件部分的其他模块中。不过,如果您想包含很多模块,我认为库方法更好。

票数 9
EN

Stack Overflow用户

发布于 2014-05-23 08:20:13

经过进一步的调整后,为了完整起见,我得到了以下内容:

代码语言:javascript
复制
-- 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:    RankNTypes
  build-depends:       base >=4.6 && <4.7,
                       resourcet >=1.1 && <1.2,
                       bytestring >=0.10 && <0.11,
                       conduit-extra >=1.1 && <1.2,
                       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,
                       random == 1.*,
                       HaskSplit
  hs-source-dirs:      src/exe
  default-language:    Haskell2010
  ghc-options:         -Wall -fno-warn-orphans

library
  Exposed-modules:     HaskSplit.Algorithm,
                       HaskSplit.Util,
                       FiniteField.GF256,
                       FiniteField.PGF256
  default-language:    Haskell2010
  hs-source-dirs:      src/lib
  build-depends:       base >=4.6 && <4.7,
                       vector >=0.10 && <0.11,
                       random == 1.*

test-suite tests
  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  hs-source-dirs:      tests
  main-is:             Test.hs
  other-extensions:    TemplateHaskell
  ghc-options:         -Wall -fno-warn-orphans
  build-depends:       base == 4.*,
                       QuickCheck >=2.6 && <2.7,
                       test-framework-quickcheck2 >= 0.3.0.3,
                       HaskSplit
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23803725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档