Я пытаюсь понять причину, по которой тестовый файл, содержащий модульные тесты, который определен как модуль, не работает при запуске с stack build --test
.
Скажем, с помощью простого тестового модуля, определенного с нуля:
stack new test-module
cd test-module
vim package.yaml # remove "executables" section, add "hspec" as tests dependency
Следуя инструкциям "начало работы" из документации Hspec, я изменил такие файлы, как:
Шаг 1: Опишите желаемое поведение
-- file test/Spec.hs
module LibSpec where
import Test.Hspec
import Lib
main :: IO ()
main = hspec $ do
describe "divides" $ do
it "returns True when the first number divides the second" $
2 `divides` 4 `shouldBe` True
Шаг 2: Напишите немного кода
-- file src/Lib.hs
module Lib (divides) where
divides :: Integer -> Integer -> Bool
divides d n = rem n d == 0
Запуск stack build --test
выдает следующую ошибку:
<no location info>: error:
output was redirected with -o, but no output will be generated
because there is no Main module.
Когда я комментирую строку «определение модуля» из файла test/Spec.hs
, сборка завершается успешно, и модульный тест проходит:
-- file test/Spec.hs
-- Notice the next line is commented out:
-- module LibSpec where
import Test.Hspec
import Lib
main :: IO ()
main = hspec $ do
describe "divides" $ do
it "returns True when the first number divides the second" $
2 `divides` 4 `shouldBe` True
Это связано с Hspec или со стеком? Или, может быть, я упускаю что-то очевидное?