packages feed

lentil-0.1.6.0: test/Lentil/FileSpec.hs

module Lentil.FileSpec where

import Test.Hspec

import Lentil.File

-- File tests

main :: IO ()
main = hspec spec

bas :: String
bas = "test/test-files/test-proj/"

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 "doesn't crash on wrong file" $
      findIssues [] [bas ++ "zxczd"] [] >>= \fiss ->
      length fiss `shouldBe` 0
    it "does search outside $PWD" $
      findIssues [] [bas] []                    >>= \fiss  ->
      findIssues [] [bas ++ "../test-proj/"] [] >>= \fiss' ->
      length fiss `shouldBe` length fiss'