@@ -92,7 +92,9 @@ spec = do
92 getShouldFailWith = fmap extractFailWiths . readUTF8File
92 getShouldFailWith = fmap extractFailWiths . readUTF8File
94 extractFailWiths = lines >>> mapMaybe (stripPrefix "-- @shouldFailWith ") >>> map trim
94 extractFailWiths = lines >>> mapMaybe (stripPrefix "-- @shouldFailWith ") >>> map trim
96+trim :: String -> String
95− trim = dropWhile isSpace >>> reverse >>> dropWhile isSpace >>> reverse
97+trim = dropWhile isSpace >>> reverse >>> dropWhile isSpace >>> reverse
97modulesDir :: FilePath
99modulesDir :: FilePath
98modulesDir = ".test_modules" </> "node_modules"
100modulesDir = ".test_modules" </> "node_modules"
@@ -156,7 +158,10 @@ assertCompiles inputFiles foreigns = do
156 writeFile entryPoint "require('Main').main()"
158 writeFile entryPoint "require('Main').main()"
157 result <- traverse (\node -> readProcessWithExitCode node [entryPoint] "") process
159 result <- traverse (\node -> readProcessWithExitCode node [entryPoint] "") process
158 case result of
160 case result of
159− Just (ExitSuccess, _, _) -> return Nothing
161+ Just (ExitSuccess, out, err)
162+ | not (null err) -> return $ Just $ "Test wrote to stderr:\n\n" <> err
163+ | trim (last (lines out)) == "Done" -> return Nothing
164+ | otherwise -> return $ Just $ "Test did not finish with 'Done':\n\n" <> out
160 Just (ExitFailure _, _, err) -> return $ Just err
165 Just (ExitFailure _, _, err) -> return $ Just err
161 Nothing -> return $ Just "Couldn't find node.js executable"
166 Nothing -> return $ Just "Couldn't find node.js executable"