35 lines
1.3 KiB
Haskell
35 lines
1.3 KiB
Haskell
module ShellParseSpec where
|
|
|
|
|
|
import GHCMod.Options.ShellParse
|
|
|
|
import Test.Hspec
|
|
|
|
spec :: Spec
|
|
spec =
|
|
describe "parseCmdLine" $ do
|
|
it "splits arguments" $ do
|
|
parseCmdLine "test command line" `shouldBe` ["test", "command", "line"]
|
|
parseCmdLine "ascii-escape test command line" `shouldBe` ["test", "command", "line"]
|
|
it "honors quoted segments if turned on" $
|
|
parseCmdLine "ascii-escape test command line \STXwith quoted segment\ETX"
|
|
`shouldBe` ["test", "command", "line", "with quoted segment"]
|
|
it "doesn't honor quoted segments if turned off" $
|
|
parseCmdLine "test command line \STXwith quoted segment\ETX"
|
|
`shouldBe` words "test command line \STXwith quoted segment\ETX"
|
|
it "squashes multiple spaces" $ do
|
|
parseCmdLine "test command"
|
|
`shouldBe` ["test", "command"]
|
|
parseCmdLine "ascii-escape test command"
|
|
`shouldBe` ["test", "command"]
|
|
it "ingores leading spaces" $ do
|
|
parseCmdLine " test command"
|
|
`shouldBe` ["test", "command"]
|
|
parseCmdLine " ascii-escape test command"
|
|
`shouldBe` ["test", "command"]
|
|
it "parses empty string as no argument" $ do
|
|
parseCmdLine ""
|
|
`shouldBe` [""]
|
|
parseCmdLine "ascii-escape "
|
|
`shouldBe` [""]
|