on master help sign in
Update travis
fc59916Hamish Mackenzie
.travis.yml+37−18
@@ -1,29 +1,48 @@
1−sudo: required
1+language: c
2−services:
2+
3− - docker
3+#ghc:
4+# - "8.4.4"
5+
6+sudo: false
7+
8+dist: xenial
9+#addons:
10+# apt:
11+# sources:
12+# - ppa:hvr/ghc
13+# packages:
14+# - libgirepository1.0-dev
15+# - libwebkit2gtk-4.0-dev,phantomjs
4
16
5cache:
17cache:
6 directories:
18 directories:
7− - .cabal
19+ - $HOME/.cabal
8− - .ghc
20+ - $HOME/.ghc
9
21
10−env:
22+matrix:
23+ include:
11−# - CABALVER=1.24 GHCVER=7.10.3 OSVER=xenial
24+# - env: CABALVER=2.0 GHCVER=8.2.2
12− - CABALVER=1.24 GHCVER=8.0.1 OSVER=xenial
25+# addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7,libgirepository1.0-dev,libwebkit2gtk-4.0-dev,phantomjs], sources: [hvr-ghc]}}
13− - CABALVER=1.24 GHCVER=8.0.2 OSVER=xenial
26+ - env: CABALVER=2.2 GHCVER=8.4.4
14− - CABALVER=1.24 GHCVER=7.10.3 OSVER=trusty
27+ addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.4,happy-1.19.5,alex-3.1.7,libgirepository1.0-dev,libwebkit2gtk-4.0-dev,phantomjs], sources: [hvr-ghc]}}
15− - CABALVER=1.24 GHCVER=8.0.1 OSVER=trusty
28+# - env: CABALVER=2.4 GHCVER=8.6.3
29+# addons: {apt: {packages: [cabal-install-2.4,ghc-8.6.3,happy-1.19.5,alex-3.1.7,libgirepository1.0-dev,libwebkit2gtk-4.0-dev,phantomjs], sources: [hvr-ghc]}}
16− - CABALVER=1.24 GHCVER=8.0.2 OSVER=trusty
30+# - env: CABALVER=head GHCVER=head
31+# addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5,alex-3.1.7,libgirepository1.0-dev,libwebkit2gtk-4.0-dev,phantomjs], sources: [hvr-ghc]}}
32+ allow_failures:
33+ - env: CABALVER=head GHCVER=head
17
34
18before_install:
35before_install:
19− - docker build -t ghc -f travis/$OSVER.Dockerfile travis
36+ - export PATH=$HOME/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/alex/3.1.7/bin:/opt/happy/1.19.5/bin:$PATH
37+
38+install:
39+ - cabal --version
40+ - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
41+ - cabal update
20
42
21script:
43script:
22− - docker run -v `pwd`:/build ghc
23− sh -x -c "
24− apt-get install -y cabal-install-$CABALVER ghc-$GHCVER &&
25− export PATH=\$HOME/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/alex/3.1.7/bin:/opt/happy/1.19.5/bin:\$PATH &&
26− ./travis/build.sh"
44+ ./travis/build.sh
45+
27notifications:
46notifications:
28 irc:
47 irc:
29 channels: "irc.freenode.net#ghcjs"
48 channels: "irc.freenode.net#ghcjs"
jsaddle-warp/jsaddle-warp.cabal+4
@@ -60,7 +60,9 @@ test-suite test-tool
60 containers -any,
60 containers -any,
61 deepseq -any,
61 deepseq -any,
62 doctest >=0.10.1 && <0.17,
62 doctest >=0.10.1 && <0.17,
63+ exceptions -any,
63 filepath >=1.4.0.0 && <1.5,
64 filepath >=1.4.0.0 && <1.5,
65+ foreign-store -any,
64 ghc-prim -any,
66 ghc-prim -any,
65 http-types -any,
67 http-types -any,
66 jsaddle -any,
68 jsaddle -any,
@@ -70,10 +72,12 @@ test-suite test-tool
70 ref-tf -any,
72 ref-tf -any,
71 primitive -any,
73 primitive -any,
72 process >=1.2.3.0 && <1.7,
74 process >=1.2.3.0 && <1.7,
75+ random -any,
73 stm -any,
76 stm -any,
74 text -any,
77 text -any,
75 time -any,
78 time -any,
76 transformers -any,
79 transformers -any,
80+ unliftio-core -any,
77 wai -any,
81 wai -any,
78 wai-websockets -any,
82 wai-websockets -any,
79 warp -any,
83 warp -any,
jsaddle-warp/src/Language/Javascript/JSaddle/Test.hs+13−12
@@ -17,21 +17,22 @@ module Language.Javascript.JSaddle.Test (
17 , listWindowProperties
17 , listWindowProperties
18) where
18) where
19
19
20−import Control.Applicative
21import Prelude hiding((!!), catch)
20import Prelude hiding((!!), catch)
22−import Control.Monad.Trans.Reader (runReaderT)
21+import Control.Applicative
23−import Language.Javascript.JSaddle
22+import Control.Concurrent (threadDelay, forkIO, ThreadId)
24−import qualified Data.Text as T
25−import Control.Monad.IO.Class (MonadIO(..))
26−import Control.Monad (forever, forM)
27−import Control.Lens.Getter ((^.))
28−import Data.Monoid ((<>))
29import Control.Concurrent.MVar
23import Control.Concurrent.MVar
30 (tryTakeMVar, putMVar, takeMVar, newEmptyMVar, MVar)
24 (tryTakeMVar, putMVar, takeMVar, newEmptyMVar, MVar)
31−import System.IO.Unsafe (unsafePerformIO)
25+import Control.Lens.Getter ((^.))
32−import Control.Concurrent (threadDelay, forkIO, ThreadId)
26+import Control.Monad (forever, forM)
27+import Control.Monad.IO.Class (MonadIO(..))
28+import Control.Monad.Trans.Reader (runReaderT)
29+import Data.Monoid ((<>))
33import Data.Text (Text)
30import Data.Text (Text)
31+import qualified Data.Text as T
32+import Language.Javascript.JSaddle
34import Language.Javascript.JSaddle.Warp (run)
33import Language.Javascript.JSaddle.Warp (run)
34+import System.IO.Unsafe (unsafePerformIO)
35+import System.Timeout (timeout)
35
36
36context :: MVar JSContextRef
37context :: MVar JSContextRef
37context = unsafePerformIO newEmptyMVar
38context = unsafePerformIO newEmptyMVar
@@ -52,12 +53,12 @@ startServer =
52
53
53-- >>> testJSaddle $ ((global ^. js "console" . js "log") # ["Hello"])
54-- >>> testJSaddle $ ((global ^. js "console" . js "log") # ["Hello"])
54testJSaddle :: ToJSVal val => JSM val -> IO ()
55testJSaddle :: ToJSVal val => JSM val -> IO ()
55−testJSaddle f = do
56+testJSaddle f = timeout 10000000 (do
56 startServer
57 startServer
57 c <- takeMVar context
58 c <- takeMVar context
58 runReaderT (unJSM $ (f >>= valToText >>= liftIO . putStrLn . T.unpack)
59 runReaderT (unJSM $ (f >>= valToText >>= liftIO . putStrLn . T.unpack)
59 `catch` \ (JSException e) -> valToText e >>= liftIO . putStrLn . T.unpack) c
60 `catch` \ (JSException e) -> valToText e >>= liftIO . putStrLn . T.unpack) c
60− putMVar context c
61+ putMVar context c) >>= maybe (putStrLn "testJSaddle timed out") return
61
62
62debugLog :: String -> IO ()
63debugLog :: String -> IO ()
63debugLog _ = return ()
64debugLog _ = return ()
jsaddle-warp/tests/DocTest.hs+20−7
@@ -11,18 +11,17 @@ import System.IO (stderr, BufferMode(..), stdout, hSetBuffering)
11import System.FilePath ((</>))
11import System.FilePath ((</>))
12import System.Exit (exitFailure, exitWith, ExitCode(..))
12import System.Exit (exitFailure, exitWith, ExitCode(..))
13import System.Process (readProcess, system)
13import System.Process (readProcess, system)
14−import Control.Concurrent (forkIO)
14+import Control.Concurrent
15+ (takeMVar, newEmptyMVar, forkIO, threadDelay, putMVar)
15import Control.Monad (void)
16import Control.Monad (void)
16import Control.Monad.IO.Class (MonadIO(..))
17import Control.Monad.IO.Class (MonadIO(..))
17import Data.Monoid ((<>))
18import Data.Monoid ((<>))
18import System.Environment (getArgs)
19import System.Environment (getArgs)
19−import Language.Javascript.JSaddle.Run.Files (jsaddleJs)
20−import qualified Data.ByteString.Lazy.Char8 as BS (unpack)
21import Test.WebDriver (runSession, defaultConfig, openPage, closeSession)
20import Test.WebDriver (runSession, defaultConfig, openPage, closeSession)
22
21
23main :: IO ()
22main :: IO ()
24main = do
23main = do
25− putStrLn "Hello"
24+ putStrLn "Testing JSaddle"
26 jsaddlePath <- getArgs >>= \case
25 jsaddlePath <- getArgs >>= \case
27 [arg] -> return arg
26 [arg] -> return arg
28 _ -> do
27 _ -> do
@@ -30,14 +29,18 @@ main = do
30 exitFailure
29 exitFailure
31 hSetBuffering stdout LineBuffering
30 hSetBuffering stdout LineBuffering
32 hSetBuffering stderr LineBuffering
31 hSetBuffering stderr LineBuffering
32+ putStrLn "Checking for phantomjs"
33 node <- system "phantomjs --version" >>= \case
33 node <- system "phantomjs --version" >>= \case
34 ExitSuccess -> return ()
34 ExitSuccess -> return ()
35 e -> do
35 e -> do
36 putStrLn "phantomjs not found"
36 putStrLn "phantomjs not found"
37 exitWith e
37 exitWith e
38+ putStrLn "Starting phantomjs"
38− forkIO . void $ readProcess "phantomjs" ["--webdriver=4444"] (BS.unpack jsaddleJs) >>= putStr
39+ forkIO . void $ readProcess "phantomjs" ["--webdriver=4444"] "" >>= putStr
39− runSession defaultConfig $ do
40+ threadDelay 5000000
40− openPage "http://localhost:3709"
41+ putStrLn "Running Tests"
42+ done <- newEmptyMVar
43+ forkIO $ do
41 liftIO $ doctest [
44 liftIO $ doctest [
42 "-hide-all-packages",
45 "-hide-all-packages",
43 "-package=base-" ++ VERSION_base,
46 "-package=base-" ++ VERSION_base,
@@ -61,6 +64,10 @@ main = do
61 "-package=ref-tf-" ++ VERSION_ref_tf,
64 "-package=ref-tf-" ++ VERSION_ref_tf,
62 "-package=deepseq-" ++ VERSION_deepseq,
65 "-package=deepseq-" ++ VERSION_deepseq,
63 "-package=ghc-prim-" ++ VERSION_ghc_prim,
66 "-package=ghc-prim-" ++ VERSION_ghc_prim,
67+ "-package=exceptions-" ++ VERSION_exceptions,
68+ "-package=unliftio-core-" ++ VERSION_unliftio_core,
69+ "-package=random-" ++ VERSION_random,
70+ "-package=foreign-store-" ++ VERSION_foreign_store,
64 "-i" <> "src",
71 "-i" <> "src",
65 "-i" <> "src-ghc",
72 "-i" <> "src-ghc",
66 "src/Language/Javascript/JSaddle/Test.hs",
73 "src/Language/Javascript/JSaddle/Test.hs",
@@ -83,6 +90,7 @@ main = do
83 jsaddlePath </> "src/Language/Javascript/JSaddle/Arguments.hs",
90 jsaddlePath </> "src/Language/Javascript/JSaddle/Arguments.hs",
84 jsaddlePath </> "src/Language/Javascript/JSaddle/Classes.hs",
91 jsaddlePath </> "src/Language/Javascript/JSaddle/Classes.hs",
85 jsaddlePath </> "src/Language/Javascript/JSaddle/Classes/Internal.hs",
92 jsaddlePath </> "src/Language/Javascript/JSaddle/Classes/Internal.hs",
93+ jsaddlePath </> "src/Language/Javascript/JSaddle/Debug.hs",
86 jsaddlePath </> "src/Language/Javascript/JSaddle/Evaluate.hs",
94 jsaddlePath </> "src/Language/Javascript/JSaddle/Evaluate.hs",
87 jsaddlePath </> "src/Language/Javascript/JSaddle/Exception.hs",
95 jsaddlePath </> "src/Language/Javascript/JSaddle/Exception.hs",
88 jsaddlePath </> "src/Language/Javascript/JSaddle/Monad.hs",
96 jsaddlePath </> "src/Language/Javascript/JSaddle/Monad.hs",
@@ -96,4 +104,9 @@ main = do
96 jsaddlePath </> "src/Language/Javascript/JSaddle/String.hs",
104 jsaddlePath </> "src/Language/Javascript/JSaddle/String.hs",
97 jsaddlePath </> "src/Language/Javascript/JSaddle/Types.hs",
105 jsaddlePath </> "src/Language/Javascript/JSaddle/Types.hs",
98 jsaddlePath </> "src/Language/Javascript/JSaddle/Value.hs" ]
106 jsaddlePath </> "src/Language/Javascript/JSaddle/Value.hs" ]
107+ putMVar done ()
108+ threadDelay 5000000
109+ runSession defaultConfig $ do
110+ openPage "http://127.0.0.1:3709"
111+ liftIO $ takeMVar done
99 closeSession
112 closeSession
travis/build.sh+2−12
@@ -6,18 +6,8 @@ GHCVER=`ghc --numeric-version`
6
6
7JSADDLE_WARP_VERSION=`head -n2 jsaddle-warp/jsaddle-warp.cabal | tail -n1 | sed 's/[^0-9.]//g'`
7JSADDLE_WARP_VERSION=`head -n2 jsaddle-warp/jsaddle-warp.cabal | tail -n1 | sed 's/[^0-9.]//g'`
8
8
9−if [[ -d .cabal && -d .ghc ]]; then
10− cp -a .cabal .ghc /root
11−fi
12−
13cabal update
9cabal update
14−cabal new-build --constraint='Cabal>=1.24.2.0' 'jsaddle-warp:lib:jsaddle-warp' 'jsaddle-warp:test:test-tool'
10+cabal new-build 'jsaddle-warp:lib:jsaddle-warp' 'jsaddle-warp:test:test-tool'
15cd jsaddle-warp
11cd jsaddle-warp
16−GHC_PACKAGE_PATH=/opt/ghc/$GHCVER/lib/ghc-$GHCVER/package.conf.d:~/.cabal/store/ghc-$GHCVER/package.db:./dist-newstyle/packagedb/ghc-$GHCVER jsaddle_datadir=`pwd` ../dist-newstyle/build/jsaddle-warp-$JSADDLE_WARP_VERSION/build/test-tool/test-tool ../jsaddle-warp
12+GHC_PACKAGE_PATH=/opt/ghc/$GHCVER/lib/ghc-$GHCVER/package.conf.d:~/.cabal/store/ghc-$GHCVER/package.db:../dist-newstyle/packagedb/ghc-$GHCVER ../dist-newstyle/build/x86_64-linux/ghc-$GHCVER/jsaddle-warp-$JSADDLE_WARP_VERSION/t/test-tool/build/test-tool/test-tool ../jsaddle
17−
18−# update the cache
19−rm -rf .cabal
20−cp -a /root/.cabal ./
21−rm -rf .ghc
22−cp -a /root/.ghc ./
23
13