【发布时间】:2016-09-03 18:18:41
【问题描述】:
我尝试关注this guide,以便使用detailed-0.9 测试类型为Haskell 包编写一些测试。 cabal 文件是
Name: bar
Version: 1.0
License: BSD3
Cabal-Version: >= 1.10
Build-Type: Simple
Library
exposed-modules: Foo
build-depends: base >=4.9 && <4.10
default-language: Haskell2010
Test-Suite test-bar
type: detailed-0.9
test-module: Bar
build-depends: base, Cabal >= 1.9.2
default-language: Haskell2010
Bar.hs 是
module Bar ( tests ) where
import Distribution.TestSuite
tests :: IO [Test]
tests = return [ Test succeeds, Test fails ]
where
succeeds = TestInstance
{ run = return $ Finished Pass
, name = "succeeds"
, tags = []
, options = []
, setOption = \_ _ -> Right succeeds
}
fails = TestInstance
{ run = return $ Finished $ Fail "Always fails!"
, name = "fails"
, tags = []
, options = []
, setOption = \_ _ -> Right fails
}
但是,当我运行测试时
cabal configure --enable-tests
cabal build
cabal test
我明白了
Preprocessing test suite 'test-bar' for bar-1.0...
[1 of 1] Compiling Main ( dist/build/test-barStub/test-barStub-tmp/test-barStub.hs, dist/build/test-barStub/test-barStub-tmp/Main.dyn_o )
Linking dist/build/test-barStub/test-barStub ...
Running 1 test suites...
Test suite test-bar: RUNNING...
Prelude.read: no parse
this repository 的代码也会出现这种情况。
使用strace cabal test 我设法看到阴谋集团试图打开的最后一个文件是dist/test/cabal-test-1804289383846930886.log,它不存在。创建文件没有帮助。
detailed-0.9 测试类型仍然是实验性的吗?我应该改用exitcode-stdio-1.0 吗?
GHC 版本:8.0.1
阴谋集团版本:1.24.0.0
编辑:
即使我在Bar.hs 中设置tests = return [],错误仍然存在。
【问题讨论】:
-
您的代码(加上一个存根 Foo.hs)对我有用。我已经看到测试程序崩溃时会发生该错误。
-
我也无法重现。
-
这对我来说很好,使用相同的 ghc 和 cabal。您在构建之前尝试过
cabal clean吗? -
@Michael 是的,我尝试运行
cabal clean,但没有任何区别。是否有任何配置可能会干扰这一点?或者任何包裹?
标签: unit-testing haskell cabal