2013-12-18 1 views
1

ОБНОВЛЕНИЕ После того, как я добавил зависимость haskeline, испытания прошли.Испытания проходят в GHCI, но сбой в испытаниях в кабине

Похоже, что cabal test не может найти свои тестовые примеры, хотя cabal build работает нормально. Ниже приведен вывод cabal test (который не работает), а затем вывод выполнения тестового исполняемого файла main в GHCI (который проходит).

cabal test 
Running 1 test suites... 
Test suite test-one: RUNNING... 
test-one: <stdin>: hGetLine: end of file 
Test suite test-one: FAIL 
Test suite logged to: dist/test/one-0.1.0.0-test-one.log 
0 of 1 test suites (0 of 1 test cases) passed. 

main 
Cases: 3 Tried: 3 Errors: 0 Failures: 0 
Counts {cases = 3, tried = 3, errors = 0, failures = 0} 

Вот тестовый код, который производит эти выходы:

module Tests (
    main 
) where 

import Data.Char 
import Control.Monad 
import System.IO 
import System.Directory 
import Test.HUnit 
import Test.QuickCheck 
import Main (four) 


test1 = TestCase $ assertEqual "test upCase" "FOO" (map toUpper "foo") 
test2 = TestCase $ assertEqual "testing that the result is 4" 4 4 
test3 = TestCase $ assertEqual "testing that 4 is 4" four 4 

tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2, TestLabel "test3" test3] 

main = runTestTT $ tests 

Что я должен изменить в угоду междусобойчик?

Мой .cabal файл содержит:

executable one 
    main-is:    Main.hs 
    other-modules:  Utils 
    build-depends:  base ==4.6.*, mongoDB ==1.4.*, mtl ==2.1.*, directory ==1.2.*, text ==0.11.*, HUnit ==1.2.*, QuickCheck ==2.6.* 
    hs-source-dirs:  src, tests 

Test-Suite test-one 
    type:    exitcode-stdio-1.0 
    main-is:   Tests.hs 
    hs-source-dirs: src, tests 
    build-depends:  base ==4.6.*, mongoDB ==1.4.*, mtl ==2.1.*, directory ==1.2.*, text ==0.11.*, HUnit ==1.2.*, QuickCheck ==2.6.* 
+0

Вы указали «Test-Suite» в своем .cabal файле? – Zeta

+0

Да, у меня есть ... –

+0

Пожалуйста, покажите нам .cabal файл. –

ответ

2

Вы должны переименовать модуль Tests к Main, иначе тест исполняемый файл не будет построен. Цитируя Haskell Report:

Haskell программа представляет собой набор модулей, один из которых, по конвенции, должны быть названы Main и должен экспортировать значение main.

В противном случае я не вижу ничего явно неправильного. Вот рабочий пример, основанный на вашем коде: https://gist.github.com/23Skidoo/8019225

Возможно, вы используете старую версию cabal? Рассмотрите возможность обновления до 1,18.

 Смежные вопросы

  • Нет связанных вопросов^_^