@@ -13,13 +13,16 @@ import System.Exit (exitFailure, exitWith, ExitCode(..))
1313import System.Process (readProcess, system)
1414import Control.Concurrent (forkIO)
1515import Control.Monad (void)
16+import Control.Monad.IO.Class (MonadIO(..))
1617import Data.Monoid ((<>))
1718import System.Environment (getArgs)
1819import Language.Javascript.JSaddle.Run.Files (jsaddleJs)
1920import qualified Data.ByteString.Lazy.Char8 as BS (unpack)
21+import Test.WebDriver (runSession, defaultConfig, openPage, closeSession)
2022
2123main :: IO ()
2224main = do
25+ putStrLn "Hello"
2326 jsaddlePath <- getArgs >>= \case
2427 [arg] -> return arg
2528 _ -> do
@@ -27,70 +30,70 @@ main = do
2730 exitFailure
2831 hSetBuffering stdout LineBuffering
2932 hSetBuffering stderr LineBuffering
30− node <- system "nodejs --version" >>= \case
31− ExitSuccess -> return "nodejs"
32− _ -> return "node"
33− system (node <> " --version") >>= \case
34− ExitSuccess -> putStrLn "Node.js found"
33+ node <- system "phantomjs --version" >>= \case
34+ ExitSuccess -> return ()
3535 e -> do
36− putStrLn "Node.js not found"
36+ putStrLn "phantomjs not found"
3737 exitWith e
38− forkIO . void $ readProcess node ["--harmony"] (BS.unpack jsaddleJs) >>= putStr
39− doctest [
40− "-hide-all-packages",
41− "-package=base-" ++ VERSION_base,
42− "-package=lens-" ++ VERSION_lens,
43− "-package=text-" ++ VERSION_text,
44− "-package=bytestring-" ++ VERSION_bytestring,
45− "-package=transformers-" ++ VERSION_transformers,
46− "-package=websockets-" ++ VERSION_websockets,
47− "-package=primitive-" ++ VERSION_primitive,
48− "-package=aeson-" ++ VERSION_aeson,
49− "-package=websockets-" ++ VERSION_websockets,
50− "-package=wai-" ++ VERSION_wai,
51− "-package=wai-websockets-" ++ VERSION_wai_websockets,
52− "-package=warp-" ++ VERSION_warp,
53− "-package=http-types-" ++ VERSION_http_types,
54− "-package=stm-" ++ VERSION_stm,
55− "-package=time-" ++ VERSION_time,
56− "-package=containers-" ++ VERSION_containers,
57− "-package=process-" ++ VERSION_process,
58− "-package=filepath-" ++ VERSION_filepath,
59− "-package=ref-tf-" ++ VERSION_ref_tf,
60− "-package=deepseq-" ++ VERSION_deepseq,
61− "-package=ghc-prim-" ++ VERSION_ghc_prim,
62− "-i" <> jsaddlePath </> "jsaddle-warp/src",
63− "-i" <> jsaddlePath </> "jsaddle-warp/src-ghc",
64− jsaddlePath </> "jsaddle-warp/src/Language/Javascript/JSaddle/Test.hs",
65− "-i" <> jsaddlePath </> "jsaddle",
66− jsaddlePath </> "jsaddle/src-ghc/Data/JSString/Text.hs",
67− jsaddlePath </> "jsaddle/src-ghc/Data/JSString/Internal/Type.hs",
68− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Foreign.hs",
69− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Foreign/Internal.hs",
70− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Internal/Types.hs",
71− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal.hs",
72− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal/Pure.hs",
73− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal/Internal.hs",
74− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Prim.hs",
75− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Prim/Internal.hs",
76− jsaddlePath </> "jsaddle/src-ghc/GHCJS/Types.hs",
77− jsaddlePath </> "jsaddle/src-ghc/JavaScript/Array.hs",
78− jsaddlePath </> "jsaddle/src-ghc/JavaScript/Array/Internal.hs",
79− jsaddlePath </> "jsaddle/src-ghc/JavaScript/Object/Internal.hs",
80− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle.hs",
81− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Arguments.hs",
82− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Classes.hs",
83− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Classes/Internal.hs",
84− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Evaluate.hs",
85− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Exception.hs",
86− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Monad.hs",
87− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Marshal/String.hs",
88− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Native.hs",
89− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Native/Internal.hs",
90− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Object.hs",
91− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Properties.hs",
92− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Run.hs",
93− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Run/Files.hs",
94− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/String.hs",
95− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Types.hs",
96− jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Value.hs" ]
38+ forkIO . void $ readProcess "phantomjs" ["--webdriver=4444"] (BS.unpack jsaddleJs) >>= putStr
39+ runSession defaultConfig $ do
40+ openPage "http://localhost:3709"
41+ liftIO $ doctest [
42+ "-hide-all-packages",
43+ "-package=base-" ++ VERSION_base,
44+ "-package=lens-" ++ VERSION_lens,
45+ "-package=text-" ++ VERSION_text,
46+ "-package=bytestring-" ++ VERSION_bytestring,
47+ "-package=transformers-" ++ VERSION_transformers,
48+ "-package=websockets-" ++ VERSION_websockets,
49+ "-package=primitive-" ++ VERSION_primitive,
50+ "-package=aeson-" ++ VERSION_aeson,
51+ "-package=websockets-" ++ VERSION_websockets,
52+ "-package=wai-" ++ VERSION_wai,
53+ "-package=wai-websockets-" ++ VERSION_wai_websockets,
54+ "-package=warp-" ++ VERSION_warp,
55+ "-package=http-types-" ++ VERSION_http_types,
56+ "-package=stm-" ++ VERSION_stm,
57+ "-package=time-" ++ VERSION_time,
58+ "-package=containers-" ++ VERSION_containers,
59+ "-package=process-" ++ VERSION_process,
60+ "-package=filepath-" ++ VERSION_filepath,
61+ "-package=ref-tf-" ++ VERSION_ref_tf,
62+ "-package=deepseq-" ++ VERSION_deepseq,
63+ "-package=ghc-prim-" ++ VERSION_ghc_prim,
64+ "-i" <> "src",
65+ "-i" <> "src-ghc",
66+ "src/Language/Javascript/JSaddle/Test.hs",
67+ "-i" <> jsaddlePath,
68+ jsaddlePath </> "src-ghc/Data/JSString/Text.hs",
69+ jsaddlePath </> "src-ghc/Data/JSString/Internal/Type.hs",
70+ jsaddlePath </> "src-ghc/GHCJS/Foreign.hs",
71+ jsaddlePath </> "src-ghc/GHCJS/Foreign/Internal.hs",
72+ jsaddlePath </> "src-ghc/GHCJS/Internal/Types.hs",
73+ jsaddlePath </> "src-ghc/GHCJS/Marshal.hs",
74+ jsaddlePath </> "src-ghc/GHCJS/Marshal/Pure.hs",
75+ jsaddlePath </> "src-ghc/GHCJS/Marshal/Internal.hs",
76+ jsaddlePath </> "src-ghc/GHCJS/Prim.hs",
77+ jsaddlePath </> "src-ghc/GHCJS/Prim/Internal.hs",
78+ jsaddlePath </> "src-ghc/GHCJS/Types.hs",
79+ jsaddlePath </> "src-ghc/JavaScript/Array.hs",
80+ jsaddlePath </> "src-ghc/JavaScript/Array/Internal.hs",
81+ jsaddlePath </> "src-ghc/JavaScript/Object/Internal.hs",
82+ jsaddlePath </> "src/Language/Javascript/JSaddle.hs",
83+ jsaddlePath </> "src/Language/Javascript/JSaddle/Arguments.hs",
84+ jsaddlePath </> "src/Language/Javascript/JSaddle/Classes.hs",
85+ jsaddlePath </> "src/Language/Javascript/JSaddle/Classes/Internal.hs",
86+ jsaddlePath </> "src/Language/Javascript/JSaddle/Evaluate.hs",
87+ jsaddlePath </> "src/Language/Javascript/JSaddle/Exception.hs",
88+ jsaddlePath </> "src/Language/Javascript/JSaddle/Monad.hs",
89+ jsaddlePath </> "src/Language/Javascript/JSaddle/Marshal/String.hs",
90+ jsaddlePath </> "src/Language/Javascript/JSaddle/Native.hs",
91+ jsaddlePath </> "src/Language/Javascript/JSaddle/Native/Internal.hs",
92+ jsaddlePath </> "src/Language/Javascript/JSaddle/Object.hs",
93+ jsaddlePath </> "src/Language/Javascript/JSaddle/Properties.hs",
94+ jsaddlePath </> "src/Language/Javascript/JSaddle/Run.hs",
95+ jsaddlePath </> "src/Language/Javascript/JSaddle/Run/Files.hs",
96+ jsaddlePath </> "src/Language/Javascript/JSaddle/String.hs",
97+ jsaddlePath </> "src/Language/Javascript/JSaddle/Types.hs",
98+ jsaddlePath </> "src/Language/Javascript/JSaddle/Value.hs" ]
99+ closeSession