packages feed

ronn-optparse-applicative-1.0.2.0: tests/Ronn/Options/ApplicativeSpec.hs

-- |
--
-- Module      : Ronn.Options.ApplicativeSpec
-- Copyright   : (c) 2024 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
module Ronn.Options.ApplicativeSpec
  ( spec
  ) where

import Prelude

import Options.Applicative
import Ronn.Options.Applicative ()
import Ronn.Test
import Test.Hspec

spec :: Spec
spec = do
  specify "complete example" $
    ronnGolden "optparse-applicative" $
      (,,,)
        <$> optional (switch (long "debug" <> help "Enable debug"))
        <*> option
          (str @String)
          ( mconcat
              [ short 'o'
              , long "output"
              , help "Output file"
              , metavar "FILE"
              , value "-"
              , showDefault
              ]
          )
        <*> argument (str @String) (help "Input file" <> metavar "INPUT")
        <*> subparser
          ( command
              "serve"
              ( info
                  (pure ())
                  (progDesc "Run the server")
              )
              <> command
                "build"
                ( info
                    (pure ())
                    (progDesc "Build the project")
                )
              <> metavar "COMMAND"
              <> help "Command to run"
          )