diff options
| author | Thijs Schreijer <thijs@thijsschreijer.nl> | 2026-08-31 08:26:32 +0200 |
|---|---|---|
| committer | Thijs Schreijer <thijs@thijsschreijer.nl> | 2026-08-31 08:26:32 +0200 |
| commit | 4863f32b358a8d533f629084a86fb4932ebbd2f3 (patch) | |
| tree | 273e8f333d27447ccc42b493e57698e9fc984e1a | |
| parent | 827ae20771d34912a8f79b50dc68e6430945b9eb (diff) | |
| download | luasocket-4863f32b358a8d533f629084a86fb4932ebbd2f3.tar.gz luasocket-4863f32b358a8d533f629084a86fb4932ebbd2f3.tar.bz2 luasocket-4863f32b358a8d533f629084a86fb4932ebbd2f3.zip | |
chore(test): add 2 tests reusing partial results
Tests to show the socket isn't left in an undetermined state due
to dataloss, since the partial results are returned to the user.
| -rw-r--r-- | test/testclnt.lua | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/test/testclnt.lua b/test/testclnt.lua index ee64d3a..bbe48bb 100644 --- a/test/testclnt.lua +++ b/test/testclnt.lua | |||
| @@ -684,6 +684,14 @@ function test_maxsize() | |||
| 684 | assert(d == string.rep("a", 100) and e == nil, "B5 failed: CRLF at boundary") | 684 | assert(d == string.rep("a", 100) and e == nil, "B5 failed: CRLF at boundary") |
| 685 | pass("ok") | 685 | pass("ok") |
| 686 | 686 | ||
| 687 | remote(string.format([[data:send(string.rep('a',%d) .. '\n')]], 101)) | ||
| 688 | d, e, p = data:receive("*l", nil, 100) | ||
| 689 | assert(d == nil and e == "oversized" and p == string.rep("a", 100), | ||
| 690 | "B6 failed: one-over-budget should be oversized") | ||
| 691 | d, e = data:receive("*l", p, 150) -- increase limit, try again with prefix | ||
| 692 | assert(d == string.rep("a", 101) and e == nil, | ||
| 693 | "B6 failed: leftover byte and terminator should still be there") | ||
| 694 | |||
| 687 | -- Group C: *l and I1 (timeout/close at the cap) | 695 | -- Group C: *l and I1 (timeout/close at the cap) |
| 688 | reconnect() | 696 | reconnect() |
| 689 | printf("I1 (timeout/closed at the cap): ") | 697 | printf("I1 (timeout/closed at the cap): ") |
| @@ -748,11 +756,20 @@ function test_maxsize() | |||
| 748 | reconnect() | 756 | reconnect() |
| 749 | remote(string.format([[data:send(string.rep('a',%d)) data:close() data = nil]], 250)) | 757 | remote(string.format([[data:send(string.rep('a',%d)) data:close() data = nil]], 250)) |
| 750 | d, e, p = data:receive("*a", "", 100) | 758 | d, e, p = data:receive("*a", "", 100) |
| 751 | assert(e == "oversized" and #p == 100, "E3 failed: first chunk") | 759 | assert(e == "oversized" and #p == 100, "E3a failed: first chunk") |
| 752 | d, e, p = data:receive("*a", "", 100) | 760 | d, e, p = data:receive("*a", "", 100) |
| 753 | assert(e == "oversized" and #p == 100, "E3 failed: second chunk") | 761 | assert(e == "oversized" and #p == 100, "E3a failed: second chunk") |
| 754 | d, e = data:receive("*a", "", 100) | 762 | d, e = data:receive("*a", "", 100) |
| 755 | assert(d == string.rep("a", 50) and e == nil, "E3 failed: final chunk") | 763 | assert(d == string.rep("a", 50) and e == nil, "E3a failed: final chunk") |
| 764 | |||
| 765 | reconnect() | ||
| 766 | remote(string.format([[data:send(string.rep('a',%d)) data:close() data = nil]], 250)) | ||
| 767 | d, e, p = data:receive("*a", "", 100) | ||
| 768 | assert(e == "oversized" and #p == 100, "E3b failed: first chunk") | ||
| 769 | d, e, p = data:receive("*a", p, 200) -- increase maxsize, try again with prefix | ||
| 770 | assert(e == "oversized" and #p == 200, "E3b failed: second chunk") | ||
| 771 | d, e = data:receive("*a", p, 300) -- increase maxsize, try again with prefix | ||
| 772 | assert(d == string.rep("a", 250) and e == nil, "E3b failed: final chunk") | ||
| 756 | 773 | ||
| 757 | reconnect() | 774 | reconnect() |
| 758 | remote(string.format([[data:send(string.rep('a',%d))]], 100)) | 775 | remote(string.format([[data:send(string.rep('a',%d))]], 100)) |
