Skip to content

Commit

Permalink
Improved usage of guards for path selection in test suite
Browse files Browse the repository at this point in the history
  • Loading branch information
mmhat committed Jun 5, 2024
1 parent eb4bc64 commit 782b57e
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 16 deletions.
3 changes: 1 addition & 2 deletions dhall/tests/Dhall/Test/Format.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import Dhall.Parser (Header (..))
import Dhall.Pretty (CharacterSet (..))
import Test.Tasty (TestTree)

import qualified Control.Monad as Monad
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified Dhall.Core as Core
Expand All @@ -27,7 +26,7 @@ getTests = do

let skip = [ "./tests/format/asciiA.dhall" ]

Monad.guard (path `notElem` skip)
path `Test.Util.pathNotIn` skip

return path

Expand Down
10 changes: 5 additions & 5 deletions dhall/tests/Dhall/Test/Import.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
module Dhall.Test.Import where

import Control.Exception (SomeException)
import Data.Text (Text, isSuffixOf)
import Data.Text (Text)
import Data.Void (Void)
import System.FilePath ((</>))
import Test.Tasty (TestTree)

import qualified Control.Exception as Exception
import qualified Control.Monad as Monad
import qualified Control.Monad.Trans.State.Strict as State
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
Expand Down Expand Up @@ -72,7 +71,7 @@ getTests = do
successTests <- Test.Util.discover (Turtle.chars <* "A.dhall") successTest (do
path <- Turtle.lstree (importDirectory </> "success")

Monad.guard (path `Test.Util.pathNotElem` flakyTests)
path `Test.Util.pathNotIn` flakyTests

return path )

Expand All @@ -96,8 +95,9 @@ getTests = do
#endif
]

_ <- Monad.guard (path `Test.Util.pathNotElem` expectedSuccesses)
_ <- Monad.guard (not ("ENV.dhall" `isSuffixOf` Text.pack path))
path `Test.Util.pathNotIn` expectedSuccesses
"ENV.dhall" `Test.Util.pathNotSuffixOf` path

return path )

let testTree =
Expand Down
4 changes: 1 addition & 3 deletions dhall/tests/Dhall/Test/Normalization.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import Dhall.Core (Expr (..), Var (..), throws)
import System.FilePath ((</>))
import Test.Tasty (TestTree)

import qualified Control.Monad as Monad
import qualified Data.List as List
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified Dhall.Context as Context
Expand All @@ -36,7 +34,7 @@ getTests = do
let normalizationFiles = do
path <- FilePath.normalise <$> Turtle.lstree normalizationDirectory

Monad.guard (not (FilePath.normalise unitDirectory `List.isPrefixOf` path))
unitDirectory `Test.Util.pathNotPrefixOf` path

return path

Expand Down
3 changes: 1 addition & 2 deletions dhall/tests/Dhall/Test/TypeInference.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import System.FilePath ((</>))
import Test.Tasty (TestTree)

import qualified Control.Exception as Exception
import qualified Control.Monad as Monad
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified Dhall.Core as Core
Expand Down Expand Up @@ -37,7 +36,7 @@ getTests = do
, typeInferenceDirectory </> "success/CacheImportsCanonicalizeA.dhall"
]

Monad.guard (path `notElem` skip)
path `Test.Util.pathNotIn` skip

return path

Expand Down
21 changes: 17 additions & 4 deletions dhall/tests/Dhall/Test/Util.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,15 @@ module Dhall.Test.Util
, assertDoesntTypeCheck
, discover
, Dhall.Test.Util.testCase
, pathNotElem
, pathIn
, pathNotIn
, pathNotPrefixOf
, pathNotSuffixOf
, toDhallPath
, managedTestEnvironment
) where

import Control.Applicative (liftA2, (<|>))
import Control.Applicative (Alternative, liftA2, (<|>))
import Control.Exception (tryJust)
import Control.Monad (guard)
import Control.Monad.Trans.State.Strict (StateT)
Expand Down Expand Up @@ -66,6 +69,7 @@ import qualified Turtle

#if defined(WITH_HTTP) && defined(NETWORK_TESTS)
import qualified Data.Foldable
import qualified Data.List as List
#else
import Control.Monad.IO.Class (MonadIO (..))
import Dhall.Core (URL (..), File (..), Directory (..))
Expand Down Expand Up @@ -307,8 +311,17 @@ testCase prefix expectedFailures assertion =
where
test = Test.Tasty.HUnit.testCase (Text.unpack prefix) assertion

pathNotElem :: FilePath -> [FilePath] -> Bool
pathNotElem this = not . any (FilePath.equalFilePath this)
pathIn :: Alternative f => FilePath -> [FilePath] -> f ()
pathIn this = guard . any (FilePath.equalFilePath this)

pathNotIn :: Alternative f => FilePath -> [FilePath] -> f ()
pathNotIn this = guard . not . any (FilePath.equalFilePath this)

pathNotPrefixOf :: Alternative f => FilePath -> FilePath -> f ()
pathNotPrefixOf this = guard . not . List.isPrefixOf this

pathNotSuffixOf :: Alternative f => FilePath -> FilePath -> f ()
pathNotSuffixOf this = guard . not . List.isSuffixOf this

{-| Path names on Windows are not valid Dhall paths due to using backslashes
instead of forwardslashes to separate path components. This utility fixes
Expand Down

0 comments on commit 782b57e

Please sign in to comment.