packages feed

streamly-posix-0.1.0.0: test/Main.hs

{-# LANGUAGE CPP               #-}
{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE OverloadedStrings #-}

module Main where

import           Data.Foldable
import           Data.List                      ( sortBy )
import           Streamly.External.Posix.DirStream
import           System.FilePath
import           System.IO
import           System.IO.Temp
import           System.Posix.Directory as Posix
import           System.Posix.Foreign
import           Test.Hspec



checkDirContents :: FilePath -> IO ()
checkDirContents fp = do
  let f1 = fp </> "f1"
  let f2 = fp </> "f2"
  let f3 = fp </> "f3"
  let f4 = fp </> "f4"
  for_ [f1, f2, f3, f4] $ \f -> openFile f ReadWriteMode
  ds       <- Posix.openDirStream fp
  contents <- fmap (sortBy (\(_, y) (_, z) -> compare y z)) $ dirContents ds
  contents
    `shouldBe` [ (DirType 8, "f1")
               , (DirType 8, "f2")
               , (DirType 8, "f3")
               , (DirType 8, "f4")
               ]




main :: IO ()
main = hspec $ do
  describe "Streamly.External.FileSystem.DirStream.Posix" $ do
    it "dirContents" $ withSystemTempDirectory "y" checkDirContents