language-dockerfile-0.3.3.0: test/Language/Dockerfile/EDSL/QuasiSpec.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
module Language.Dockerfile.EDSL.QuasiSpec
where
import Language.Dockerfile.EDSL
import Language.Dockerfile.EDSL.Quasi
import Language.Dockerfile.Syntax
import Test.Hspec
spec :: Spec
spec = do
describe "dockerfile" $
it "parses a dockerfile and returns its ast" $ do
let df = map instruction [dockerfile|
FROM node
RUN apt-get update
CMD node something.js
|]
df `shouldBe` [ From (UntaggedImage "node")
, Run ["apt-get", "update"]
, Cmd ["node", "something.js"]
]
describe "edockerfile" $
it "lets us use parsed dockerfiles seamlessly in our DSL" $ do
let d = do
from "node"
expose "8080"
[edockerfile|
RUN apt-get update
CMD node something.js
|]
df = map instruction (toDockerfile d)
df `shouldBe` [ From (UntaggedImage "node")
, Expose (Ports [8080])
, Run ["apt-get", "update"]
, Cmd ["node", "something.js"]
]