on master help sign in
Created tests and fixed isMember function
f4ee3e7noxx
src/Hakyll/Core/Store.hs+10−11
@@ -102,13 +102,13 @@ cacheLookup (Store _ (Just lru)) key = do
102
102
103
103
104--------------------------------------------------------------------------------
104--------------------------------------------------------------------------------
105−cacheIsMember :: Store -> String -> Bool
105+cacheIsMember :: Store -> String -> IO Bool
106−cacheIsMember (Store _ Nothing) _ = False
106+cacheIsMember (Store _ Nothing) _ = return False
107−cacheIsMember (Store _ (Just lru)) key =
107+cacheIsMember (Store _ (Just lru)) key = do
108− let res = Lru.lookup key lru in
108+ res <- Lru.lookup key lru
109− case Just res of
109+ case res of
110− Nothing -> False
110+ Nothing -> return False
111− _ -> True
111+ _ -> return True
112
112
113
113
114--------------------------------------------------------------------------------
114--------------------------------------------------------------------------------
@@ -165,10 +165,9 @@ get store identifier = do
165--------------------------------------------------------------------------------
165--------------------------------------------------------------------------------
166-- | Strict function
166-- | Strict function
167isMember :: Store -> [String] -> IO Bool
167isMember :: Store -> [String] -> IO Bool
168−isMember store identifier
168+isMember store identifier = do
169− | cacheIsMember store key = return True
169+ inCache <- cacheIsMember store key
170− | otherwise = doesFileExist path
170+ if inCache then return True else doesFileExist path
171−
172 where
171 where
173 key = hash identifier
172 key = hash identifier
174 path = storeDirectory store </> key
173 path = storeDirectory store </> key
tests/Hakyll/Core/Store/Tests.hs+16
@@ -26,6 +26,7 @@ tests = testGroup "Hakyll.Core.Store.Tests"
26 [ testProperty "simple get . set" simpleSetGet
26 [ testProperty "simple get . set" simpleSetGet
27 , testProperty "persistent get . set" persistentSetGet
27 , testProperty "persistent get . set" persistentSetGet
28 , testCase "WrongType get . set" wrongType
28 , testCase "WrongType get . set" wrongType
29+ , testCase "isMembertest . set" isMembertest
29 ]
30 ]
30
31
31
32
@@ -68,3 +69,18 @@ wrongType = do
68 t == typeOf (undefined :: String)
69 t == typeOf (undefined :: String)
69 _ -> False
70 _ -> False
70 cleanTestEnv
71 cleanTestEnv
72+
73+
74+--------------------------------------------------------------------------------
75+
76+isMembertest :: H.Assertion
77+isMembertest = do
78+ store <- newTestStore
79+ Store.set store ["foo", "bar"] ("qux" :: String)
80+ --value <- Store.get store ["foo", "bar"] :: IO (Store.Result Int)
81+ good <- Store.isMember store ["foo", "bar"]
82+
83+ bad <- Store.isMember store ["foo", "baz"]
84+ H.assert good
85+ H.assert (not bad)
86+ cleanTestEnv