lentil-0.1.9.0: test/Lentil/FileSpec.hs
module Lentil.FileSpec where
import Test.Hspec
import Lentil.File
-- File tests
main :: IO ()
main = hspec spec
fld :: String
fld = "test/test-files/test-proj/"
bas :: String
bas = fld ++ "base-case/"
spec :: Spec
spec = do
describe "findIssues" $ do
it "scans directories to find issues" $
findIssues [] [bas ++ ""] [] >>= \fiss ->
length fiss `shouldBe` 5
it "allows to add specific folders" $
findIssues [] [bas ++ ""] [] >>= \fiss ->
findIssues [] [bas ++ "fold-a/", bas ++ "fold-b",
bas ++ "fold-c"] [] >>= \fiss2 ->
length fiss `shouldBe` length fiss2
it "accepts filenames instead of dirs, too" $
findIssues [] [bas ++ "fold-a/foo1.hs"] [] >>= \fiss ->
length fiss `shouldBe` 1
-- it "doesn't duplicate issues" $
-- findIssues [bas ++ "", bas ++ ""] [] >>= \fiss ->
-- length fiss `shouldBe` 5
it "excludes some folders" $
findIssues [] [bas ++ ""] [bas ++ "fold-c/"] >>= \fiss ->
length fiss `shouldBe` 2
it "excludes files" $
findIssues [] [bas ++ ""] [bas ++ "fold-a/foo1.hs"] >>= \fiss ->
length fiss `shouldBe` 4
it "excludes subfolders" $
findIssues [] [bas ++ "fold-c/"]
[bas ++ "fold-c/sub-fold/"] >>= \fiss ->
length fiss `shouldBe` 1
it "exludes . and _ folders" $
findIssues [] [fld ++ "dot-folders/"] [] >>= \fiss ->
length fiss `shouldBe` 1
it "doesn't crash on wrong file" $
findIssues [] [bas ++ "zxczd"] [] >>= \fiss ->
length fiss `shouldBe` 0
it "does search outside $PWD" $
findIssues [] [bas] [] >>= \fiss ->
findIssues [] [bas ++ "../base-case/"] [] >>= \fiss' ->
length fiss `shouldBe` length fiss'