Допустим, у меня есть три моих собственных пакета, A B и C, с зависимостями от множества дополнительных пакетов в Hackage. Я использую Cabal 1.18.
- C зависит от A и B.
- B зависит от A.
- У A и B есть тестовые наборы.
Я настроил песочницу так:
cd /path/to/sandbox
cabal sandbox init
cabal sandbox add-source /path/to/A
cabal sandbox add-source /path/to/B
cabal sandbox add-source /path/to/C
Я хочу собрать все пакеты, запустить все тестовые наборы для своих пакетов, но не для пакетов зависимостей, показывая полный тестовый результат. Как лучше всего это сделать?
Опция 1
cd /path/to/sandbox
cabal install --enable-tests A B C
Проблемы:
- Невозможно передать
--show-details=always
cabal install
. - Выходные данные теста скрыты в файле журнала и не отображаются.
- Если пользователь сделал
cabal install A
раньше, A не будет перестроен, и тесты не запустятся.
Вариант 2
cd /path/to/A
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox
cd /path/to/B
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox
cd /path/to/A
cabal configure --enable-tests
cabal test --show-details=always
cd /path/to/B
cabal configure --enable-tests
cabal test --show-details=always
cabal install C
Проблемы:
- Это приводит к ненужной перестройке библиотек A и B.
Вариант 3
В песочнице cabal.config
добавьте строчку tests: True
.
Проблемы:
- Это приведет к запуску тестов для всех зависимых пакетов от Hackage, что очень медленно и в некоторых случаях дает сбой.
cabal test
. - person tibbe   schedule 13.08.2014