Strings for IO driver errors
This commit is contained in:
22
test/Spec.hs
22
test/Spec.hs
@@ -1553,15 +1553,15 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
-- Malformed action tests
|
||||
, testCase "unknown IO action tag returns err result" $ do
|
||||
final <- runIOSource "main = io (pair 99 t)"
|
||||
final @?= ioErrResult 40
|
||||
final @?= ioErrResult "invalid action"
|
||||
|
||||
, testCase "malformed Bind returns err result" $ do
|
||||
final <- runIOSource "main = io (pair 1 t)"
|
||||
final @?= ioErrResult 40
|
||||
final @?= ioErrResult "invalid action"
|
||||
|
||||
, testCase "malformed ReadFile payload returns err result" $ do
|
||||
final <- runIOSource "main = io (readFile (t t))"
|
||||
final @?= ioErrResult 41
|
||||
final @?= ioErrResult "invalid string"
|
||||
|
||||
-- Permission tests
|
||||
, testCase "allowed read path succeeds" $
|
||||
@@ -1586,7 +1586,7 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
unlines
|
||||
[ "main = io (readFile \"" ++ deniedPath ++ "\")"
|
||||
]
|
||||
result @?= ioErrResult 20
|
||||
result @?= ioErrResult "permission denied"
|
||||
|
||||
, testCase "writeFile denied path returns err result" $
|
||||
withSystemTempDirectory "tricu-io-write-denied" $ \dir -> do
|
||||
@@ -1597,7 +1597,7 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
unlines
|
||||
[ "main = io (writeFile \"" ++ deniedPath ++ "\" \"x\")"
|
||||
]
|
||||
result @?= ioErrResult 20
|
||||
result @?= ioErrResult "permission denied"
|
||||
|
||||
, testCase "path prefix does not allow prefix bypass" $
|
||||
withSystemTempDirectory "tricu-io-prefix" $ \dir -> do
|
||||
@@ -1611,7 +1611,7 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
unlines
|
||||
[ "main = io (readFile \"" ++ bypassPath ++ "\")"
|
||||
]
|
||||
result @?= ioErrResult 20
|
||||
result @?= ioErrResult "permission denied"
|
||||
|
||||
-- Pure test
|
||||
, testCase "pure performs no effects" $ do
|
||||
@@ -1820,14 +1820,14 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
unlines
|
||||
[ "main = io (await (pair \"task\" 0))"
|
||||
]
|
||||
final @?= ioErrResult 61
|
||||
final @?= ioErrResult "self await"
|
||||
|
||||
, testCase "await invalid handle returns async error" $ do
|
||||
(final, _) <- runIOSourceWith unsafePerms Leaf Leaf $
|
||||
unlines
|
||||
[ "main = io (await 123)"
|
||||
]
|
||||
final @?= ioErrResult 60
|
||||
final @?= ioErrResult "invalid task handle"
|
||||
|
||||
, testCase "yield returns unit and resumes continuation" $ do
|
||||
(final, _) <- runIOSourceWith unsafePerms Leaf Leaf $
|
||||
@@ -1890,7 +1890,7 @@ ioDriverTests = testGroup "IO driver tests"
|
||||
[ "main = io (bind (fork (await (pair \"task\" 0))) (h :"
|
||||
, " await h))"
|
||||
]
|
||||
final @?= ioErrResult 63
|
||||
final @?= ioErrResult "cyclic await"
|
||||
|
||||
, testCase "writeBytes and readFile roundtrip binary data" $
|
||||
withSystemTempDirectory "tricu-io-bytes" $ \dir -> do
|
||||
@@ -1942,5 +1942,5 @@ runIOSourceWithEnv perms readerEnv source = fmap fst $ runIOSourceWith perms rea
|
||||
ioOkResult :: T -> T
|
||||
ioOkResult val = Fork (Stem Leaf) (Fork val Leaf)
|
||||
|
||||
ioErrResult :: Integer -> T
|
||||
ioErrResult code = Fork Leaf (Fork (ofNumber code) Leaf)
|
||||
ioErrResult :: String -> T
|
||||
ioErrResult msg = Fork Leaf (Fork (ofString msg) Leaf)
|
||||
|
||||
Reference in New Issue
Block a user