es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
“`

Tags:  ,

Answer

Comments are closed.