0

私のMain.hsファイルはコマンドライン引数を取ります:

module Main (toLowerStr, Result(..), grade, main) where

...

grade :: [String] -> String -> String -> (Bool, Result, [Highlight])
    grade dictWords correctAnswer studentAnswer =
            ...

...

main :: IO ()
main = do
        args <- getArgs
        dict <- readFile $ args !! 0
        ...

私がテストしようとするときを除いて、これはうまくいきます。私のテストファイルは

module Testing where

import Main
import Test.Hspec

main :: IO ()
main = do
        dict <- readFile "dict.txt"
        let dictWords = map toLowerStr $ lines dict
        hspec $ do
        describe "Validate passing answers" $ do
                it "Match should be verified exactly" $ do
                        grade dictWords "house" "house"
                              `shouldBe` (True, Perfect, [])

それでも私が実行するcabal testと、それはまだ私に与えます

Preprocessing test suite 'tests' for grade-0.1.0.0...
[2 of 2] Compiling Testing          ( src/HSpecTests.hs, dist/build/tests/tests-tmp/Testing.o )
Linking dist/build/tests/tests ...
Running 1 test suites...
Test suite tests: RUNNING...
tests: Prelude.(!!): index too large

Test suite tests: FAIL

argsinへの呼び出しが原因で失敗していると確信しています。Main.main実行可能ファイル自体が正常に動作し、他の場所で使用されていないことがわかり!!ます。

テストを実行するにはどうすればよいですか?

編集: でパターン マッチングを使用Main.hs:

main :: IO ()
main = do
        [filename, correctString, studentString] <- getArgs
        ...

そしてエラーは今です

[1 of 2] Compiling Main             ( src/Main.hs, dist/build/tests/tests-tmp/Main.o )
Linking dist/build/tests/tests ...
Running 1 test suites...
Test suite tests: RUNNING...
tests: user error (Pattern match failure in do expression at src/Main.hs:141:9-48)
Test suite tests: FAIL

EDIT 2grade.cabal :私のファイル全体

-- Initial grade.cabal generated by cabal init.  For further documentation,
--  see http://haskell.org/cabal/users-guide/

name:                grade
version:             0.1.0.0
-- synopsis:            
-- description:         
license-file:        LICENSE
author:              Amos Ng <amosng@cmu.edu>
maintainer:          Amos Ng <amosng@cmu.edu>
-- copyright:           
category:            Language
build-type:          Simple
cabal-version:       >=1.8

executable grade
  main-is:             Main.hs
  -- other-modules:       
  build-depends:       base, split ==0.2.*
  hs-source-dirs:      src

test-suite tests
  ghc-options:         -Wall
  type: exitcode-stdio-1.0
  main-is:             HSpecTests.hs
  other-modules:       Main
  build-depends:       base, split ==0.2.*, hspec ==1.11.*
  hs-source-dirs:      src
4

1 に答える 1