aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Simon Marlow <simonmar@microsoft.com>2007-03-05 14:52:58 +0000
committerGravatar Simon Marlow <simonmar@microsoft.com>2007-03-05 14:52:58 +0000
commit6aca925ef28bf0a0a311bc8e33ec9a5aa2ded6ad (patch)
tree56d12852ae789bc48d0fb8b15837e20a6ca718b1 /tests
parent7b8f8d32be1a6b14317a6373bc4a40b03285aa4d (diff)
add tests from GHC testsuite
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile7
-rw-r--r--tests/all.T20
-rw-r--r--tests/fileexist01.hs5
-rw-r--r--tests/fileexist01.stdout2
-rw-r--r--tests/forkprocess01.hs9
-rw-r--r--tests/forkprocess01.stdout1
-rw-r--r--tests/getEnvironment01.hs8
-rw-r--r--tests/getEnvironment01.stdout1
-rw-r--r--tests/queryfdoption01.hs11
-rw-r--r--tests/queryfdoption01.stdout2
-rw-r--r--tests/signals001.hs110
-rw-r--r--tests/signals001.stdout4
-rw-r--r--tests/signals001.stdout-i386-unknown-freebsd4
-rw-r--r--tests/signals001.stdout-i386-unknown-openbsd4
-rw-r--r--tests/signals001.stdout-sparc-unknown-openbsd4
-rw-r--r--tests/signals001.stdout-x86_64-unknown-openbsd4
-rw-r--r--tests/signals002.hs15
-rw-r--r--tests/signals002.stdout2
18 files changed, 213 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..6a0abcf
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,7 @@
+# This Makefile runs the tests using GHC's testsuite framework. It
+# assumes the package is part of a GHC build tree with the testsuite
+# installed in ../../../testsuite.
+
+TOP=../../../testsuite
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/tests/all.T b/tests/all.T
new file mode 100644
index 0000000..17c7acb
--- /dev/null
+++ b/tests/all.T
@@ -0,0 +1,20 @@
+if config.platform == 'i386-unknown-mingw32':
+ conf = skip
+else:
+ conf = normal
+
+test('signals001', conf, compile_and_run, ['-package unix -cpp'])
+test('signals002', compose(only_compiler_types(['ghc']), conf),
+ compile_and_run, ['-package unix'])
+test('fileexist01', conf, compile_and_run, ['-package unix'])
+test('forkprocess01', compose(only_compiler_types(['ghc']),
+ compose(expect_fail_for('threaded2'), conf)),
+ compile_and_run, ['-package unix'])
+
+if config.platform == 'i386-unknown-freebsd':
+ conf = expect_fail
+
+test('queryfdoption01', compose(omit_ways(['ghci']), compose(only_compiler_types(['ghc']), conf)),
+ compile_and_run, ['-package unix'])
+test('getEnvironment01', conf, compile_and_run, ['-package unix'])
+
diff --git a/tests/fileexist01.hs b/tests/fileexist01.hs
new file mode 100644
index 0000000..7bddda9
--- /dev/null
+++ b/tests/fileexist01.hs
@@ -0,0 +1,5 @@
+-- test System.Posix.fileExist
+import System.Posix
+main = do
+ fileExist "fileexist01.hs" >>= print
+ fileExist "does not exist" >>= print
diff --git a/tests/fileexist01.stdout b/tests/fileexist01.stdout
new file mode 100644
index 0000000..1cc8b5e
--- /dev/null
+++ b/tests/fileexist01.stdout
@@ -0,0 +1,2 @@
+True
+False
diff --git a/tests/forkprocess01.hs b/tests/forkprocess01.hs
new file mode 100644
index 0000000..b4bc78b
--- /dev/null
+++ b/tests/forkprocess01.hs
@@ -0,0 +1,9 @@
+-- Test that we can call exitFailure in a forked process, and have it
+-- communicated properly to the parent.
+import System.Exit
+import System.Posix.Process
+main = do
+ p <- forkProcess exitFailure
+ r <- getProcessStatus True False p
+ print r
+
diff --git a/tests/forkprocess01.stdout b/tests/forkprocess01.stdout
new file mode 100644
index 0000000..423e57d
--- /dev/null
+++ b/tests/forkprocess01.stdout
@@ -0,0 +1 @@
+Just (Exited (ExitFailure 1))
diff --git a/tests/getEnvironment01.hs b/tests/getEnvironment01.hs
new file mode 100644
index 0000000..fb50fab
--- /dev/null
+++ b/tests/getEnvironment01.hs
@@ -0,0 +1,8 @@
+
+-- test for trac #781 (GHCi on x86_64, cannot link to static data in
+-- shared libs)
+
+import System.Posix.Env
+
+main = getEnvironment >>= (print . (0 <=) . length)
+
diff --git a/tests/getEnvironment01.stdout b/tests/getEnvironment01.stdout
new file mode 100644
index 0000000..0ca9514
--- /dev/null
+++ b/tests/getEnvironment01.stdout
@@ -0,0 +1 @@
+True
diff --git a/tests/queryfdoption01.hs b/tests/queryfdoption01.hs
new file mode 100644
index 0000000..46833c1
--- /dev/null
+++ b/tests/queryfdoption01.hs
@@ -0,0 +1,11 @@
+import System.Posix.IO
+import System.IO
+
+showNBR = do
+ v <- System.Posix.IO.queryFdOption 0 System.Posix.IO.NonBlockingRead
+ putStr $ "NonBlockingRead = " ++ (show v) ++ "\n"
+
+main = do
+ showNBR
+ System.Posix.IO.setFdOption 0 System.Posix.IO.NonBlockingRead True
+ showNBR
diff --git a/tests/queryfdoption01.stdout b/tests/queryfdoption01.stdout
new file mode 100644
index 0000000..1ed43b5
--- /dev/null
+++ b/tests/queryfdoption01.stdout
@@ -0,0 +1,2 @@
+NonBlockingRead = False
+NonBlockingRead = True
diff --git a/tests/signals001.hs b/tests/signals001.hs
new file mode 100644
index 0000000..e278550
--- /dev/null
+++ b/tests/signals001.hs
@@ -0,0 +1,110 @@
+import System.Posix.Signals
+
+#if __GLASGOW_HASKELL__ >= 603
+#include "ghcconfig.h"
+#else
+#include "config.h"
+#endif
+
+main = do
+ print (testMembers emptySignalSet)
+ print (testMembers emptyset)
+ print (testMembers fullSignalSet)
+ print (testMembers fullset)
+
+fullset = internalAbort `addSignal`
+ realTimeAlarm `addSignal`
+ busError `addSignal`
+ processStatusChanged `addSignal`
+ continueProcess `addSignal`
+ floatingPointException `addSignal`
+ lostConnection `addSignal`
+ illegalInstruction `addSignal`
+ keyboardSignal `addSignal`
+ killProcess `addSignal`
+ openEndedPipe `addSignal`
+ keyboardTermination `addSignal`
+ segmentationViolation `addSignal`
+ softwareStop `addSignal`
+ softwareTermination `addSignal`
+ keyboardStop `addSignal`
+ backgroundRead `addSignal`
+ backgroundWrite `addSignal`
+ userDefinedSignal1 `addSignal`
+ userDefinedSignal2 `addSignal`
+#if HAVE_SIGPOLL
+ pollableEvent `addSignal`
+#endif
+ profilingTimerExpired `addSignal`
+ badSystemCall `addSignal`
+ breakpointTrap `addSignal`
+ urgentDataAvailable `addSignal`
+ virtualTimerExpired `addSignal`
+ cpuTimeLimitExceeded `addSignal`
+ fileSizeLimitExceeded `addSignal`
+ emptySignalSet
+
+emptyset = internalAbort `deleteSignal`
+ realTimeAlarm `deleteSignal`
+ busError `deleteSignal`
+ processStatusChanged `deleteSignal`
+ continueProcess `deleteSignal`
+ floatingPointException `deleteSignal`
+ lostConnection `deleteSignal`
+ illegalInstruction `deleteSignal`
+ keyboardSignal `deleteSignal`
+ killProcess `deleteSignal`
+ openEndedPipe `deleteSignal`
+ keyboardTermination `deleteSignal`
+ segmentationViolation `deleteSignal`
+ softwareStop `deleteSignal`
+ softwareTermination `deleteSignal`
+ keyboardStop `deleteSignal`
+ backgroundRead `deleteSignal`
+ backgroundWrite `deleteSignal`
+ userDefinedSignal1 `deleteSignal`
+ userDefinedSignal2 `deleteSignal`
+#if HAVE_SIGPOLL
+ pollableEvent `deleteSignal`
+#endif
+ profilingTimerExpired `deleteSignal`
+ badSystemCall `deleteSignal`
+ breakpointTrap `deleteSignal`
+ urgentDataAvailable `deleteSignal`
+ virtualTimerExpired `deleteSignal`
+ cpuTimeLimitExceeded `deleteSignal`
+ fileSizeLimitExceeded `deleteSignal`
+ fullSignalSet
+
+testMembers set = [
+ internalAbort `inSignalSet` set,
+ realTimeAlarm `inSignalSet` set,
+ busError `inSignalSet` set,
+ processStatusChanged `inSignalSet` set,
+ continueProcess `inSignalSet` set,
+ floatingPointException `inSignalSet` set,
+ lostConnection `inSignalSet` set,
+ illegalInstruction `inSignalSet` set,
+ keyboardSignal `inSignalSet` set,
+ killProcess `inSignalSet` set,
+ openEndedPipe `inSignalSet` set,
+ keyboardTermination `inSignalSet` set,
+ segmentationViolation `inSignalSet` set,
+ softwareStop `inSignalSet` set,
+ softwareTermination `inSignalSet` set,
+ keyboardStop `inSignalSet` set,
+ backgroundRead `inSignalSet` set,
+ backgroundWrite `inSignalSet` set,
+ userDefinedSignal1 `inSignalSet` set,
+ userDefinedSignal2 `inSignalSet` set,
+#if HAVE_SIGPOLL
+ pollableEvent `inSignalSet` set,
+#endif
+ profilingTimerExpired `inSignalSet` set,
+ badSystemCall `inSignalSet` set,
+ breakpointTrap `inSignalSet` set,
+ urgentDataAvailable `inSignalSet` set,
+ virtualTimerExpired `inSignalSet` set,
+ cpuTimeLimitExceeded `inSignalSet` set,
+ fileSizeLimitExceeded `inSignalSet` set
+ ]
diff --git a/tests/signals001.stdout b/tests/signals001.stdout
new file mode 100644
index 0000000..b90d1f3
--- /dev/null
+++ b/tests/signals001.stdout
@@ -0,0 +1,4 @@
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/tests/signals001.stdout-i386-unknown-freebsd b/tests/signals001.stdout-i386-unknown-freebsd
new file mode 100644
index 0000000..b90d1f3
--- /dev/null
+++ b/tests/signals001.stdout-i386-unknown-freebsd
@@ -0,0 +1,4 @@
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/tests/signals001.stdout-i386-unknown-openbsd b/tests/signals001.stdout-i386-unknown-openbsd
new file mode 100644
index 0000000..b90d1f3
--- /dev/null
+++ b/tests/signals001.stdout-i386-unknown-openbsd
@@ -0,0 +1,4 @@
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/tests/signals001.stdout-sparc-unknown-openbsd b/tests/signals001.stdout-sparc-unknown-openbsd
new file mode 100644
index 0000000..b90d1f3
--- /dev/null
+++ b/tests/signals001.stdout-sparc-unknown-openbsd
@@ -0,0 +1,4 @@
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/tests/signals001.stdout-x86_64-unknown-openbsd b/tests/signals001.stdout-x86_64-unknown-openbsd
new file mode 100644
index 0000000..b90d1f3
--- /dev/null
+++ b/tests/signals001.stdout-x86_64-unknown-openbsd
@@ -0,0 +1,4 @@
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/tests/signals002.hs b/tests/signals002.hs
new file mode 100644
index 0000000..b2e6e5e
--- /dev/null
+++ b/tests/signals002.hs
@@ -0,0 +1,15 @@
+import System.Posix
+import Control.Concurrent
+
+-- !!! test blockSignals, raiseSignal, unblockSignals, getPendingSignals
+
+main = do
+ blockSignals ( userDefinedSignal1 `addSignal` emptySignalSet )
+ raiseSignal userDefinedSignal1
+ set <- getPendingSignals
+ print (userDefinedSignal1 `inSignalSet` set)
+ m <- newEmptyMVar
+ installHandler userDefinedSignal1
+ (Catch (putStrLn "hello" >> putMVar m ())) Nothing
+ awaitSignal (Just emptySignalSet)
+ takeMVar m
diff --git a/tests/signals002.stdout b/tests/signals002.stdout
new file mode 100644
index 0000000..8e3dc9e
--- /dev/null
+++ b/tests/signals002.stdout
@@ -0,0 +1,2 @@
+True
+hello