aboutsummaryrefslogtreecommitdiffstats
path: root/tests/core/result_spec.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-03-26 13:41:50 +0100
committerGitHub <noreply@github.com>2022-03-26 13:41:50 +0100
commit212d17a039da449043b67529c29851db37acc236 (patch)
tree38411b14487895cef0d7648e198b79fd28793fe6 /tests/core/result_spec.lua
parentrun autogen_metadata.lua (diff)
downloadmason-212d17a039da449043b67529c29851db37acc236.tar
mason-212d17a039da449043b67529c29851db37acc236.tar.gz
mason-212d17a039da449043b67529c29851db37acc236.tar.bz2
mason-212d17a039da449043b67529c29851db37acc236.tar.lz
mason-212d17a039da449043b67529c29851db37acc236.tar.xz
mason-212d17a039da449043b67529c29851db37acc236.tar.zst
mason-212d17a039da449043b67529c29851db37acc236.zip
add async managers (#536)
Diffstat (limited to 'tests/core/result_spec.lua')
-rw-r--r--tests/core/result_spec.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/core/result_spec.lua b/tests/core/result_spec.lua
index 725041de..cd10acb5 100644
--- a/tests/core/result_spec.lua
+++ b/tests/core/result_spec.lua
@@ -85,4 +85,36 @@ describe("result", function()
assert.is_true(mapped:is_failure())
assert.is_true(match.has_match "This is an error$"(mapped:err_or_nil()))
end)
+
+ it("should recover errors", function()
+ local result = Result.failure("call an ambulance"):recover(function(err)
+ return err .. ". but not for me!"
+ end)
+ assert.is_true(result:is_success())
+ assert.equals("call an ambulance. but not for me!", result:get_or_nil())
+ end)
+
+ it("should catch errors in recover", function()
+ local result = Result.failure("call an ambulance"):recover_catching(function(err)
+ error("Oh no... " .. err, 2)
+ end)
+ assert.is_true(result:is_failure())
+ assert.equals("Oh no... call an ambulance", result:err_or_nil())
+ end)
+
+ it("should return results in run_catching", function()
+ local result = Result.run_catching(function()
+ return "Hello world!"
+ end)
+ assert.is_true(result:is_success())
+ assert.equals("Hello world!", result:get_or_nil())
+ end)
+
+ it("should return failures in run_catching", function()
+ local result = Result.run_catching(function()
+ error("Oh noes", 2)
+ end)
+ assert.is_true(result:is_failure())
+ assert.equals("Oh noes", result:err_or_nil())
+ end)
end)