on master help sign in
Use `nodejs` on ubuntu when running tests
98db965Hamish Mackenzie
tests/DocTest.hs+14−1
@@ -1,13 +1,16 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3{-# LANGUAGE PatternSynonyms #-}
3{-# LANGUAGE PatternSynonyms #-}
4+{-# LANGUAGE LambdaCase #-}
4module Main (
5module Main (
5 main
6 main
6) where
7) where
7
8
8#ifndef ghcjs_HOST_OS
9#ifndef ghcjs_HOST_OS
9import Test.DocTest
10import Test.DocTest
11+import System.IO (stderr, BufferMode(..), stdout, hSetBuffering)
10import System.FilePath ((</>))
12import System.FilePath ((</>))
13+import System.Exit (exitWith, ExitCode(..))
11import System.Process (system)
14import System.Process (system)
12import Control.Concurrent (forkIO)
15import Control.Concurrent (forkIO)
13import Control.Monad (void)
16import Control.Monad (void)
@@ -17,12 +20,22 @@ import Paths_jsaddle (getDataDir)
17
20
18main :: IO ()
21main :: IO ()
19main = do
22main = do
23+ hSetBuffering stdout LineBuffering
24+ hSetBuffering stderr LineBuffering
20#ifdef ghcjs_HOST_OS
25#ifdef ghcjs_HOST_OS
21 putStrLn "TODO find a way to run doctest tests with GHCJS"
26 putStrLn "TODO find a way to run doctest tests with GHCJS"
22 return ()
27 return ()
23#else
28#else
24 dataDir <- getDataDir
29 dataDir <- getDataDir
30+ node <- system "nodejs --version" >>= \case
31+ ExitSuccess -> return "nodejs"
32+ _ -> return "node"
33+ system (node <> " --version") >>= \case
34+ ExitSuccess -> putStrLn "Node.js found"
35+ e -> do
36+ putStrLn "Node.js not found"
37+ exitWith e
25− forkIO . void . system $ "node --harmony " <> dataDir </> "data/jsaddle.js"
38+ forkIO . void . system $ node <> " --harmony " <> dataDir </> "data/jsaddle.js"
26 doctest [
39 doctest [
27 "-hide-all-packages",
40 "-hide-all-packages",
28 "-package=template-haskell-" ++ VERSION_template_haskell,
41 "-package=template-haskell-" ++ VERSION_template_haskell,