on master help sign in
Add testcase for #115
commitd993ebce58acee1e53ee5693743463c5c402919e authorJasper Van der Jeugt <m@jaspervdj.be> dateTue 26 Feb 2013, 19:20 (14 years ago) parentac527bd
4 files changed+59−2
src/Hakyll/Core/Provider/Metadata.hs+2 src/Hakyll/Core/Provider/MetadataCache.hs+2−2 tests/Hakyll/Core/Provider/Metadata/Tests.hs+53 tests/TestSuite.hs+2
src/Hakyll/Core/Provider/Metadata.hs+2
@@ -2,6 +2,8 @@
22-- | Internal module to parse metadata
33module Hakyll.Core.Provider.Metadata
44 ( loadMetadata
5+ , metadata
6+ , page
57 ) where
68
79
src/Hakyll/Core/Provider/MetadataCache.hs+2−2
@@ -55,8 +55,8 @@ load p r = do
5555 Store.Found _ -> return ()
5656 -- Not yet loaded
5757 _ -> do
58− (metadata, body) <- loadMetadata p r
59− Store.set store mdk metadata
58+ (md, body) <- loadMetadata p r
59+ Store.set store mdk md
6060 Store.set store bk body
6161 where
6262 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)
1111--------------------------------------------------------------------------------
1212import qualified Hakyll.Core.Dependencies.Tests
1313import qualified Hakyll.Core.Identifier.Tests
14+import qualified Hakyll.Core.Provider.Metadata.Tests
1415import qualified Hakyll.Core.Provider.Tests
1516import qualified Hakyll.Core.Routes.Tests
1617import qualified Hakyll.Core.Rules.Tests
@@ -30,6 +31,7 @@ main :: IO ()
3031main = defaultMain
3132 [ Hakyll.Core.Dependencies.Tests.tests
3233 , Hakyll.Core.Identifier.Tests.tests
34+ , Hakyll.Core.Provider.Metadata.Tests.tests
3335 , Hakyll.Core.Provider.Tests.tests
3436 , Hakyll.Core.Routes.Tests.tests
3537 , Hakyll.Core.Rules.Tests.tests