Skip to content

Commit aaa6990

Browse files
committed
Issue purescript#2453: dump output of psc tests to file
1 parent 260a2a3 commit aaa6990

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

tests/TestCompiler.hs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import System.Exit
4747
import System.Process hiding (cwd)
4848
import System.FilePath
4949
import System.Directory
50+
import System.IO
5051
import System.IO.UTF8
5152
import System.IO.Silently
5253
import 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 =
230236
assertCompiles
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

Comments
 (0)