diff options
author | chai <chaifix@163.com> | 2021-10-20 13:40:34 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-20 13:40:34 +0800 |
commit | ff0f488c97fe8b554b909a0057cebc4c860eac8f (patch) | |
tree | 4e47262b52ffce7e9cfeaaeeab46371243bcaa78 /ThirdParty/luasocket/test/excepttest.lua | |
parent | dde719dd575090b36aaa3ad85bb3cabf33f36c5a (diff) |
+luasocket src
Diffstat (limited to 'ThirdParty/luasocket/test/excepttest.lua')
-rw-r--r-- | ThirdParty/luasocket/test/excepttest.lua | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ThirdParty/luasocket/test/excepttest.lua b/ThirdParty/luasocket/test/excepttest.lua new file mode 100644 index 0000000..80c9cb8 --- /dev/null +++ b/ThirdParty/luasocket/test/excepttest.lua @@ -0,0 +1,30 @@ +local socket = require("socket") + +local finalizer_called + +local func = socket.protect(function(err, ...) + local try = socket.newtry(function() + finalizer_called = true + end) + + if err then + return error(err, 0) + else + return try(...) + end +end) + +local ret1, ret2, ret3 = func(false, 1, 2, 3) +assert(not finalizer_called, "unexpected finalizer call") +assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values") + +ret1, ret2, ret3 = func(false, false, "error message") +assert(finalizer_called, "finalizer not called") +assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values") + +local err = {key = "value"} +ret1, ret2 = pcall(func, err) +assert(not ret1, "error not rethrown") +assert(ret2 == err, "incorrect error rethrown") + +print("OK") |