1module TestPrimDocs where 2 3import Prelude 4 5import Data.List (sort) 6import Control.Exception (evaluate) 7import Control.DeepSeq (force) 8import qualified Data.Map as Map 9import qualified Data.Text as Text 10import qualified Language.PureScript as P 11import qualified Language.PureScript.Docs as D 12 13import Test.Hspec 14 15spec :: Spec 16spec = do 17 it "there are no bottoms hiding in primModules" $ do 18 _ <- evaluate (force D.primModules) 19 return () 20 21 it "all Prim modules are fully documented" $ do 22 let actualPrimNames = 23 -- note that prim type classes are listed in P.primTypes 24 filter (not . Text.any (== '$')) . map (P.runProperName . P.disqualify . fst) $ Map.toList 25 ( P.primTypes <> 26 P.primBooleanTypes <> 27 P.primCoerceTypes <> 28 P.primOrderingTypes <> 29 P.primRowTypes <> 30 P.primRowListTypes <> 31 P.primTypeErrorTypes <> 32 P.primSymbolTypes ) 33 let documentedPrimNames = 34 map D.declTitle (concatMap D.modDeclarations D.primModules) 35 36 sort documentedPrimNames `shouldBe` sort actualPrimNames 37