aboutsummaryrefslogtreecommitdiffstats
path: root/test/Main.hs
diff options
context:
space:
mode:
authorLibravatar Alexander Foremny <aforemny@posteo.de>2024-03-09 14:56:40 +0100
committerLibravatar Alexander Foremny <aforemny@posteo.de>2024-03-09 14:56:41 +0100
commit8b9a3b6ef6277a9e99961c62796d963dd88906a7 (patch)
treecb663028449f0b1ad37ba921fc63e8a9fac94933 /test/Main.hs
parentd9031e8767ab0eedbd8dbe677edf5bfdeb6dfedf (diff)
chore: strip trailing newlines by default
Can be disabled by ending the quasi quotation template with a single backslash.
Diffstat (limited to 'test/Main.hs')
-rw-r--r--test/Main.hs38
1 files changed, 20 insertions, 18 deletions
diff --git a/test/Main.hs b/test/Main.hs
index e00ccf6..96612dc 100644
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -16,38 +16,40 @@ main :: IO ()
main = hspec do
describe "output" do
it "capture stdout" do
- (`shouldBe` "stdout") . fst @String @String =<< [sh|echo -n stdout|]
+ (`shouldBe` "stdout") . fst @String @String =<< [sh|echo stdout|]
it "capture stderr" do
- (`shouldBe` "stderr") . snd @String =<< [sh|>&2 echo -n stderr|]
- it "capture stdout and stderr interleaved" do
+ (`shouldBe` "stderr") . snd @String =<< [sh|>&2 echo stderr|]
+ it "capture stdout and stderr" do
(`shouldBe` ("stdout", "stderr"))
=<< [sh|
- echo -n stdout
- >&2 echo -n stderr
+ echo stdout
+ >&2 echo stderr
|]
- it "capture interleaved" do
- (`shouldBe` "stdout\nstderr\n")
+ it "capture stdout and stderr interleaved" do
+ (`shouldBe` "stdout\nstderr")
=<< [sh|
echo stdout
>&2 echo stderr
|]
+ it "preserve trailing newline" do
+ (`shouldBe` "stdout\n") . fst @String @String =<< [sh|echo stdout \|]
describe "arguments" do
it "passes `Int`" do
- (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo -n '#{x}'|]
+ (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo '#{x}'|]
it "passes `Text`" do
- (`shouldBe` "foobar") =<< let x = T.pack "foobar" in [sh|echo -n '#{x}'|]
- (`shouldBe` "foobar") =<< let x = LT.pack "foobar" in [sh|echo -n '#{x}'|]
+ (`shouldBe` "foobar") =<< let x = T.pack "foobar" in [sh|echo '#{x}'|]
+ (`shouldBe` "foobar") =<< let x = LT.pack "foobar" in [sh|echo '#{x}'|]
it "passes `ByteString`" do
- (`shouldBe` "foobar") =<< let x = B.pack "foobar" in [sh|echo -n '#{x}'|]
- (`shouldBe` "foobar") =<< let x = LB.pack "foobar" in [sh|echo -n '#{x}'|]
+ (`shouldBe` "foobar") =<< let x = B.pack "foobar" in [sh|echo '#{x}'|]
+ (`shouldBe` "foobar") =<< let x = LB.pack "foobar" in [sh|echo '#{x}'|]
it "interpolates expressions" do
- (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo -n '#{show x}'|]
+ (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo '#{show x}'|]
it "interpolates monadic expressions" do
- (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo -n '#{{pure @IO x}}'|]
+ (`shouldBe` "1") =<< let x = 1 :: Int in [sh|echo '#{{pure @IO x}}'|]
it "interpolates monadic expressions" do
- (`shouldBe` "1") =<< runReaderT [sh|echo -n '#{{asks fst}}'|] (1 :: Int, 2 :: Int)
+ (`shouldBe` "1") =<< runReaderT [sh|echo '#{{asks fst}}'|] (1 :: Int, 2 :: Int)
it "preserves argument order" do
- (`shouldBe` "1 2") =<< let x = "1"; y = "2" in [sh|echo -n '#{x}' '#{y}'|]
+ (`shouldBe` "1 2") =<< let x = "1"; y = "2" in [sh|echo '#{x}' '#{y}'|]
describe "quoting" do
it "preserves arguments" do
(`shouldBe` "foo\\ bar")
@@ -63,6 +65,6 @@ main = hspec do
(`shouldBe` "''") =<< let x = "" in [sh|printf %q '#{x}'|]
describe "parsing" do
it "parses shell quotes" do
- (`shouldBe` "foobar") =<< [sh|echo -n 'foobar'|]
+ (`shouldBe` "foobar") =<< [sh|echo 'foobar'|]
it "parses double cross" do
- (`shouldBe` "0") =<< [sh|echo -n $#|]
+ (`shouldBe` "0") =<< [sh|echo $#|]