packages feed

tasty-discover-2.0.1: executable/Main.hs

-- | Main executable module.
module Main where

import Control.Monad (when)
import Data.Maybe (fromMaybe)
import Test.Tasty.Config (Config(..), parseConfig)
import Test.Tasty.Discover (findTests, generateTestDriver)
import System.Environment (getArgs, getProgName)
import System.Exit (exitFailure)
import System.IO (hPutStrLn, stderr)

-- | Main function.
main :: IO ()
main = do
  args <- getArgs
  name <- getProgName
  case args of
    src : _ : dst : opts ->
      case parseConfig name opts of
        Left err -> do
          hPutStrLn stderr err
          exitFailure
        Right config -> do
          tests <- findTests src config
          let ingredients = tastyIngredients config
              moduleName  = fromMaybe "Main" (generatedModuleName config)
              output      = generateTestDriver moduleName ingredients src tests
          when (debug config) $ hPutStrLn stderr output
          writeFile dst output
    _ -> do
      hPutStrLn stderr "Usage: tasty-discover src _ dst [OPTION...]"
      exitFailure