summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luasocket/test/excepttest.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket/test/excepttest.lua')
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/test/excepttest.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/excepttest.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/excepttest.lua
new file mode 100644
index 00000000000..80c9cb80a49
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/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")