packages feed

hpack-0.20.0: test/Hpack/OptionsSpec.hs

module Hpack.OptionsSpec (spec) where

import           Helper

import           Prelude ()
import           Prelude.Compat

import           Hpack.Options

spec :: Spec
spec = do
  describe "parseOptions" $ do
    context "with --help" $ do
      it "returns Help" $ do
        parseOptions ["--help"] `shouldBe` Help

    context "with --version" $ do
      it "returns PrintVersion" $ do
        parseOptions ["--version"] `shouldBe` PrintVersion

    context "by default" $ do
      it "returns Run" $ do
        parseOptions [] `shouldBe` Run (Options Verbose NoForce False Nothing)

      it "includes target" $ do
        parseOptions ["foo"] `shouldBe` Run (Options Verbose NoForce False (Just "foo"))

      context "with superfluous arguments" $ do
        it "returns ParseError" $ do
          parseOptions ["foo", "bar"] `shouldBe` ParseError

      context "with --silent" $ do
        it "sets optionsVerbose to NoVerbose" $ do
          parseOptions ["--silent"] `shouldBe` Run (Options NoVerbose NoForce False Nothing)

      context "with --force" $ do
        it "sets optionsForce to Force" $ do
          parseOptions ["--force"] `shouldBe` Run (Options Verbose Force False Nothing)

      context "with -f" $ do
        it "sets optionsForce to Force" $ do
          parseOptions ["-f"] `shouldBe` Run (Options Verbose Force False Nothing)

      context "with -" $ do
        it "sets optionsToStdout to True" $ do
          parseOptions ["-"] `shouldBe` Run (Options Verbose NoForce True Nothing)

        it "rejects - for target" $ do
          parseOptions ["-", "-"] `shouldBe` ParseError