Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 使用Cabal而不是diff和make的简单单元测试_Haskell_Cabal - Fatal编程技术网

Haskell 使用Cabal而不是diff和make的简单单元测试

Haskell 使用Cabal而不是diff和make的简单单元测试,haskell,cabal,Haskell,Cabal,我想重写Haskell应用程序的shell测试代码,以便只使用Haskell和Cabal。(为了便于携带) 当前的测试模式如下所示 make -> binary -> ok or fail make test -> diff $(binary test-in) test-supposed-out -> 我想要点像这样的 cabal build -> binary

我想重写Haskell应用程序的shell测试代码,以便只使用Haskell和Cabal。(为了便于携带)

当前的测试模式如下所示

make      ->    binary                                     ->  ok or fail
make test ->    diff $(binary test-in) test-supposed-out   ->
我想要点像这样的

cabal build  ->  binary                                             ->  ok or fail
cabal test   ->  ...testing with test-in and test-supposed-out...   ->
请问最简单的方法是什么

谢谢。

是一个简单而通用的框架,可以在其中运行各种测试。(我主要使用it测试,如果您还没有使用,我强烈建议您也检查一下。)

你所询问的特定类型的测试被称为(至少在Tasty中是这样)黄金测试。例如,如果要测试的程序

module ComplicatedProc where

import System.IO
import System.Environment (getArgs)

complicatedProc :: String -> Handle -> IO ()
complicatedProc input outHandle = do
   hPutStr outHandle $ drop 37 input ++ take 46 input

main :: IO ()
main = do
  [inpFp] <- getArgs
  input <- readFile inpFp
  complicatedProc input stdout
使用
.cabal
文件,如

cabal-version:       >=1.10

name:                compli-algo
version:             5.7.6.8
build-type:          Simple
-- ...

library
  exposed-modules:     ComplicatedProc
  build-depends:       base
  default-language:    Haskell2010

test-suite compli-algo-goldentest
  main-is:         golden.hs
  type:            exitcode-stdio-1.0
  build-depends:       base
                       , compli-algo
                       , tasty >=1.4 && <1.5
                       , tasty-golden >=2.3 && <2.4
  hs-source-dirs:   test
阴谋集团版本:>=1.10
姓名:康普利阿尔戈
版本:5.7.6.8
构建类型:简单
-- ...
图书馆
暴露模块:复杂的DPROC
构建取决于:基础
默认语言:Haskell 2010
测试套件compli algo goldentest
主要是:golden.hs
类型:exitcode-stdio-1.0
构建取决于:基础
,compli-algo
,美味>=1.4&&=2.3&&
cabal-version:       >=1.10

name:                compli-algo
version:             5.7.6.8
build-type:          Simple
-- ...

library
  exposed-modules:     ComplicatedProc
  build-depends:       base
  default-language:    Haskell2010

test-suite compli-algo-goldentest
  main-is:         golden.hs
  type:            exitcode-stdio-1.0
  build-depends:       base
                       , compli-algo
                       , tasty >=1.4 && <1.5
                       , tasty-golden >=2.3 && <2.4
  hs-source-dirs:   test