git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Issue #2453: dump output of psc tests to file
commitaaa6990549ecc7c4cd91c9f32fc7486833ee4169 authorAndy Arvanitis <andyarvanitis@gmail.com> dateWed 7 Dec 2016, 14:08 (10 years ago) parent260a2a3
1 file changed+19−3
tests/TestCompiler.hs+19−3
tests/TestCompiler.hs+19−3
@@ -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"