@@ -1,13 +1,16 @@
11{-# LANGUAGE CPP #-}
22{-# LANGUAGE OverloadedStrings #-}
33{-# LANGUAGE PatternSynonyms #-}
4+{-# LANGUAGE LambdaCase #-}
45module Main (
56 main
67) where
78
89#ifndef ghcjs_HOST_OS
910import Test.DocTest
11+import System.IO (stderr, BufferMode(..), stdout, hSetBuffering)
1012import System.FilePath ((</>))
13+import System.Exit (exitWith, ExitCode(..))
1114import System.Process (system)
1215import Control.Concurrent (forkIO)
1316import Control.Monad (void)
@@ -17,12 +20,22 @@ import Paths_jsaddle (getDataDir)
1720
1821main :: IO ()
1922main = do
23+ hSetBuffering stdout LineBuffering
24+ hSetBuffering stderr LineBuffering
2025#ifdef ghcjs_HOST_OS
2126 putStrLn "TODO find a way to run doctest tests with GHCJS"
2227 return ()
2328#else
2429 dataDir <- getDataDir
25− forkIO . void . system $ "node --harmony " <> dataDir </> "data/jsaddle.js"
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
38+ forkIO . void . system $ node <> " --harmony " <> dataDir </> "data/jsaddle.js"
2639 doctest [
2740 "-hide-all-packages",
2841 "-package=template-haskell-" ++ VERSION_template_haskell,