Haskell堆栈未生成测试可执行文件 背景
我正在Haskell中构建一个日志文件解析器。我正在使用堆栈来构建它。运行Haskell堆栈未生成测试可执行文件 背景,haskell,cabal,haskell-stack,Haskell,Cabal,Haskell Stack,我正在Haskell中构建一个日志文件解析器。我正在使用堆栈来构建它。运行stack build命令可以很好地工作,我的项目可以编译。但是,运行堆栈测试会产生以下错误: parser-test: executable not found 我在错误消息上面看到了以下警告,但我不知道如何避免它引用的重定向 Warning: output was redirected with -o, but no output will be generated because there is no Main
stack build
命令可以很好地工作,我的项目可以编译。但是,运行堆栈测试会产生以下错误:
parser-test: executable not found
我在错误消息上面看到了以下警告,但我不知道如何避免它引用的重定向
Warning: output was redirected with -o, but no output will be generated because there is no Main module.
相关文件
我还没有编写任何测试,因此测试文件是由stacknew
创建的。我的阴谋集团档案如下:
...
category: Executable
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
library
hs-source-dirs: src
exposed-modules: LogParser
build-depends: base >= 4.7 && < 5
, attoparsec
, bytestring
, old-locale
, time
default-language: Haskell2010
executable parser-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, attoparsec
, bytestring
, old-locale
, time
, parser
default-language: Haskell2010
test-suite parser-test
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
build-depends: base
, attoparsec
, bytestring
, hspec
, hspec-attoparsec
, old-locale
, time
, parser
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010
source-repository head
type: git
...
。。。
类别:可执行文件
构建类型:简单
--额外源文件:
阴谋集团版本:>=1.10
图书馆
hs源目录:src
公开模块:LogParser
构建取决于:基础>=4.7&<5
,attopassec
,bytestring
,旧址
时间
默认语言:Haskell 2010
可执行分析器
hs源目录:应用程序
main是:main.hs
ghc选项:-threaded-rtsopts-with-rtsopts=-N
构建取决于:基础
,attopassec
,bytestring
,旧址
时间
,解析器
默认语言:Haskell 2010
测试套件解析器测试
类型:exitcode-stdio-1.0
hs源目录:测试
主要是:规格hs
构建取决于:基础
,attopassec
,bytestring
,hspec
,hspec
,旧址
时间
,解析器
ghc选项:-threaded-rtsopts-with-rtsopts=-N
默认语言:Haskell 2010
源存储库负责人
类型:git
...
我想我遗漏了什么,但我找不到我遗漏的东西被记录在哪里
期望的行为
我会看到。中概述的
测试套件尚未实现的消息。模板中测试/Spec.hs
文件的内容是:
main :: IO ()
main = putStrLn "Test suite not yet implemented"
您可以在中的中看到此内容
我不确定模块解析器spec where
行来自何处(如中所述),但它不是模板的一部分。在我的系统上,stack new bar&&cd bar&&stack test
成功
至于Main
模块需求背后的原因:它来自Cabal库,据我所知,它是由于其他编译器Cabal支持的限制而添加的。换句话说,GHC技术上允许编译此代码,但Cabal不会传递这些参数以保持与其他编译器兼容。似乎我可以通过将测试模块重命名为“Main”来解决此问题,即使我已经有了“Main”模块。对我来说似乎有点违反直觉,所以我要提出一个问题,看看是否有人同意。我怀疑他们会同意。main的意思是
is。是的,我也不能复制。我一定是在没有考虑任何提交之前,将模块行添加到了规范中。我把这归因于大脑放屁。很抱歉浪费了你的时间。