summaryrefslogtreecommitdiff
path: root/testsuite/tests/lib/System
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/lib/System')
-rw-r--r--testsuite/tests/lib/System/Makefile3
-rw-r--r--testsuite/tests/lib/System/all.T8
-rw-r--r--testsuite/tests/lib/System/exitWith001.hs3
-rw-r--r--testsuite/tests/lib/System/exitWith001.stdout0
-rw-r--r--testsuite/tests/lib/System/getArgs001.hs9
-rw-r--r--testsuite/tests/lib/System/getArgs001.stdout1
-rw-r--r--testsuite/tests/lib/System/getEnv001.hs15
-rw-r--r--testsuite/tests/lib/System/getEnv001.stdout2
-rw-r--r--testsuite/tests/lib/System/system001.hs14
-rw-r--r--testsuite/tests/lib/System/system001.stdout14
10 files changed, 69 insertions, 0 deletions
diff --git a/testsuite/tests/lib/System/Makefile b/testsuite/tests/lib/System/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/lib/System/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/System/all.T b/testsuite/tests/lib/System/all.T
new file mode 100644
index 0000000000..996946fd69
--- /dev/null
+++ b/testsuite/tests/lib/System/all.T
@@ -0,0 +1,8 @@
+
+test('exitWith001', exit_code(42), compile_and_run, [''])
+test('getArgs001', normal, compile_and_run, [''])
+test('getEnv001', normal, compile_and_run, [''])
+
+test('system001', if_platform("i386-unknown-mingw32", expect_fail), \
+ compile_and_run, [''])
+
diff --git a/testsuite/tests/lib/System/exitWith001.hs b/testsuite/tests/lib/System/exitWith001.hs
new file mode 100644
index 0000000000..38dc38a9d5
--- /dev/null
+++ b/testsuite/tests/lib/System/exitWith001.hs
@@ -0,0 +1,3 @@
+import System.Exit (exitWith, ExitCode(..))
+
+main = exitWith (ExitFailure 42)
diff --git a/testsuite/tests/lib/System/exitWith001.stdout b/testsuite/tests/lib/System/exitWith001.stdout
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/lib/System/exitWith001.stdout
diff --git a/testsuite/tests/lib/System/getArgs001.hs b/testsuite/tests/lib/System/getArgs001.hs
new file mode 100644
index 0000000000..4b8df9101b
--- /dev/null
+++ b/testsuite/tests/lib/System/getArgs001.hs
@@ -0,0 +1,9 @@
+import System.Environment (getProgName, getArgs)
+
+main =
+ getProgName >>= \ argv0 ->
+ putStr argv0 >>
+ getArgs >>= \ argv ->
+ sequence (map (\ x -> putChar ' ' >> putStr x) argv) >>
+ putChar '\n'
+
diff --git a/testsuite/tests/lib/System/getArgs001.stdout b/testsuite/tests/lib/System/getArgs001.stdout
new file mode 100644
index 0000000000..e732087713
--- /dev/null
+++ b/testsuite/tests/lib/System/getArgs001.stdout
@@ -0,0 +1 @@
+getArgs001
diff --git a/testsuite/tests/lib/System/getEnv001.hs b/testsuite/tests/lib/System/getEnv001.hs
new file mode 100644
index 0000000000..745f8eaa7f
--- /dev/null
+++ b/testsuite/tests/lib/System/getEnv001.hs
@@ -0,0 +1,15 @@
+
+import System.Environment (getEnv)
+import System.IO.Error (catchIOError, isDoesNotExistError)
+
+main :: IO ()
+main = do
+ term <- getEnv "PATH"
+ putStrLn "Got $PATH"
+ fish <- getEnv "One fish, two fish, red fish, blue fish" `catchIOError` getEnv_except
+ putStrLn fish
+
+getEnv_except :: IOError -> IO String
+getEnv_except ioe
+ | isDoesNotExistError ioe = return ""
+ | otherwise = ioError ioe
diff --git a/testsuite/tests/lib/System/getEnv001.stdout b/testsuite/tests/lib/System/getEnv001.stdout
new file mode 100644
index 0000000000..b191cc3dd1
--- /dev/null
+++ b/testsuite/tests/lib/System/getEnv001.stdout
@@ -0,0 +1,2 @@
+Got $PATH
+
diff --git a/testsuite/tests/lib/System/system001.hs b/testsuite/tests/lib/System/system001.hs
new file mode 100644
index 0000000000..4237d526af
--- /dev/null
+++ b/testsuite/tests/lib/System/system001.hs
@@ -0,0 +1,14 @@
+-- Not run on mingw, because of /dev/null use
+
+import System.Cmd (system)
+import System.Exit (ExitCode(..), exitWith)
+
+main =
+ system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
+ case ec of
+ ExitSuccess -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
+ ExitFailure _ ->
+ system "cat system001.hs 2>/dev/null" >>= \ ec ->
+ case ec of
+ ExitSuccess -> exitWith ExitSuccess
+ ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")
diff --git a/testsuite/tests/lib/System/system001.stdout b/testsuite/tests/lib/System/system001.stdout
new file mode 100644
index 0000000000..4237d526af
--- /dev/null
+++ b/testsuite/tests/lib/System/system001.stdout
@@ -0,0 +1,14 @@
+-- Not run on mingw, because of /dev/null use
+
+import System.Cmd (system)
+import System.Exit (ExitCode(..), exitWith)
+
+main =
+ system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
+ case ec of
+ ExitSuccess -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
+ ExitFailure _ ->
+ system "cat system001.hs 2>/dev/null" >>= \ ec ->
+ case ec of
+ ExitSuccess -> exitWith ExitSuccess
+ ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")