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

我正在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 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。是的,我也不能复制。我一定是在没有考虑任何提交之前,将模块行添加到了规范中。我把这归因于大脑放屁。很抱歉浪费了你的时间。