{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TypeApplications #-} module Headroom.FileSupport.Haskell.HaddockSpec ( spec ) where import Headroom.Configuration.Types ( HeaderSyntax(..) , LicenseType(..) ) import Headroom.Data.Regex ( re ) import Headroom.Data.Text ( fromLines ) import Headroom.Embedded ( licenseTemplate ) import Headroom.FileSupport ( analyzeSourceCode , fileSupport ) import Headroom.FileSupport.Haskell.Haddock import Headroom.FileSupport.TemplateData ( HaddockOffsets(..) , TemplateData(..) ) import Headroom.FileSystem ( loadFile ) import Headroom.FileType.Types ( FileType(..) ) import Headroom.Template ( Template(..) ) import Headroom.Template.Mustache ( Mustache(..) ) import RIO import RIO.FilePath ( () ) import Test.Hspec spec :: Spec spec = do let codeSamples = "test-data" "code-samples" describe "extractOffsets" $ do it "extract offsets for selected fields of module header" $ do template <- parseTemplate @Mustache Nothing $ licenseTemplate BSD3 Haskell let syntax = BlockComment [re|^{-\||] [re|(? "haskell" "header.hs" let expected = HaddockModuleHeader { hmhCopyright = Just "(c) Some Guy, 2013\n Someone Else, 2014" , hmhLicense = Just "GPL-3" , hmhMaintainer = Just "sample@email.com" , hmhPortability = Just "POSIX" , hmhStability = Just "experimental" , hmhShortDesc = Just "Short description" , hmhLongDesc = Just "Here is a longer description of this module, containing some\n\ \commentary with @some markup@." } sample = analyzeSourceCode (fileSupport Haskell) raw syntax = BlockComment [re|^{-\||] [re|(?