[PATCH] tests: Fix "new ID" type handling in argument_from_va_list test

Pekka Paalanen ppaalanen at gmail.com
Thu Feb 23 12:58:51 UTC 2017


On Thu, 23 Feb 2017 13:47:41 +0100
Carlos Garnacho <carlosg at gnome.org> wrote:

> New IDs are internally dealt with as objects, however this test
> expected to deal with 'n' as the uint32_t type that's just seen
> through the wire. We should give it an object instead, and
> expect an object from it.
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=99899
> 
> Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> ---
>  tests/connection-test.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/connection-test.c b/tests/connection-test.c
> index 1c688f1..8be6c38 100644
> --- a/tests/connection-test.c
> +++ b/tests/connection-test.c
> @@ -142,7 +142,7 @@ va_list_wrapper(const char *signature, union wl_argument *args, int count, ...)
>  TEST(argument_from_va_list)
>  {
>  	union wl_argument args[WL_CLOSURE_MAX_ARGS];
> -	struct wl_object fake_object;
> +	struct wl_object fake_object, fake_new_object;
>  	struct wl_array fake_array;
>  
>  	va_list_wrapper("i", args, 1, 100);
> @@ -154,13 +154,13 @@ TEST(argument_from_va_list)
>  
>  	va_list_wrapper("?iuf?sonah", args, 8,
>  			102, 103, wl_fixed_from_int(104), "value",
> -			&fake_object, 105, &fake_array, 106);
> +			&fake_object, &fake_new_object, &fake_array, 106);
>  	assert(args[0].i == 102);
>  	assert(args[1].u == 103);
>  	assert(args[2].f == wl_fixed_from_int(104));
>  	assert(strcmp(args[3].s, "value") == 0);
>  	assert(args[4].o == &fake_object);
> -	assert(args[5].n == 105);
> +	assert(args[5].o == &fake_new_object);
>  	assert(args[6].a == &fake_array);
>  	assert(args[7].h == 106);
>  }

Makes perfect sense to me by matching the function to be tested and the
use in wl_closure_marshal() which reads .o, not .n field.

Good thing the bug is in the test, not in the library.

Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

Kalev, please test. Obvously the broken test passed for every other
arch.

I suppose that maybe 64-bit alignment of pointers saved us on x86_64?
Or why else would the vararg parsing have succeeded for the elements
after the new_id arg?


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20170223/dd49b728/attachment.sig>


More information about the wayland-devel mailing list