on master help sign in
Add testcase for #115
d993ebcJasper Van der Jeugt
src/Hakyll/Core/Provider/Metadata.hs+2
@@ -2,6 +2,8 @@
2-- | Internal module to parse metadata
2-- | Internal module to parse metadata
3module Hakyll.Core.Provider.Metadata
3module Hakyll.Core.Provider.Metadata
4 ( loadMetadata
4 ( loadMetadata
5+ , metadata
6+ , page
5 ) where
7 ) where
6
8
7
9
src/Hakyll/Core/Provider/MetadataCache.hs+2−2
@@ -55,8 +55,8 @@ load p r = do
55 Store.Found _ -> return ()
55 Store.Found _ -> return ()
56 -- Not yet loaded
56 -- Not yet loaded
57 _ -> do
57 _ -> do
58− (metadata, body) <- loadMetadata p r
58+ (md, body) <- loadMetadata p r
59− Store.set store mdk metadata
59+ Store.set store mdk md
60 Store.set store bk body
60 Store.set store bk body
61 where
61 where
62 store = providerStore p
62 store = providerStore p
tests/Hakyll/Core/Provider/Metadata/Tests.hsnew file+53
@@ -0,0 +1,53 @@
1+--------------------------------------------------------------------------------
2+module Hakyll.Core.Provider.Metadata.Tests
3+ ( tests
4+ ) where
5+
6+
7+--------------------------------------------------------------------------------
8+import Test.Framework (Test, testGroup)
9+import Test.HUnit (Assertion, (@=?))
10+import Text.Parsec as P
11+import Text.Parsec.String (Parser)
12+
13+
14+--------------------------------------------------------------------------------
15+import Hakyll.Core.Provider.Metadata
16+import TestSuite.Util
17+
18+
19+--------------------------------------------------------------------------------
20+tests :: Test
21+tests = testGroup "Hakyll.Core.Provider.Metadata.Tests" $
22+ fromAssertions "page" [testPage01, testPage02]
23+
24+
25+--------------------------------------------------------------------------------
26+testPage01 :: Assertion
27+testPage01 = testParse page ([("foo", "bar")], "qux\n")
28+ "---\n\
29+ \foo: bar\n\
30+ \---\n\
31+ \qux\n"
32+
33+
34+--------------------------------------------------------------------------------
35+testPage02 :: Assertion
36+testPage02 = testParse page
37+ ([("description", descr)], "Hello I am dog\n")
38+ "---\n\
39+ \description: A long description that would look better if it\n\
40+ \ spanned multiple lines and was indented\n\
41+ \---\n\
42+ \Hello I am dog\n"
43+ where
44+ descr =
45+ "A long description that would look better if it \
46+ \spanned multiple lines and was indented"
47+
48+
49+--------------------------------------------------------------------------------
50+testParse :: (Eq a, Show a) => Parser a -> a -> String -> Assertion
51+testParse parser expected input = case P.parse parser "<inline>" input of
52+ Left err -> error $ show err
53+ Right x -> expected @=? x
tests/TestSuite.hs+2
@@ -11,6 +11,7 @@ import Test.Framework (defaultMain)
11--------------------------------------------------------------------------------
11--------------------------------------------------------------------------------
12import qualified Hakyll.Core.Dependencies.Tests
12import qualified Hakyll.Core.Dependencies.Tests
13import qualified Hakyll.Core.Identifier.Tests
13import qualified Hakyll.Core.Identifier.Tests
14+import qualified Hakyll.Core.Provider.Metadata.Tests
14import qualified Hakyll.Core.Provider.Tests
15import qualified Hakyll.Core.Provider.Tests
15import qualified Hakyll.Core.Routes.Tests
16import qualified Hakyll.Core.Routes.Tests
16import qualified Hakyll.Core.Rules.Tests
17import qualified Hakyll.Core.Rules.Tests
@@ -30,6 +31,7 @@ main :: IO ()
30main = defaultMain
31main = defaultMain
31 [ Hakyll.Core.Dependencies.Tests.tests
32 [ Hakyll.Core.Dependencies.Tests.tests
32 , Hakyll.Core.Identifier.Tests.tests
33 , Hakyll.Core.Identifier.Tests.tests
34+ , Hakyll.Core.Provider.Metadata.Tests.tests
33 , Hakyll.Core.Provider.Tests.tests
35 , Hakyll.Core.Provider.Tests.tests
34 , Hakyll.Core.Routes.Tests.tests
36 , Hakyll.Core.Routes.Tests.tests
35 , Hakyll.Core.Rules.Tests.tests
37 , Hakyll.Core.Rules.Tests.tests