@@ -12,6 +12,8 @@
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
15+{-# LANGUAGE DoAndIfThenElse #-}
15module Main (main) where
17module Main (main) where
17import qualified Language.PureScript as P
19import qualified Language.PureScript as P
@@ -23,6 +25,7 @@ import System.Exit
23import System.Process
25import System.Process
24import System.FilePath (pathSeparator)
26import System.FilePath (pathSeparator)
25import System.Directory (getCurrentDirectory, getDirectoryContents)
27import System.Directory (getCurrentDirectory, getDirectoryContents)
28+import System.Environment (getArgs)
26import Text.Parsec (ParseError)
29import Text.Parsec (ParseError)
27import qualified Paths_purescript as Paths
30import qualified Paths_purescript as Paths
28import qualified System.IO.UTF8 as U
31import qualified System.IO.UTF8 as U
@@ -62,10 +65,14 @@ assertCompiles inputFile = do
62 putStrLn $ "assert " ++ inputFile ++ " compiles successfully"
65 putStrLn $ "assert " ++ inputFile ++ " compiles successfully"
63 prelude <- preludeFilename
66 prelude <- preludeFilename
64 assert (P.defaultOptions { P.optionsRunMain = True }) [prelude, inputFile] $ either (return . Just) $ \js -> do
67 assert (P.defaultOptions { P.optionsRunMain = True }) [prelude, inputFile] $ either (return . Just) $ \js -> do
69+ if "--run-js" `elem` args
65− (exitCode, out, err) <- readProcessWithExitCode "nodejs" [] js
71+ (exitCode, out, err) <- readProcessWithExitCode "nodejs" [] js
66− case exitCode of
72+ case exitCode of
67− ExitSuccess -> putStrLn out >> return Nothing
73+ ExitSuccess -> putStrLn out >> return Nothing
68− ExitFailure code -> return $ Just err
74+ ExitFailure code -> return $ Just err
70assertDoesNotCompile :: FilePath -> IO ()
77assertDoesNotCompile :: FilePath -> IO ()
71assertDoesNotCompile inputFile = do
78assertDoesNotCompile inputFile = do