diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-06-11 12:48:32 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-06-16 06:26:38 -0400 |
commit | a0f683795a72f7b82962d24098b1dc7c2b04ab29 (patch) | |
tree | ac3081c146b9360ac4c39d761d732295a5c1862f /testsuite/tests/rts | |
parent | 81608e82dfed7e78c1bba189f26c8c760f7c196a (diff) | |
download | haskell-a0f683795a72f7b82962d24098b1dc7c2b04ab29.tar.gz |
testsuite: Ensure T5423 flushes C output buffer
Previously T5423 would fail to flush the printf output buffer.
Consequently it was platform-dependent whether the C or Haskell print
output would be emitted first.
Diffstat (limited to 'testsuite/tests/rts')
-rw-r--r-- | testsuite/tests/rts/Makefile | 3 | ||||
-rw-r--r-- | testsuite/tests/rts/T5423.hs | 7 | ||||
-rw-r--r-- | testsuite/tests/rts/T5423.stdout | 2 | ||||
-rw-r--r-- | testsuite/tests/rts/T5423_c.c | 6 |
4 files changed, 15 insertions, 3 deletions
diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile index 32c2b17e27..51f2746c1f 100644 --- a/testsuite/tests/rts/Makefile +++ b/testsuite/tests/rts/Makefile @@ -37,7 +37,8 @@ T5423: $(RM) T5423_cmm.o T5423.o T5423.hi T5423$(exeext) "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423_cmm.cmm "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423.hs - "$(TEST_HC)" $(TEST_HC_OPTS) -v0 T5423.o T5423_cmm.o -o T5423$(exeext) + "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423_c.c + "$(TEST_HC)" $(TEST_HC_OPTS) -v0 T5423.o T5423_cmm.o T5423_c.o -o T5423$(exeext) ./T5423 .PHONY: T9405 diff --git a/testsuite/tests/rts/T5423.hs b/testsuite/tests/rts/T5423.hs index 2565c3f002..cda87048d7 100644 --- a/testsuite/tests/rts/T5423.hs +++ b/testsuite/tests/rts/T5423.hs @@ -7,8 +7,13 @@ foreign import prim "test" test :: Int# -> Int# -> Int# -> Int# -> Int# -> Int# -> Int# -> Int# -> Int# -> Int# -> Int# +foreign import ccall "flush_stdout" flush_stdout :: IO () + v :: Int v = I# (test 111# 112# 113# 114# 115# 116# 117# 118# 119# 120#) main :: IO () -main = print v +main = do + n <- return $! v + flush_stdout -- Ensure that libc output buffer is flushed + print n diff --git a/testsuite/tests/rts/T5423.stdout b/testsuite/tests/rts/T5423.stdout index 478bb27b19..fc92992860 100644 --- a/testsuite/tests/rts/T5423.stdout +++ b/testsuite/tests/rts/T5423.stdout @@ -1,2 +1,2 @@ -120 111 112 113 114 115 116 117 118 119 120 +120 diff --git a/testsuite/tests/rts/T5423_c.c b/testsuite/tests/rts/T5423_c.c new file mode 100644 index 0000000000..efc9c845f5 --- /dev/null +++ b/testsuite/tests/rts/T5423_c.c @@ -0,0 +1,6 @@ +#include <stdio.h> + +void flush_stdout(void) +{ + fflush(stdout); +} |