on 494dfdb help sign in
elk/tests/libraries/LibraryTest.hs
49 lines 1.5 kB history raw
1module Main where
3import Control.Monad (unless)
4import Data.List (isInfixOf)
5import System.Directory
6import System.Exit
7import System.FilePath
8import System.Process
10import Elm.Internal.Paths as Elm
12main :: IO ()
13main = do
14 top <- getCurrentDirectory
16 -- setup submodules and npm
17 runCmd "git" ["submodule", "update", "--init"]
18 out <- readProcess "npm" ["ls", "--parseable"] ""
19 unless ("jsdom" `isInfixOf` out) $ runCmd "npm" ["install","jsdom"]
21 -- setup actual library tests
22 setCurrentDirectory $ top </> "tests" </> "libraries"
23 let localCompiler = joinPath [ top, "dist", "build", "elm", "elm" ]
24 runCmd localCompiler [ "--make"
25 , "--only-js"
26 , "--src-dir=" ++ top </> "automaton"
27 , "--src-dir=" ++ top </> "IO"
28 , "--src-dir=" ++ top </> "Elm-Test"
29 , "Test.elm"
30 ]
32 -- run tests
33 let ioScript s = top </> "IO" </> s
34 files = [ ioScript "prescript.js"
35 , Elm.runtime
36 , "build" </> "Test.js"
37 , ioScript "handler.js"
38 ]
39 exe <- readProcess "cat" files ""
40 writeFile "exe.js" exe
41 exitWith =<< waitForProcess =<< (runCommand "node exe.js")
43runCmd :: String -> [String] -> IO ()
44runCmd cmd args = do
45 putStrLn (cmd ++ " " ++ unwords args)
46 (exitCode, _stdout, stderr) <- readProcessWithExitCode cmd args ""
47 case exitCode of
48 ExitSuccess -> return ()
49 ExitFailure _ -> error stderr