{- FOURMOLU_DISABLE -} -- The MIT License (MIT) -- Copyright (c) 2016-2024 Objectionary.com -- Permission is hereby granted, free of charge, to any person obtaining a copy -- of this software and associated documentation files (the "Software"), to deal -- in the Software without restriction, including without limitation the rights -- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -- copies of the Software, and to permit persons to whom the Software is -- furnished to do so, subject to the following conditions: -- The above copyright notice and this permission notice shall be included -- in all copies or substantial portions of the Software. -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -- FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -- SOFTWARE. {- FOURMOLU_ENABLE -} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Language.EO.Test.Yaml where import Control.Monad (forM) import Data.List (sort) import Language.EO.Phi.Rules.Yaml (RuleSet, parseRuleSetFromFile) import System.Directory (listDirectory) import System.FilePath ((</>)) fileTests :: FilePath -> IO RuleSet fileTests :: FilePath -> IO RuleSet fileTests = FilePath -> IO RuleSet parseRuleSetFromFile directoryTests :: FilePath -> IO [RuleSet] directoryTests :: FilePath -> IO [RuleSet] directoryTests FilePath dir = do [FilePath] paths <- FilePath -> IO [FilePath] listDirectory FilePath dir [FilePath] -> (FilePath -> IO RuleSet) -> IO [RuleSet] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM ([FilePath] -> [FilePath] forall a. Ord a => [a] -> [a] sort [FilePath] paths) ((FilePath -> IO RuleSet) -> IO [RuleSet]) -> (FilePath -> IO RuleSet) -> IO [RuleSet] forall a b. (a -> b) -> a -> b $ \FilePath path -> FilePath -> IO RuleSet fileTests (FilePath dir FilePath -> FilePath -> FilePath </> FilePath path)