opt-env-conf-test-0.0.0.2: test/OptEnvConf/ToplevelSpec.hs
module OptEnvConf.ToplevelSpec where
import Data.Version
import OptEnvConf
import System.Environment
import System.Exit
import Test.Syd
spec :: Spec
spec = do
let dummyVersion = makeVersion [0, 0, 0]
let dummyProgDesc = "dummy"
let dummyParser = pure 'a'
let dummyRun = runParser dummyVersion dummyProgDesc dummyParser
sequential $ do
it "can fail fast when too many unrecognsied arguments are given" $
withArgs ["-option1", "option", "--option2", "option", "--option3", "option", "--option4", "option"] $
dummyRun `shouldThrow` (== ExitFailure 1)
describe "--help" $ do
it "can show help text with --help" $
withArgs ["--help"] $
dummyRun `shouldThrow` (== ExitSuccess)
it "can show help text with --help even when there are more args" $
withArgs ["--help", "more", "args", "here"] $
dummyRun `shouldThrow` (== ExitSuccess)
it "can show help text with -h" $
withArgs ["-h"] $
dummyRun `shouldThrow` (== ExitSuccess)
it "can show help text with --help even when there are more args" $
withArgs ["-h", "more", "args", "here"] $
dummyRun `shouldThrow` (== ExitSuccess)
describe "--version" $ do
it "can show version info with --version" $
withArgs ["--version"] $
dummyRun `shouldThrow` (== ExitSuccess)
describe "--run-settings-check" $ do
it "can run a settings check with --run-settings-check" $
withArgs ["--run-settings-check"] $
dummyRun `shouldThrow` (== ExitSuccess)
it "can run a settings check with --run-settings-check even when there are more args" $
withArgs ["--run-settings-check", "more", "args", "here"] $
runParser
dummyVersion
dummyProgDesc
( many
( setting
[ help "something that reads args",
argument,
reader str,
metavar "STR"
]
) ::
Parser [String]
)
`shouldThrow` (== ExitSuccess)