Ответ 1
Фон
Итак, здесь сделка, документация на сайте кабала - "будущая документация", то есть не все эти функции реализованы и выпущены еще. Cabal-install 0.14.0 поставляется с интерфейсом detailed-0.9
, который соответствует версии, указанной в документах (detailed-1.0
), но пока я не сталкивался с какими-либо проблемами, связанными с этим. Если у вас есть версия Haskell Platform версии 2011.4, которая поставляется с cabal-install 0.10.2, вы не сможете использовать интерфейс detailed-0.9
. Вам нужно будет перейти на платформу Haskell Platform 2012.2, которая поставляется с cabal-install 0.14.0. Вы также можете просто обновить инсталляцию cabal-install отдельно, что я и сделал, потому что на Fedora 17 платформа Haskell доступна только в 2011 году.
Установка
В документации здесь вы увидите пример использования интерфейса detailed-0.9
с QuickCheck. В нем упоминаются некоторые пакеты с интерфейсами HUnit, QuickCheck1 и QuickCheck2, но только пакет для QuickCheck2 доступен для взлома. Если вам нужны пакеты для остальных фреймворков, вам понадобится использовать darcs (VCS), чтобы загрузить их из этого местоположения. Команда, которую вы хотите запустить для интерфейса HUnit, такова: darcs get http://community.haskell.org/~ttuegel/cabal-test-hunit/
. Возможно, вам придется настроить файл .cabal, чтобы его можно было построить, в частности, он полагается на ghc 3.*
и cabal 1.10
. Я изменил это на мои версии (ghc 4.*
и cabal 1.14
), и он был создан отлично.
Тестирование
После того, как вы построили интерфейс, вам нужно сделать что-то в своем тестовом модуле, чтобы Cabal мог его запустить. В частности, вам нужно импортировать как Distribution.TestSuite
, так и Distribution.TestSuite.HUnit
. После этого вам нужно будет преобразовать ваши тесты HUnit в Cabal Tests, используя функцию, предусмотренную в интерфейсе HUnit. Здесь соответствующие строки кода:
import qualified Distribution.TestSuite as Cabal
import qualified Distribution.TestSuite.HUnit as CabalHUnit
tests = map (\(x,y) -> CabalHUnit.test x y) [("Login tests", loginTests)]
Что это! Вы должны иметь возможность запускать cabal configure --enable-tests && cabal build && cabal test
и видеть, что ваш тест модулей проходит (или сбой).
Изменить
Отредактировано, чтобы уточнить, что интерфейс detailed-0.9
включен в cabal-install 0.14.0, а не detailed-1.0
.