diff options
author | Caleb Maclennan <caleb@alerque.com> | 2023-11-10 09:12:04 +0300 |
---|---|---|
committer | Caleb Maclennan <caleb@alerque.com> | 2023-11-10 09:12:04 +0300 |
commit | 5c4fc93d5f4137bf4c22ddf1a048c907a4a26727 (patch) | |
tree | a9a68e1f6a9c3bfe2b64fa1c3a4098865b7d3b5d /test/excepttest.lua | |
parent | ccef3bc4e2aa6ee5b997a80aabb58f4ff0b0e98f (diff) | |
parent | 43a97b7f0053313b43906371dbdc226271e6c8ab (diff) | |
download | luasocket-hjelmeland-patch-1.tar.gz luasocket-hjelmeland-patch-1.tar.bz2 luasocket-hjelmeland-patch-1.zip |
Merge branch 'master' into hjelmeland-patch-1hjelmeland-patch-1
Diffstat (limited to 'test/excepttest.lua')
-rw-r--r-- | test/excepttest.lua | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/test/excepttest.lua b/test/excepttest.lua index ce9f197..80c9cb8 100644 --- a/test/excepttest.lua +++ b/test/excepttest.lua | |||
@@ -1,6 +1,30 @@ | |||
1 | local socket = require("socket") | 1 | local socket = require("socket") |
2 | try = socket.newtry(function() | 2 | |
3 | print("finalized!!!") | 3 | local finalizer_called |
4 | |||
5 | local func = socket.protect(function(err, ...) | ||
6 | local try = socket.newtry(function() | ||
7 | finalizer_called = true | ||
8 | end) | ||
9 | |||
10 | if err then | ||
11 | return error(err, 0) | ||
12 | else | ||
13 | return try(...) | ||
14 | end | ||
4 | end) | 15 | end) |
5 | try = socket.protect(try) | 16 | |
6 | print(try(nil, "it works")) | 17 | local ret1, ret2, ret3 = func(false, 1, 2, 3) |
18 | assert(not finalizer_called, "unexpected finalizer call") | ||
19 | assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values") | ||
20 | |||
21 | ret1, ret2, ret3 = func(false, false, "error message") | ||
22 | assert(finalizer_called, "finalizer not called") | ||
23 | assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values") | ||
24 | |||
25 | local err = {key = "value"} | ||
26 | ret1, ret2 = pcall(func, err) | ||
27 | assert(not ret1, "error not rethrown") | ||
28 | assert(ret2 == err, "incorrect error rethrown") | ||
29 | |||
30 | print("OK") | ||