jsaddle-warp-0.8.3.0: tests/DocTest.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE LambdaCase #-}
module Main (
main
) where
import Test.DocTest
import System.IO (stderr, BufferMode(..), stdout, hSetBuffering)
import System.FilePath ((</>))
import System.Exit (exitFailure, exitWith, ExitCode(..))
import System.Process (readProcess, system)
import Control.Concurrent (forkIO)
import Control.Monad (void)
import Control.Monad.IO.Class (MonadIO(..))
import Data.Monoid ((<>))
import System.Environment (getArgs)
import Language.Javascript.JSaddle.Run.Files (jsaddleJs)
import qualified Data.ByteString.Lazy.Char8 as BS (unpack)
import Test.WebDriver (runSession, defaultConfig, openPage, closeSession)
main :: IO ()
main = do
putStrLn "Hello"
jsaddlePath <- getArgs >>= \case
[arg] -> return arg
_ -> do
putStrLn "Please give the path to the jsaddle package source"
exitFailure
hSetBuffering stdout LineBuffering
hSetBuffering stderr LineBuffering
node <- system "phantomjs --version" >>= \case
ExitSuccess -> return ()
e -> do
putStrLn "phantomjs not found"
exitWith e
forkIO . void $ readProcess "phantomjs" ["--webdriver=4444"] (BS.unpack jsaddleJs) >>= putStr
runSession defaultConfig $ do
openPage "http://localhost:3709"
liftIO $ doctest [
"-hide-all-packages",
"-package=base-" ++ VERSION_base,
"-package=lens-" ++ VERSION_lens,
"-package=text-" ++ VERSION_text,
"-package=bytestring-" ++ VERSION_bytestring,
"-package=transformers-" ++ VERSION_transformers,
"-package=websockets-" ++ VERSION_websockets,
"-package=primitive-" ++ VERSION_primitive,
"-package=aeson-" ++ VERSION_aeson,
"-package=websockets-" ++ VERSION_websockets,
"-package=wai-" ++ VERSION_wai,
"-package=wai-websockets-" ++ VERSION_wai_websockets,
"-package=warp-" ++ VERSION_warp,
"-package=http-types-" ++ VERSION_http_types,
"-package=stm-" ++ VERSION_stm,
"-package=time-" ++ VERSION_time,
"-package=containers-" ++ VERSION_containers,
"-package=process-" ++ VERSION_process,
"-package=filepath-" ++ VERSION_filepath,
"-package=ref-tf-" ++ VERSION_ref_tf,
"-package=deepseq-" ++ VERSION_deepseq,
"-package=ghc-prim-" ++ VERSION_ghc_prim,
"-i" <> "src",
"-i" <> "src-ghc",
"src/Language/Javascript/JSaddle/Test.hs",
"-i" <> jsaddlePath,
jsaddlePath </> "src-ghc/Data/JSString/Text.hs",
jsaddlePath </> "src-ghc/Data/JSString/Internal/Type.hs",
jsaddlePath </> "src-ghc/GHCJS/Foreign.hs",
jsaddlePath </> "src-ghc/GHCJS/Foreign/Internal.hs",
jsaddlePath </> "src-ghc/GHCJS/Internal/Types.hs",
jsaddlePath </> "src-ghc/GHCJS/Marshal.hs",
jsaddlePath </> "src-ghc/GHCJS/Marshal/Pure.hs",
jsaddlePath </> "src-ghc/GHCJS/Marshal/Internal.hs",
jsaddlePath </> "src-ghc/GHCJS/Prim.hs",
jsaddlePath </> "src-ghc/GHCJS/Prim/Internal.hs",
jsaddlePath </> "src-ghc/GHCJS/Types.hs",
jsaddlePath </> "src-ghc/JavaScript/Array.hs",
jsaddlePath </> "src-ghc/JavaScript/Array/Internal.hs",
jsaddlePath </> "src-ghc/JavaScript/Object/Internal.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Arguments.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Classes.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Classes/Internal.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Evaluate.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Exception.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Monad.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Marshal/String.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Native.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Native/Internal.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Object.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Properties.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Run.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Run/Files.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/String.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Types.hs",
jsaddlePath </> "src/Language/Javascript/JSaddle/Value.hs" ]
closeSession