Commit e647752e authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

testsuite: Ensure that ffi005 output order is predictable

The libc output buffer wasn't being flushed, making the order
system-depedent.
parent 543dfaab
...@@ -28,11 +28,11 @@ test('ffi004', skip, compile_and_run, ['']) ...@@ -28,11 +28,11 @@ test('ffi004', skip, compile_and_run, [''])
# On x86, the test suffers from floating-point differences due to the # On x86, the test suffers from floating-point differences due to the
# use of 80-bit internal precision when using the native code generator. # use of 80-bit internal precision when using the native code generator.
# #
test('ffi005', [ omit_ways(prof_ways), test('ffi005', [ omit_ways(prof_ways + ['ghci']),
when(arch('i386'), skip), when(arch('i386'), skip),
when(platform('i386-apple-darwin'), expect_broken(4105)), when(platform('i386-apple-darwin'), expect_broken(4105)),
exit_code(3) ], exit_code(3) ],
compile_and_run, ['']) compile_and_run, ['ffi005_c.c'])
test('ffi006', normal, compile_and_run, ['']) test('ffi006', normal, compile_and_run, [''])
......
...@@ -20,10 +20,12 @@ main = do ...@@ -20,10 +20,12 @@ main = do
-- putStrLn $ "errno == " ++ show err -- putStrLn $ "errno == " ++ show err
putStrLn "\nTesting puts (and withString)" putStrLn "\nTesting puts (and withString)"
withCString "Test successful" puts hFlush stdout
withCString "Test puts successful" puts
flushStdout -- Flush the libc output buffer
putStrLn "\nTesting peekArray0" putStrLn "\nTesting peekArray0"
s <- withCString "Test successful" (peekArray0 (castCharToCChar '\0')) s <- withCString "Test peekArray0 successful" (peekArray0 (castCharToCChar '\0'))
putStr (map castCCharToChar s) putStr (map castCCharToChar s)
-- disabled due to use of non-portable constants in arguments to open: -- disabled due to use of non-portable constants in arguments to open:
...@@ -71,6 +73,7 @@ withBuffer sz m = do ...@@ -71,6 +73,7 @@ withBuffer sz m = do
return s return s
foreign import ccall puts :: CString -> IO CInt foreign import ccall puts :: CString -> IO CInt
foreign import ccall "flush_stdout" flushStdout :: IO ()
-- foreign import ccall "open" open' :: CString -> CInt -> IO CInt -- foreign import ccall "open" open' :: CString -> CInt -> IO CInt
-- foreign import ccall "open" open2' :: CString -> CInt -> CInt -> IO CInt -- foreign import ccall "open" open2' :: CString -> CInt -> CInt -> IO CInt
......
...@@ -3,9 +3,10 @@ Testing sin==mysin (should return lots of Trues) ...@@ -3,9 +3,10 @@ Testing sin==mysin (should return lots of Trues)
[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True] [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
Testing puts (and withString) Testing puts (and withString)
Test puts successful
Testing peekArray0 Testing peekArray0
Test successful Test peekArray0 successful
Testing sin==dynamic_sin (should return lots of Trues) Testing sin==dynamic_sin (should return lots of Trues)
[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True] [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
...@@ -16,4 +17,3 @@ Testing sin==Id wrapped_sin (should return lots of Trues) ...@@ -16,4 +17,3 @@ Testing sin==Id wrapped_sin (should return lots of Trues)
[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True] [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
Testing exit Testing exit
Test successful
#include <stdio.h>
void flush_stdout(void)
{
fflush(stdout);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment