packages feed

language-docker-10.4.3: test/Language/Docker/ParsePragmaSpec.hs

module Language.Docker.ParsePragmaSpec where

import qualified Data.Text as Text
import Language.Docker.Syntax
import TestHelper
import Test.Hspec


spec :: Spec
spec = do
  describe "parse # pragma" $ do
    it "# escape = \\" $
      let dockerfile = Text.unlines ["# escape = \\\\"]  -- this need double escaping for some reason.
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '\\'})]
    it "#escape=`" $
      let dockerfile = Text.unlines ["#escape=`"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "# escape=`" $
      let dockerfile = Text.unlines ["# escape=`"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "#escape =`" $
      let dockerfile = Text.unlines ["#escape =`"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "#escape= `" $
      let dockerfile = Text.unlines ["#escape= `"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "# escape =`" $
      let dockerfile = Text.unlines ["# escape =`"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "#escape = `" $
      let dockerfile = Text.unlines ["#escape = `"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "# escape = `" $
      let dockerfile = Text.unlines ["# escape = `"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "# Escape = `" $
      let dockerfile = Text.unlines ["# escape = `"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "# ESCAPE = `" $
      let dockerfile = Text.unlines ["# escape = `"]
       in assertAst dockerfile [Pragma (Escape EscapeChar {escape = '`'})]
    it "#syntax=docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["#syntax=docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# syntax=docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax=docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "#syntax =docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["#syntax =docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "#syntax= docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["#syntax= docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# syntax =docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax =docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "#syntax = docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["#syntax = docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# syntax= docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax= docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# syntax = docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax = docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# Syntax = docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax = docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]
    it "# SYNTAX = docker/dockerfile:1.0" $
      let dockerfile = Text.unlines ["# syntax = docker/dockerfile:1.0"]
       in assertAst dockerfile [Pragma (Syntax SyntaxImage {syntax = "docker/dockerfile:1.0"})]