diff options
author | Andreas Klebinger <klebinger.andreas@gmx.at> | 2017-07-28 18:25:24 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-07-28 18:25:25 -0400 |
commit | d75bba852db208b1d9fcb84dab01598a765d2534 (patch) | |
tree | 275fc254a9dcba97f2d86f230e3c2257e6328f30 /testsuite | |
parent | 9e9fb57c37c62bb6c90f15b173c5d3632121c66a (diff) | |
download | haskell-d75bba852db208b1d9fcb84dab01598a765d2534.tar.gz |
Add rtsopts ignore and ignoreAll.
These ignore commandline arguments for ignore and commandline as well as
GHCRTS arguments for ignoreAll. Passing RTS flags given on the command
line along to the program by simply skipping processing of these flags
by the RTS.
This fixes #12870.
Test Plan: ./validate
Reviewers: austin, hvr, bgamari, erikd, simonmar
Reviewed By: simonmar
Subscribers: Phyx, rwbarton, thomie
GHC Trac Issues: #12870
Differential Revision: https://phabricator.haskell.org/D3740
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/tests/rts/flags/Makefile | 6 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870_.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870a.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870c.stderr | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870d.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870e.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870f.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870g.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870g.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/T12870h.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/rts/flags/all.T | 44 |
12 files changed, 72 insertions, 0 deletions
diff --git a/testsuite/tests/rts/flags/Makefile b/testsuite/tests/rts/flags/Makefile new file mode 100644 index 0000000000..61900477f9 --- /dev/null +++ b/testsuite/tests/rts/flags/Makefile @@ -0,0 +1,6 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +T1791: + '$(TEST_HC)' T1791.hs -o T1791 -O -rtsopts diff --git a/testsuite/tests/rts/flags/T12870.hs b/testsuite/tests/rts/flags/T12870.hs new file mode 100644 index 0000000000..8d536d58d6 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870.hs @@ -0,0 +1,6 @@ +module T12870 where + +import System.Environment + +main :: IO () +main = getArgs >>= putStr . show diff --git a/testsuite/tests/rts/flags/T12870_.stdout b/testsuite/tests/rts/flags/T12870_.stdout new file mode 100644 index 0000000000..1b04d8a31c --- /dev/null +++ b/testsuite/tests/rts/flags/T12870_.stdout @@ -0,0 +1 @@ +Heap overflow caught! diff --git a/testsuite/tests/rts/flags/T12870a.stdout b/testsuite/tests/rts/flags/T12870a.stdout new file mode 100644 index 0000000000..495a52faf3 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870a.stdout @@ -0,0 +1 @@ +["arg1","+RTS","arg2"]
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/T12870c.stderr b/testsuite/tests/rts/flags/T12870c.stderr new file mode 100644 index 0000000000..0545774941 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870c.stderr @@ -0,0 +1 @@ +T12870c.exe: Most RTS options are disabled. Link with -rtsopts to enable them.
diff --git a/testsuite/tests/rts/flags/T12870d.stdout b/testsuite/tests/rts/flags/T12870d.stdout new file mode 100644 index 0000000000..495a52faf3 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870d.stdout @@ -0,0 +1 @@ +["arg1","+RTS","arg2"]
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/T12870e.stdout b/testsuite/tests/rts/flags/T12870e.stdout new file mode 100644 index 0000000000..4859ab454c --- /dev/null +++ b/testsuite/tests/rts/flags/T12870e.stdout @@ -0,0 +1 @@ +["+RTS","-G2","-RTS","arg1","--RTS","+RTS","arg2"]
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/T12870f.stdout b/testsuite/tests/rts/flags/T12870f.stdout new file mode 100644 index 0000000000..4859ab454c --- /dev/null +++ b/testsuite/tests/rts/flags/T12870f.stdout @@ -0,0 +1 @@ +["+RTS","-G2","-RTS","arg1","--RTS","+RTS","arg2"]
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/T12870g.hs b/testsuite/tests/rts/flags/T12870g.hs new file mode 100644 index 0000000000..e409349827 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870g.hs @@ -0,0 +1,8 @@ +module T12870g where + +import GHC.RTS.Flags (getGCFlags, generations) + +main :: IO () +main = do + gcFlags <- getGCFlags + putStr . show $ generations gcFlags diff --git a/testsuite/tests/rts/flags/T12870g.stdout b/testsuite/tests/rts/flags/T12870g.stdout new file mode 100644 index 0000000000..c7930257df --- /dev/null +++ b/testsuite/tests/rts/flags/T12870g.stdout @@ -0,0 +1 @@ +7
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/T12870h.stdout b/testsuite/tests/rts/flags/T12870h.stdout new file mode 100644 index 0000000000..e440e5c842 --- /dev/null +++ b/testsuite/tests/rts/flags/T12870h.stdout @@ -0,0 +1 @@ +3
\ No newline at end of file diff --git a/testsuite/tests/rts/flags/all.T b/testsuite/tests/rts/flags/all.T new file mode 100644 index 0000000000..33a28e500a --- /dev/null +++ b/testsuite/tests/rts/flags/all.T @@ -0,0 +1,44 @@ +#Standard handling of RTS arguments +test('T12870a', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs'])], + multimod_compile_and_run, + ['T12870', '-rtsopts -main-is T12870']) + +test('T12870b', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs']), + exit_code(1), ignore_stderr], + multimod_compile_and_run, + ['T12870', '-rtsopts=none -main-is T12870']) + +test('T12870c', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs']), + exit_code(1)], + multimod_compile_and_run, + ['T12870', '-rtsopts=some -main-is T12870']) + +test('T12870d', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs'])], + multimod_compile_and_run, + ['T12870', '-main-is T12870']) + +#RTS options should be passed along to the program +test('T12870e', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs'])], + multimod_compile_and_run, + ['T12870', '-rtsopts=ignore -main-is T12870']) +test('T12870f', + [extra_run_opts('+RTS -G2 -RTS arg1 --RTS +RTS arg2'), extra_files(['T12870.hs'])], + multimod_compile_and_run, + ['T12870', '-rtsopts=ignoreAll -main-is T12870']) + +#Check handling of env variables +test('T12870g', + [extra_files(['T12870g.hs']), cmd_prefix('GHCRTS=-G7 '), extra_files(['T12870g.hs'])], + multimod_compile_and_run, + ['T12870g', '-rtsopts -main-is T12870g -with-rtsopts="-G3"']) + +test('T12870h', + [extra_files(['T12870g.hs']), cmd_prefix('GHCRTS=-G7 '), extra_files(['T12870g.hs'])], + multimod_compile_and_run, + ['T12870g', '-rtsopts=ignoreAll -main-is T12870g -with-rtsopts="-G3"']) + |