неправильная конфигурация клики для тестов

Мой файл .cabal содержит следующую конфигурацию hspec:

-- The name of the package.
name:                MyModule

version:             0.1.0.0

cabal-version:       >=1.10
...
test-suite my-tests
  ghc-options:         -Wall -Werror
  cpp-options:         -DTEST
  default-extensions:  OverloadedStrings
  type:                exitcode-stdio-1.0
  main-is:             HSpecTests.hs
  hs-source-dirs:      tests
  build-depends:       MyModule, base >= 4.8 && < 4.9, containers >= 0.5 && <0.6, split >= 0.2 && < 0.3, hspec
  default-language:    Haskell2010

Моя структура каталогов выглядит следующим образом:

MyProject
     | - src
          | - Main.hs
          | - Other.hs
          | - tests
             | -HSpecTests.hs
     | - dist
     | - MyProj.cabal

когда я запускаю cabal build, мой исходный код успешно строится в исполняемый файл ./dist/build/myproj/myproj.

cabal build затем терпит неудачу с:

cabal: can't find source for HSpecTests in
dist/build/my-tests/my-tests-tmp, tests

Проверка каталога build показывает, что каталог my-tests отсутствует.

изменение hs-source-dirs на src/tests дает:

cabal: can't find source for HSpecTests in 
dist/build/my-tests/my-tests-tmp, src/tests

При перемещении всех тестов на верхний уровень в root/tests и изменении файла .cabal на hs-source-dirs: tests получается:

<command line>: cannot satisfy -package-id MyModule-0.1.0.0-inplace
    (use -v for more information)

Как я неправильно настроил это?


person Abraham P    schedule 16.01.2016    source источник


Ответы (2)


Ваш hs-source-dirs неверен:

 hs-source-dirs:      tests

Учитывая, что путь HSpecTests - это src/tests/HSpecTests.hs, он должен быть

 hs-source-dirs:      src/tests

Однако имейте в виду, что tests обычно находятся в папке верхнего уровня:

MyProject
     | - src
          | - Main.hs
          | - Other.hs
     | - tests
          | -HSpecTests.hs
     | - dist
     | - MyProj.cabal
person Zeta    schedule 16.01.2016
comment
изменение hs-source-dirs на src/tests приводит к сообщению: cabal: не удается найти источник для HSpecTests в dist/build/my-tests/my-tests-tmp, src/tests - person Abraham P; 16.01.2016

Было две ошибки:

1) (спасибо @Zeta за то, что помогли мне с моей файловой структурой), тесты должны были находиться в каталоге тестов на корневом уровне.

2) Как описано здесь: Ошибка при создании наборов тестов: не может удовлетворить -package-id мои тесты не могли зависеть от исполняемого файла и требовали создания библиотеки

person Abraham P    schedule 16.01.2016