On 8/16/21 11:58 PM, Alex Henrie wrote:
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- v3: - Replace BROKEN flag with blanket broken case - Only test the options in the tables - Add IP(V6)_(ADD|DROP)_MEMBERSHIP to the tables - Remove undocumented options from the tables - Add socket option -1 (always nonexistent) to the tables --- dlls/ws2_32/tests/sock.c | 235 +++++++++++++++++++++++++++++++++------ 1 file changed, 204 insertions(+), 31 deletions(-)
Looks a lot better, thanks. Since I've already added a comment to patch 3 I'll just add one here as well:
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 51aa0e61282..f60c9d3c75d 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -11429,45 +11429,218 @@ static void test_so_debug(void) closesocket(s); }
-static void test_set_only_options(void) +struct sockopt_validity_test { - unsigned int i; - int ret, len; - int value; - SOCKET s; + int opt; + int get_error; + BOOL get_todo; + int set_error; + BOOL set_todo; +};
- static const struct +static void do_sockopt_validity_tests(const char *type, SOCKET sock, int level, + const struct sockopt_validity_test *tests) +{ + char value[256]; + int count, rc, expected_rc, i; + + for (i = 0; tests[i].opt; i++) { - int level; - int option; + memset(value, 0, sizeof(value)); + count = sizeof(value); + + WSASetLastError(0); + rc = getsockopt(sock, level, tests[i].opt, value, &count); + expected_rc = tests[i].get_error ? SOCKET_ERROR : 0; +todo_wine_if(!tests[i].get_error && tests[i].get_todo) + ok(rc == expected_rc || broken(rc == SOCKET_ERROR && WSAGetLastError() == WSAENOPROTOOPT), + "expected getting %s option %i to return %i, got %i\n", + type, tests[i].opt, expected_rc, rc);
You could consider simplifying these messages a bit with winetest_push_context()/winetest_pop_context().