Почему наборы тестов и исполняемые файлы по-разному определяются в Cabal? - PullRequest
0 голосов
/ 18 ноября 2018

Меня смущает разница между тем, как hs-source-dirs и other-modules указаны для test-suite и executable компонентов пакета Haskell.

Поскольку, по-видимому, необходимо заново указать модули и исходный каталог моего пакета для executable, тогда как для test:

это не нужно.
name:                   my-pkg

library
    exposed-modules:    My.Pkg,
                        My.Pkg.A
    other-modules:      My.Pkg.B 
    -- ...

executable myexe
    main-is:            myexe.hs
    hs-source-dirs:     ., cli
    other-modules:      My.Pkg,
                        My.Pkg.A,
                        My.Pkg.B
    build-depends:      base >=4.8.1.0 && <=4.12.0.0,
                        optparse-applicative >=0.11.0.2,
                        ansi-terminal >=0.6.2.3,
                        my-pkg

test-suite my-pkg-check
    type:               exitcode-stdio-1.0
    hs-source-dirs:     test
    main-is:            Check.hs
    build-depends:      base >=4.8.1.0 && <=4.12.0.0,
                        QuickCheck >=2.8,
                        my-pkg

Все ли это необходимо? Опустили что-то, что позволило бы мне просто иметь

executable myexe
    main-is:            myexe.hs
    hs-source-dirs:     cli
    build-depends:      base >=4.8.1.0 && <=4.12.0.0,
                        optparse-applicative >=0.11.0.2,
                        ansi-terminal >=0.6.2.3,
                        my-pkg

для executable, как я могу для test-suite?


Частичная структура каталогов для выше:

├── My
│   ├── Pkg
│   │   ├── A.hs
│   │   └── B.hs
│   └── Pkg.hs
├── cli
│   └── enigma.hs
├── my-pkg.cabal
├── stack.yaml
├── test
│   ├── Check.hs
│   └── Test.hs
...