«модуль не может быть найден локально» при запуске подробного теста 0.9 с Haskell Stack - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть проект на Haskell с набором тестов, использующим detailed-0.9.Я могу правильно запустить тест с cabal, но с stack я получаю ошибки.exitcode-stdio-1.0 комплекты тестов работают нормально.

MWE

Ниже приведен минимальный рабочий пример, содержащий оба типа комплектов тестов.Полный репозиторий доступен здесь .

stack-test-detail.cabal

name: stack-test-detailed
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.20

test-suite exitcode
  type: exitcode-stdio-1.0
  main-is: Exitcode.hs
  other-modules: MyModule
  build-depends: base >=4.10
  hs-source-dirs: src testsuite
  default-language: Haskell2010

test-suite detailed
  type: detailed-0.9
  test-module: Detailed
  other-modules: MyModule
  build-depends: base >=4.10, Cabal >=1.20
  hs-source-dirs: src testsuite
  default-language: Haskell2010

src / MyModule.hs

module MyModule where

myFunction :: Int
myFunction = 1

testsuite / Exitcode.hs

import MyModule (myFunction)
import System.Exit (exitSuccess, exitFailure)

main :: IO ()
main =
  if myFunction == 1
  then exitSuccess
  else exitFailure

testsuite / подробный. Hs

module Detailed where

import MyModule (myFunction)
import Distribution.TestSuite

tests :: IO [Test]
tests = return
  [ Test $ TestInstance
    { run = return $ Finished $ if myFunction == 1 then Pass else Fail "not equal 1"
    , name = "my test"
    , Distribution.TestSuite.tags = []
    , options = []
    , setOption = \opt val -> Left "options not supported"
    }
  ]

stack.yaml

resolver: lts-11.22

Выход

cabal

Все работает нормально:

$ cabal test exitcode
Preprocessing test suite 'exitcode' for stack-test-detailed-0.1.0.0..
Building test suite 'exitcode' for stack-test-detailed-0.1.0.0..
Running 1 test suites...
Test suite exitcode: RUNNING...
Test suite exitcode: PASS
Test suite logged to: dist/test/stack-test-detailed-0.1.0.0-exitcode.log
1 of 1 test suites (1 of 1 test cases) passed.
$ cabal test detailed
Preprocessing test suite 'detailed' for stack-test-detailed-0.1.0.0..
Building test suite 'detailed' for stack-test-detailed-0.1.0.0..
[1 of 1] Compiling Main             ( dist/build/detailedStub/detailedStub-tmp/detailedStub.hs, dist/build/detailedStub/detailedStub-tmp/Main.o )
Linking dist/build/detailedStub/detailedStub ...
Running 1 test suites...
Test suite detailed: RUNNING...
Test suite detailed: PASS
Test suite logged to: dist/test/stack-test-detailed-0.1.0.0-detailed.log
1 of 1 test suites (1 of 1 test cases) passed.

стек

Работает тест Exitcode:

$ stack test :exitcode
stack-test-detailed-0.1.0.0: build (test)
Preprocessing test suite 'exitcode' for stack-test-detailed-0.1.0.0..
Building test suite 'exitcode' for stack-test-detailed-0.1.0.0..
stack-test-detailed-0.1.0.0: test (suite: exitcode)


stack-test-detailed-0.1.0.0: Test suite exitcode passed
Completed 2 action(s).

Не удается скомпилировать подробный тест:

$ stack test :detailed
stack-test-detailed-0.1.0.0: build (test)
Preprocessing test suite 'detailed' for stack-test-detailed-0.1.0.0..
Building test suite 'detailed' for stack-test-detailed-0.1.0.0..

<no location info>: error:
    module ‘MyModule’ cannot be found locally

Progress 1/2

--  While building custom Setup.hs for package stack-test-detailed-0.1.0.0 using:
      /Users/john/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_2.0.1.0_ghc-8.2.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-2.0.1.0 build test:detailed --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
    Process exited with code: ExitFailure 1

Посмотрев вокруг, я понимаю, что detailed-0.9как-то не круто, и люди, кажется, сразу бросают это.Но это надлежащим образом задокументировано и действительно работает с cabal, поэтому я не понимаю, почему stack не может с ним работать.

1 Ответ

0 голосов
/ 25 февраля 2019

Обновление

Кажется, что это на самом деле ошибка в стеке, о которой уже сообщалось здесь и исправлено здесь (хотя исправление недоступно в последней версиирелиз еще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...