【问题标题】:cabal misconfiguration for testscabal 测试配置错误
【发布时间】:2016-01-16 18:16:22
【问题描述】:

我的.cabal 文件包含以下 hspec 配置:

-- The name of the package.
name:                MyModule

version:             0.1.0.0

cabal-version:       >=1.10
...
test-suite my-tests
  ghc-options:         -Wall -Werror
  cpp-options:         -DTEST
  default-extensions:  OverloadedStrings
  type:                exitcode-stdio-1.0
  main-is:             HSpecTests.hs
  hs-source-dirs:      tests
  build-depends:       MyModule, base >= 4.8 && < 4.9, containers >= 0.5 && <0.6, split >= 0.2 && < 0.3, hspec
  default-language:    Haskell2010

我的目录结构如下:

MyProject
     | - src
          | - Main.hs
          | - Other.hs
          | - tests
             | -HSpecTests.hs
     | - dist
     | - MyProj.cabal

当我运行 cabal build 时,我的源代码成功构建为可执行文件 ./dist/build/myproj/myproj

cabal build 然后失败:

cabal: can't find source for HSpecTests in
dist/build/my-tests/my-tests-tmp, tests

检查build 目录显示my-tests 目录丢失。

hs-source-dirs 更改为src/tests 产生:

cabal: can't find source for HSpecTests in 
dist/build/my-tests/my-tests-tmp, src/tests

将所有测试移至 root/tests 下的顶层,并将 .cabal 文件更改为 hs-source-dirs: tests 时:

<command line>: cannot satisfy -package-id MyModule-0.1.0.0-inplace
    (use -v for more information)

我怎么配置错了?

【问题讨论】:

    标签: haskell cabal hspec


    【解决方案1】:

    您的hs-source-dirs 错误:

     hs-source-dirs:      tests
    

    鉴于HSpecTests的路径是src/tests/HSpecTests.hs,应该是

     hs-source-dirs:      src/tests
    

    但是,请记住,tests 通常位于顶级文件夹中:

    MyProject
         | - src
              | - Main.hs
              | - Other.hs
         | - tests
              | -HSpecTests.hs
         | - dist
         | - MyProj.cabal
    

    【讨论】:

    • 将 hs-source-dirs 更改为 src/tests 会产生消息:cabal: can't find source for HSpecTests in dist/build/my-tests/my-tests-tmp, src/tests
    【解决方案2】:

    有两件事不对:

    1) (感谢@Zeta 让我了解我的文件结构),测试需要位于根级别的测试目录中

    2) 如此处所述:Error while creating test suites: "cannot satisfy -package-id" 我的测试不能依赖于可执行文件,需要创建库

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 1970-01-01
      • 2019-08-28
      • 2013-07-03
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多