on master help sign in
Fix tests in master
2c6239bJasper Van der Jeugt
.ghci+1−1
@@ -1 +1 @@
1−:set -isrc -itests
1+:set -isrc -itests -idist/build/autogen
tests/Template.hs+17−24
@@ -16,6 +16,7 @@ import Test.QuickCheck
16
16
17import Text.Hakyll.Context (Context (..))
17import Text.Hakyll.Context (Context (..))
18import Text.Hakyll.Internal.Template
18import Text.Hakyll.Internal.Template
19+import Text.Hakyll.Internal.Template.Template
19
20
20-- Template test group.
21-- Template test group.
21templateGroup = testGroup "Template"
22templateGroup = testGroup "Template"
@@ -26,33 +27,25 @@ templateGroup = testGroup "Template"
26 ]
27 ]
27
28
28-- | Generate arbitrary templates from a given length.
29-- | Generate arbitrary templates from a given length.
29−arbitraryTemplate :: Int -> Gen Template
30+--
30−arbitraryTemplate 0 = return End
31+instance Arbitrary TemplateElement where
31−arbitraryTemplate length' = oneof [ do chunk <- chunk'
32+ arbitrary = oneof
33+ -- Random chunk
32− Chunk chunk <$> template'
34+ [ Chunk <$> do
33− , do key <- key'
34− Identifier key <$> template'
35− , EscapeCharacter <$> template'
36− ]
37− where
38− template' = arbitraryTemplate (length' - 1)
39− -- Generate keys.
40− key' = do l <- choose (5, 10)
41− replicateM l $ choose ('a', 'z')
42− -- Generate non-empty chunks.
43− chunk' = do string <- arbitrary
35+ string <- arbitrary
44− let sanitized = filter (/= '$') string
36+ let sanitized = filter (/= '$') string
45− return $ if null sanitized then "foo"
37+ return $ if null sanitized then "foo" else sanitized
46− else sanitized
38+ -- Random identifier
39+ , fmap Identifier $
40+ choose (5, 10) >>= flip replicateM (choose ('a', 'z'))
41+ -- Escape character
42+ , return EscapeCharacter
43+ ]
47
44
48-- | Make @Template@ testable.
45-- | Make @Template@ testable.
49instance Arbitrary Template where
46instance Arbitrary Template where
50− arbitrary = choose (0, 20) >>= arbitraryTemplate
47+ arbitrary = Template <$> arbitrary
51−
48+ shrink = map Template . shrink . unTemplate
52− shrink (Chunk chunk template) = [template, Chunk chunk End]
53− shrink (Identifier key template) = [template, Identifier key End]
54− shrink (EscapeCharacter template) = [template, EscapeCharacter End]
55− shrink End = []
56
49
57-- Test encoding/decoding of templates.
50-- Test encoding/decoding of templates.
58prop_template_encode_id :: Template -> Bool
51prop_template_encode_id :: Template -> Bool