1{-# OPTIONS_GHC -fno-warn-name-shadowing #-} 2module Hpack.DefaultsSpec (spec) where 3 4import Helper 5import System.Directory 6 7import Hpack.Syntax.Defaults 8import Hpack.Defaults 9 10spec :: Spec 11spec = do 12 describe "ensure" $ do 13 it "fails when local file does not exist" $ do 14 cwd <- getCurrentDirectory 15 let expected = Left $ "Invalid value for \"defaults\"! File " ++ (cwd </> "foo") ++ " does not exist!" 16 ensure undefined cwd (DefaultsLocal $ Local "foo") `shouldReturn` expected 17 18 describe "ensureFile" $ do 19 let 20 file = "foo" 21 url = "https://raw.githubusercontent.com/sol/hpack/master/Setup.lhs" 22 23 it "downloads file if missing" $ do 24 pending 25 expected <- readFile "Setup.lhs" 26 inTempDirectory $ do 27 Found <- ensureFile file url 28 readFile file `shouldReturn` expected 29 30 context "with existing file" $ do 31 it "does nothing" $ do 32 let expected = "contents of existing file" 33 inTempDirectory $ do 34 writeFile file expected 35 Found <- ensureFile file url 36 readFile file `shouldReturn` expected 37 38 context "with 404" $ do 39 let 40 url = "https://raw.githubusercontent.com/sol/hpack/master/Setup.foo" 41 42 it "does not create any files" $ do 43 pending 44 inTempDirectory $ do 45 NotFound <- ensureFile file url 46 doesFileExist file `shouldReturn` False 47