blob: 91350863d39ffaf8cb33329ea39fcbe64df6899d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP #-}
module Hakyll.Web.Pandoc.Biblio.Tests
( tests
) where
--------------------------------------------------------------------------------
import System.FilePath ((</>))
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.Golden (goldenVsString)
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as LBS
--------------------------------------------------------------------------------
import Hakyll
import Hakyll.Core.Runtime
import Hakyll.Web.Pandoc.Biblio
import qualified Hakyll.Core.Logger as Logger
import TestSuite.Util
--------------------------------------------------------------------------------
tests :: TestTree
tests = testGroup "Hakyll.Web.Pandoc.Biblio.Tests" $
[ goldenTest01
]
--------------------------------------------------------------------------------
goldenTestsDataDir :: FilePath
goldenTestsDataDir = "tests/data/biblio"
--------------------------------------------------------------------------------
goldenTest01 :: TestTree
goldenTest01 =
goldenVsString
"biblio01"
#if MIN_VERSION_pandoc(2,11,3)
(goldenTestsDataDir </> "biblio01.golden")
#else
(goldenTestsDataDir </> "biblio01-pre-pandoc-2.11.3.golden")
#endif
(do
-- Code lifted from https://github.com/jaspervdj/hakyll-citeproc-example.
logger <- Logger.new Logger.Error
let config = testConfiguration { providerDirectory = goldenTestsDataDir }
_ <- run config logger $ do
let myPandocBiblioCompiler = do
csl <- load "chicago.csl"
bib <- load "refs.bib"
getResourceBody >>=
readPandocBiblio defaultHakyllReaderOptions csl bib >>=
return . writePandoc
match "default.html" $ compile templateCompiler
match "chicago.csl" $ compile cslCompiler
match "refs.bib" $ compile biblioCompiler
match "page.markdown" $ do
route $ setExtension "html"
compile $
myPandocBiblioCompiler >>=
loadAndApplyTemplate "default.html" defaultContext
output <- fmap LBS.fromStrict $ B.readFile $
destinationDirectory testConfiguration </> "page.html"
cleanTestEnv
return output)
|