2015-04-27 1 views
3

Это время от времени меня беспокоит, в основном, если я создаю test-suite в конфигурации кабала, я добавляю папки src в тестовые комплекты hs-source-dirs и повторяю все зависимости в build-depends. Типичный проект может выглядеть следующим образом:Должен ли я повторять все зависимости в тестовой конфигурации?

-- in file "foo.cabal" 
library 
    build-depends: a, b, c 
    exposed-modules: Foo, Bar 
    hs-source-dirs: src 

test-suite tests 
    build-depends: foo, a, b, c 
    hs-source-dirs: test 

Другой вариант включает src в тестовых наборов hs-source-dirs, а также.

В обоих случаях мне требуется указать все зависимости сборки в тестовом примере, насколько я знаю. Есть ли способ обойти это?

+2

я бы подумал, что если вы 'строить-depend' на' Foo', йо u нужны только те зависимости сборки, которые фактически используются в тестах 'test /', что может быть меньше. –

+0

@JoachimBreitner Я не думаю, что это так. Мне просто пришлось добавить все зависимости к тестовому набору, вызвав этот вопрос. – fho

+0

Я тоже считаю, что это должно сработать - это была проблема с 'cabal repl' хотя (https://github.com/haskell/cabal/issues/2032) – Carsten

ответ

1

Он должен работать как, но есть reported bug, когда вы используете его с cabal repl

В целом, кажется, работа с cabal test, но если вы пытаетесь загрузить тест-файл в cabal repl вы можете получить сообщение об ошибке, как это:

Could not find module ‘XYZ’ 
    It is a member of the hidden package ‘XZY-[ver]’. 
    Perhaps you need to add ‘XYZ’ to the build-depends in your .cabal file. 
    Use -v to see a list of the files searched for. 

Так что сейчас это может быть хорошей идеей, чтобы действительно скопировать зависимости, но, надеюсь, это будет разрешится в ближайшее время