packages feed

texrunner-0.0.1.0: tests/Tex/PDF.hs

{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Tex.PDF where

import Data.ByteString.Lazy.Char8 as B
import Data.Maybe
import System.Exit

import Test.HUnit
import Test.Framework.Providers.HUnit

import System.Texrunner
import System.Texrunner.Online

tests = [tex, latex, context, texOnline, latexOnline, contextOnline]
texTests = [tex, texOnline]
latexTests = [latex, latexOnline]
contextTests = [context, contextOnline]

texDocument :: ByteString
texDocument = "hi\\bye"

latexDocument :: ByteString
latexDocument = B.unlines
  [ "\\documentclass{article}"
  , "\\begin{document}"
  , "hi"
  , "\\end{document}"
  ]

contextDocument :: ByteString
contextDocument = B.unlines
  [ "\\starttext"
  , "hi"
  , "\\stoptext"
  ]

tex     = testRunTeX "pdftex" [] texDocument
latex   = testRunTeX "pdflatex" [] latexDocument
context = testRunTeX "context" ["--once"] contextDocument

testRunTeX command args document = testCase command $ do
  (exitCode, _, mPDF) <- runTex command args [] document
  exitCode @?= ExitSuccess
  assertBool "pdf found" $ isJust mPDF


-- online

testOnlineTeX command args document = testCase (command ++ "Online") $ do
  ((), _, mPDF) <- runOnlineTex' command args "" (texPutStrLn $ toStrict document)
  assertBool "pdf found" $ isJust mPDF

texOnline     = testOnlineTeX "pdftex" [] texDocument
latexOnline   = testOnlineTeX "pdflatex" [] latexDocument
contextOnline = testOnlineTeX "context" ["--pipe"] contextDocument




-- tests to make:
-- * texinputs for files in cwd
-- * pdf made online