1-- test that none of System.Posix.User.get* fail
2import Control.Exception as Exception
3import System.Posix.User
4
5check :: Show a => a -> Bool
6check a = show a == show a
7
8p :: Show a => String -> IO a -> IO ()
9p s m = (do putStr (s ++ ": ")
10            c <- fmap check m
11            putStrLn $ if c then "OK" else "I am the pope!")
12        `Exception.catch` (\e -> putStrLn ("ERROR: " ++ show (e::SomeException)))
13
14main :: IO ()
15main = do p "getRealUserID"        $ getRealUserID
16          p "getRealGroupID"       $ getRealGroupID
17          p "getEffectiveUserID"   $ getEffectiveUserID
18          p "getEffectiveGroupID"  $ getEffectiveGroupID
19          p "getGroups"            $ getGroups
20          --p "getLoginName"         $ getLoginName
21          p "getEffectiveUserName" $ getEffectiveUserName
22          p "getGroupEntryForID"   $ getRealGroupID >>= getGroupEntryForID
23          p "getGroupEntryForName" $ getRealGroupID >>= getGroupEntryForID >>= getGroupEntryForName . groupName
24          p "getAllGroupEntries"   $ getAllGroupEntries
25          p "getUserEntryForID"    $ getRealUserID >>= getUserEntryForID
26          --p "getUserEntryForName"  $ getLoginName >>= getUserEntryForName
27          p "getAllUserEntries"    $ getAllUserEntries
28