-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Test discovery for the tasty framework.
--   
--   Automatic test discovery and runner for the tasty framework. Prefix
--   your test case names and tasty-discover will discover, collect and run
--   them. All popular test libraries are covered. Configure once and then
--   just write your tests. Avoid forgetting to add test modules to your
--   Cabal/Hpack files. Tasty ingredients are included along with various
--   configuration options for different use cases. Please see the
--   README.md below for how to get started.
@package tasty-discover
@version 5.0.0

-- | The test driver configuration options module.
--   
--   Anything that can be passed as an argument to the test driver
--   definition exists as a field in the Config type.
module Test.Tasty.Discover.Internal.Config

-- | The discovery and runner configuration.
data Config
Config :: Maybe GlobPattern -> Maybe String -> FilePath -> Maybe String -> Maybe GlobPattern -> [FilePath] -> [Ingredient] -> [String] -> Bool -> Bool -> Bool -> Bool -> Config

-- | Glob pattern for matching modules during test discovery.
[modules] :: Config -> Maybe GlobPattern

-- | >: Module suffix.
[moduleSuffix] :: Config -> Maybe String

-- | Directory where to look for tests.
[searchDir] :: Config -> FilePath

-- | Name of the generated main module.
[generatedModuleName] :: Config -> Maybe String

-- | Glob pattern for ignoring modules during test discovery.
[ignores] :: Config -> Maybe GlobPattern

-- | >: Ignored modules by full name.
[ignoredModules] :: Config -> [FilePath]

-- | Tasty ingredients to use.
[tastyIngredients] :: Config -> [Ingredient]

-- | Options passed to tasty
[tastyOptions] :: Config -> [String]

-- | Whether the source file should be modified in-place.
[inPlace] :: Config -> Bool

-- | >: suffix and look in all modules.
[noModuleSuffix] :: Config -> Bool

-- | Debug the generated module.
[debug] :: Config -> Bool

-- | Tree display for the test results table.
[treeDisplay] :: Config -> Bool

-- | A glob pattern.
type GlobPattern = String

-- | Configuration options parser.
parseConfig :: FilePath -> String -> [String] -> Either String Config

-- | The default configuration
defaultConfig :: FilePath -> Config
instance GHC.Show.Show Test.Tasty.Discover.Internal.Config.Config

-- | The test generator boilerplate module.
--   
--   Any test that is supported (HUnit, HSpec, etc.) provides here, a
--   generator type with all the context necessary for outputting the
--   necessary boilerplate for the generated main function that will run
--   all the tests.
module Test.Tasty.Discover.Internal.Generator

-- | The generator type.
data Generator
Generator :: String -> [String] -> String -> (Test -> String) -> Generator

-- | Generator prefix.
[generatorPrefix] :: Generator -> String

-- | Module import path.
[generatorImports] :: Generator -> [String]

-- | Generator class.
[generatorClass] :: Generator -> String

-- | Generator setup.
[generatorSetup] :: Generator -> Test -> String

-- | The test type.
data Test
Test :: String -> String -> Test

-- | Module name.
[testModule] :: Test -> String

-- | Function name.
[testFunction] :: Test -> String

-- | All types of tests supported for boilerplate generation.
generators :: [Generator]

-- | Generator retriever (single).
getGenerator :: Test -> Generator

-- | Generator retriever (many).
getGenerators :: [Test] -> [Generator]

-- | Boilerplate formatter.
showSetup :: Test -> String -> String

-- | Test constructor.
mkTest :: FilePath -> String -> Test
instance GHC.Classes.Ord Test.Tasty.Discover.Internal.Generator.Test
instance GHC.Show.Show Test.Tasty.Discover.Internal.Generator.Test
instance GHC.Classes.Eq Test.Tasty.Discover.Internal.Generator.Test

-- | Automatic test discovery and runner for the tasty framework.
module Test.Tasty.Discover.Internal.Driver

-- | Main function generator, along with all the boilerplate which which
--   will run the discovered tests.
generateTestDriver :: Config -> String -> [String] -> FilePath -> [Test] -> String
newtype ModuleTree
ModuleTree :: Map String (ModuleTree, [String]) -> ModuleTree

-- | Discover the tests modules.
findTests :: Config -> IO [Test]
mkModuleTree :: [Test] -> [String] -> ModuleTree

-- | Show the tests.
showTests :: Config -> [Test] -> [String] -> [String]
instance GHC.Show.Show Test.Tasty.Discover.Internal.Driver.ModuleTree
instance GHC.Classes.Eq Test.Tasty.Discover.Internal.Driver.ModuleTree

module Test.Tasty.Discover.TastyInfo
data TastyInfo
TastyInfo :: Last String -> Last String -> TastyInfo
[name] :: TastyInfo -> Last String
[description] :: TastyInfo -> Last String
instance GHC.Show.Show Test.Tasty.Discover.TastyInfo.TastyInfo
instance GHC.Classes.Eq Test.Tasty.Discover.TastyInfo.TastyInfo
instance GHC.Base.Semigroup Test.Tasty.Discover.TastyInfo.TastyInfo
instance GHC.Base.Monoid Test.Tasty.Discover.TastyInfo.TastyInfo

module Test.Tasty.Discover
class Tasty a
tasty :: Tasty a => TastyInfo -> a -> IO TestTree
data TastyInfo
name :: String -> TastyInfo
description :: String -> TastyInfo
nameOf :: TastyInfo -> String
descriptionOf :: TastyInfo -> String
instance Test.Tasty.Discover.Tasty Test.Tasty.Core.TestTree
instance Test.Tasty.Discover.Tasty [Test.Tasty.Core.TestTree]
instance Test.Tasty.Discover.Tasty (GHC.Types.IO Test.Tasty.Core.TestTree)
instance Test.Tasty.Discover.Tasty (GHC.Types.IO [Test.Tasty.Core.TestTree])

module Test.Tasty.Discover.Version
version :: Version
