tasty-autocollect-0.4.2: test/Test/Tasty/AutoCollect/ModuleTypeTest.hs
{- AUTOCOLLECT.TEST -}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Test.Tasty.AutoCollect.ModuleTypeTest (
{- AUTOCOLLECT.TEST.export -}
) where
import Data.Text qualified as Text
import Test.Predicates
import Test.Predicates.HUnit
import Test.Predicates.QuickCheck
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
import Test.Tasty.AutoCollect.Config
import Test.Tasty.AutoCollect.ModuleType
import TestUtils.QuickCheck
test = testCase "parseModuleType finds first comment" $ do
parseModuleType (Text.unlines [test, main]) @?= Just ModuleTest
parseModuleType (Text.unlines [main, test]) @?~ just ($(qADT 'ModuleMain) anything)
where
main = "{- AUTOCOLLECT.MAIN -}"
test = "{- AUTOCOLLECT.TEST -}"
test_prop :: Property
test_prop "parseModuleType parses MAIN case-insensitive" =
forAll (genMixedCase "{- AUTOCOLLECT.MAIN -}") $ \main ->
parseModuleType main `satisfies` just ($(qADT 'ModuleMain) anything)
test_prop :: Property
test_prop "parseModuleType parses TEST case-insensitive" =
forAll (genMixedCase "{- AUTOCOLLECT.TEST -}") $ \test ->
parseModuleType test === Just ModuleTest
test = testCase "parseModuleType parses configuration for main modules" $ do
parseModuleType "{- AUTOCOLLECT.MAIN suite_name = foo -}"
@?~ just ($(qADT 'ModuleMain) $ cfgSuiteName `with` eq (Just $ Just "foo"))
parseModuleType "{- AUTOCOLLECT.MAIN\nsuite_name = foo\n-}"
@?~ just ($(qADT 'ModuleMain) $ cfgSuiteName `with` eq (Just $ Just "foo"))