@@ -47,6 +47,7 @@ import System.Exit
4747import System.Process hiding (cwd )
4848import System.FilePath
4949import System.Directory
50+ import System.IO
5051import System.IO.UTF8
5152import System.IO.Silently
5253import qualified System.FilePath.Glob as Glob
@@ -81,10 +82,15 @@ spec = do
8182 Left errs -> fail (P. prettyPrintMultipleErrors P. defaultPPEOptions errs)
8283 Right externs -> return (externs, passingFiles, warningFiles, failingFiles)
8384
85+ outputFile <- runIO $ do
86+ tmp <- getTemporaryDirectory
87+ createDirectoryIfMissing False (tmp </> logpath)
88+ openFile (tmp </> logpath </> logfile) WriteMode
89+
8490 context " Passing examples" $
8591 forM_ passingTestCases $ \ testPurs ->
8692 it (" '" <> takeFileName (getTestMain testPurs) <> " ' should compile and run without error" ) $
87- assertCompiles supportExterns testPurs
93+ assertCompiles supportExterns testPurs outputFile
8894
8995 context " Warning examples" $
9096 forM_ warningTestCases $ \ testPurs -> do
@@ -230,8 +236,9 @@ checkShouldFailWith expected errs =
230236assertCompiles
231237 :: [(P. Module , P. ExternsFile )]
232238 -> [FilePath ]
239+ -> Handle
233240 -> Expectation
234- assertCompiles supportExterns inputFiles =
241+ assertCompiles supportExterns inputFiles outputFile =
235242 assert supportExterns inputFiles checkMain $ \ e ->
236243 case e of
237244 Left errs -> return . Just . P. prettyPrintMultipleErrors P. defaultPPEOptions $ errs
@@ -240,10 +247,13 @@ assertCompiles supportExterns inputFiles =
240247 let entryPoint = modulesDir </> " index.js"
241248 writeFile entryPoint " require('Main').main()"
242249 result <- traverse (\ node -> readProcessWithExitCode node [entryPoint] " " ) process
250+ hPutStrLn outputFile $ " \n " <> takeFileName (last inputFiles) <> " :"
243251 case result of
244252 Just (ExitSuccess , out, err)
245253 | not (null err) -> return $ Just $ " Test wrote to stderr:\n\n " <> err
246- | not (null out) && trim (last (lines out)) == " Done" -> return Nothing
254+ | not (null out) && trim (last (lines out)) == " Done" -> do
255+ hPutStr outputFile out
256+ return Nothing
247257 | otherwise -> return $ Just $ " Test did not finish with 'Done':\n\n " <> out
248258 Just (ExitFailure _, _, err) -> return $ Just err
249259 Nothing -> return $ Just " Couldn't find node.js executable"
@@ -286,3 +296,9 @@ assertDoesNotCompile supportExterns inputFiles shouldFailWith =
286296
287297 where
288298 noPreCheck = const (return () )
299+
300+ logpath :: FilePath
301+ logpath = " purescript-output"
302+
303+ logfile :: FilePath
304+ logfile = " psc-tests.out"
0 commit comments