diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-12-28 13:09:21 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-12-28 13:53:44 +0530 |
| commit | d6dbe32df6f1a01c95f9293023e2d73872fa39fe (patch) | |
| tree | d9a9e667eef416c03745a054118f21ed84ad49e9 /specs/Specs/ArgsSpec.hs | |
| parent | 98af698a806e41904368c0114f9d8d9f377d9c09 (diff) | |
| download | chelleport-d6dbe32df6f1a01c95f9293023e2d73872fa39fe.tar.gz chelleport-d6dbe32df6f1a01c95f9293023e2d73872fa39fe.zip | |
Add cli arg parsing for starting in given mode
Diffstat (limited to '')
| -rw-r--r-- | specs/Specs/ArgsSpec.hs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/specs/Specs/ArgsSpec.hs b/specs/Specs/ArgsSpec.hs new file mode 100644 index 0000000..caaab75 --- /dev/null +++ b/specs/Specs/ArgsSpec.hs @@ -0,0 +1,39 @@ +module Specs.ArgsSpec where + +import Chelleport.Args (parseArgs) +import Chelleport.Types +import Data.Default (Default (def)) +import Test.Hspec + +test :: SpecWith () +test = do + describe "#parseArgs" $ do + context "when there are no args" $ do + it "parses default configuration" $ do + let config = parseArgs [] + config `shouldBe` Right def + + context "when args contains --help" $ do + it "enables show help without parsing the rest of the args" $ do + parseArgs ["--help"] `shouldBe` Right (def {configShowHelp = True}) + parseArgs ["--help", "-m", "mode"] `shouldBe` Right (def {configShowHelp = True}) + + context "when args contains -m or --mode with a valid mode" $ do + it "parses configuration with mode" $ do + parseArgs ["-m", "search"] `shouldBe` Right (def {configMode = defaultSearchMode}) + parseArgs ["--mode", "search"] `shouldBe` Right (def {configMode = defaultSearchMode}) + parseArgs ["-m", "hints"] `shouldBe` Right (def {configMode = defaultHintsMode}) + parseArgs ["--mode", "hints"] `shouldBe` Right (def {configMode = defaultHintsMode}) + + context "when args contains -m or --mode with an invalid mode" $ do + it "returns with error message" $ do + parseArgs ["--mode", "invalidmode"] `shouldBe` Left "Invalid mode: invalidmode" + parseArgs ["-m", "invalidmode"] `shouldBe` Left "Invalid mode: invalidmode" + + context "when args contains -m or --mode without any mode" $ do + it "returns with error message" $ do + parseArgs ["--mode"] `shouldBe` Left "Missing value for mode" + + context "when args contains an invalid flag" $ do + it "enables show help without parsing the rest of the args" $ do + parseArgs ["--foobar"] `shouldBe` Left "Unrecognized argument: --foobar" |
