¿Por qué la prueba de cabal repl carga módulos fuente?
Estoy intentando depurar pruebas con cabal repl y observando un comportamiento extraño.
cabal repl funciona para el código de la aplicación.
cabal repl
pero no para el conjunto de pruebas:
cabal repl tests
falla:
Loaded GHCi configuration from /home/user/myapp/.ghci
<no location="" info="">: warning: [-Wmissing-home-modules]
These modules are needed for compilation but not listed in your .cabal file's other-modules:
MyApp.X
MyApp.Y
...
src/MyApp/X.hs:8:1: error:
Could not load module ‘Relude’
It is a member of the hidden package ‘relude-1.0.0.1’.
myapp.cabal:
name: myapp
version: 0.5.0
library
exposed-modules:
MyApp.X
MyApp.Y
hs-source-dirs:
src
build-depends:
relude >=1.0.0.1
test-suite tests
type: exitcode-stdio-1.0
main-is: Driver.hs
other-modules:
MyApp.Test.X
hs-source-dirs:
test
ghc-options: -rtsopts -threaded
build-depends:
HUnit
, base
, myapp
cabal –version
cabal-install version 3.4.0.0
compiled using version 3.4.0.0 of the Cabal library
Por alguna razón, cabal repl carga módulos desde la carpeta src y no desde la de prueba (test). El conjunto de pruebas no depende de la dependencia de relude. Está oculto para el conjunto de pruebas y, por supuesto, ghc falla.
Una solución alternativa recomendada por un colega:
“`
:set -package bytestring
:set -package tasty
:set -package envy
:set -package tasty-hunit
:set -itest
:set -package HUnit
import Tasty (defaultMain) — esto puede fallar, ignórelo
“`
davy.ai
Este contorno le permite cargar los módulos desde la carpeta de pruebas e ignorar la dependencia faltante de “relude”.