shelly-1.12.1.1: test/src/SshSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module SshSpec ( sshSpec ) where
import TestInit
import qualified Data.Text as T
sshSpec :: Spec
sshSpec = do
let q = "'" -- a single quote
let qq = "'\\''" -- quote of a single quote
let qqq = T.concat [qq, "\\", qq, qq] -- quote of qq
describe "sshCommandText" $ do
it "simple command" $ do
let res = sshCommandText [("wibble", [])] SeqSsh
res @?= T.concat [q, qq, "wibble", qq, q]
it "space command" $ do
let res = sshCommandText [("to", ["outer space"])] SeqSsh
res @?= T.concat [q, qq, "to", qq, " ", qq, "outer space", qq ,q]
it "multiple space commands" $ do
let res = sshCommandText [("to", ["outer space"]), ("and", ["back again"])] SeqSsh
res @?= T.concat
[ q, qq, "to", qq, " ", qq, "outer space", qq
, " && "
, qq, "and", qq, " ", qq, "back again", qq, q
]
it "commands with quotes and spaces" $ do
let res = sshCommandText [ ("echo", ["Godfater's brother, Tom says: \"huh??\""])
, ("foo", ["--dir", "Tom's father/"])] SeqSsh
res @?= T.concat
[ q, qq, "echo", qq, " "
, qq, "Godfater", qqq, "s brother, Tom says: \"huh??\"", qq
, " && "
, qq, "foo", qq, " "
, qq, "--dir", qq, " "
, qq, "Tom", qqq, "s father/", qq, q
]