packages feed

Elm-0.12.1: tests/hs/LibTest.hs

module Main where

import Control.Monad (unless)
import Data.List (isInfixOf)
import System.Directory
import System.Exit
import System.FilePath
import System.Process

import Elm.Internal.Paths as Elm

main :: IO ()
main = do
  top <- getCurrentDirectory
  let ioScript s = top</>"IO"</>s
  runCmd "git submodule update --init"
  out <- readProcess "npm" ["ls", "--parseable"] ""
  unless ("jsdom" `isInfixOf` out) $ runCmd "npm install jsdom"
  setCurrentDirectory $ top</>"tests"</>"elm"
  runCmd $ concat [top</>"dist"</>"build"</>"elm"</>"elm --make --only-js --src-dir=" , top</>"automaton", " --src-dir=", top</>"IO", " --src-dir=", top</>"Elm-Test", " Test.elm"]
  runCmd $ unwords ["cat ", ioScript "prescript.js", Elm.runtime, "build"</>"Test.js", ioScript "handler.js", "> exe.js"]
  exitWith =<< waitForProcess =<< (runCommand "node exe.js")
  where runCmd cmd = do
          putStrLn cmd
          exitCode <- waitForProcess =<< runCommand cmd
          case exitCode of
            ExitSuccess   -> return ()
            ExitFailure _ -> error "something went wrong"