packages feed

find-conduit-0.1.0: test/main.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Conduit
import Control.Arrow
import Data.Conduit.Find
import Test.Hspec

main :: IO ()
main = hspec $ do
    describe "basic tests" $ do
        it "file passes a test" $ do
            res <- test (regular >>> not_ executable) "README.md"
            res `shouldBe` True

        it "file fails a test" $ do
            res <- test (not_ regular) "README.md"
            res `shouldBe` False

        it "file fails another test" $ do
            res <- test (regular >>> executable) "README.md"
            res `shouldBe` False

        it "finds files" $ do
            xs <- runResourceT $
                find "."
                    (    ignoreVcs
                     >>> prune "./dist"
                     >>> glob "*.hs"
                     >>> not_ (glob "Setup*")
                     >>> regular
                     >>> not_ executable
                    )
                    $$ sinkList

            "./Data/Conduit/Find.hs" `elem` xs `shouldBe` True
            "./dist/setup-config" `elem` xs `shouldBe` False
            "./Setup.hs" `elem` xs `shouldBe` False
            "./.git/config" `elem` xs `shouldBe` False

        it "finds files with a different ordering" $ do
            xs <- runResourceT $
                find "."
                    (    ignoreVcs
                     >>> glob "*.hs"
                     >>> not_ (glob "Setup*")
                     >>> prune "./dist"
                     >>> regular
                     >>> not_ executable
                    )
                    $$ sinkList

            "./Data/Conduit/Find.hs" `elem` xs `shouldBe` True
            "./dist/setup-config" `elem` xs `shouldBe` False
            "./Setup.hs" `elem` xs `shouldBe` False
            "./.git/config" `elem` xs `shouldBe` False

        it "finds files using a pre-pass filter" $ do
            xs <- runResourceT $
                findWithPreFilter "." True
                    (    ignoreVcs
                     >>> glob "*.hs"
                     >>> not_ (glob "Setup*")
                     >>> prune "./dist"
                    )
                    (    regular
                     >>> not_ executable
                    )
                    =$ mapC getFilePath $$ sinkList

            "./Data/Conduit/Find.hs" `elem` xs `shouldBe` True
            "./dist/setup-config" `elem` xs `shouldBe` False
            "./Setup.hs" `elem` xs `shouldBe` False
            "./.git/config" `elem` xs `shouldBe` False