This is a step towards getting rid of the __start_test_section and
__stop_test_section usage. The old macros assumed that all individual
variables assigned to the test section would be packed there as if in an
array. Mostly this seemed to work, too, with some magical alignment
fixes in the past. It was not guaranteed to work.
With the new test listing macros, we collect an actual array. The
drawback is that we need to mention all the test entry points explicitly
and they look like normal functions in the code - which they now are.
Their argument typing is safe, and their arguments are explicitly
visible. We rely on the compiler to complain about unused functions if
any entry point is forgotten from the array.
The array is still put into the test section, because this seems to be
the only feasible way of letting the harness code support both the old
and new test listing macros at the same time. This allows converting
each test program individually.
TESTFN_ARG() needs an explicit cast on the function pointer type,
because the data argument pointer type will not match const void*.
As an example of using the new macros, linalg-test.c is converted.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This simplifies our test declaration macros a little bit. The aim is to
modify struct weston_test_entry to be more suitable for a future where
__attribute__((section)) is no longer used. The test functions will be
plain functions and not something baked with macros, so wrappers have
to go.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
We need to be able to test cases where a client tries to use a not-ready
image description. Turns out passing an fd for a directory fails just
the right way without triggering protocol errors.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Add the set_output function to weston_touch_device to allow touch binding
interfaces to re-assign the touch-to-output mapping.
Signed-off-by: liang zhou <liang.zhou@gehealthcare.com>
Similar to "input: Introduce weston_key_event struct" this struct is for
touch events. With this we add the initialization helpers, pass the
weston_touch_event as a const and remove the timespec argument.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Move to a const struct weston_pointer_axis_event, add the base_event
struct that contains the timespec and use the initialization functions.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Similar to "input: Introduce weston_key_event struct", this adds a way
to store all required information with a common struct event to be able
to pass it down and to allow also pass additonal information like
Perfetto's flow IDs.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
This adapts weston_pointer_motion_event struct to align in with
weston_key_event and includes the following changes:
- include base struct
- remove the const struct timespec from calls and use the base struct
- pass by a const pointer motion event in all the callers
- add init helper
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Rather than passing a time stamp, key, key state and key event state
use a weston_key_event struct to pass by all that using it.
This would allow in further patches to attach additional information
like a flow id used by Perfetto debug annotations for input events.
This patch has no functional change as it is now.
All the callees will just will extract the required information out of
struct weston_key_event.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
If the compositor fails to initialise in such a way that we want to
skip, don't leak the idle source.
This fixes the ASan failure, but still results in a TAP-parsing failure.
Signed-off-by: Daniel Stone <daniels@collabora.com>
We may break out of the loop if wl_display_dispatch(client->wl_display)
fails and returns -1. So we need to assert that info->done is true after
the loop.
Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
struct weston_curtain_params is changed to match the new
weston_surface_set_label() API. For now, I did not bother hooking up the
static label flavor.
Part of migration away from get_label().
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Enhancing the color-manager machinery in the client library to suffice
for color-management-test.c as well, we can remove a copy of the
boilerplate code.
The changes include renaming things, moving parameters from
image_description to image_description_info, deleting the list of image
descriptions and cleaning them up explicitly, and creating the
color-management surface and output objects on-demand.
image_description_get_information() explicitly waits for the done event
instead of relying on a ropund-trip.
Bit operations got helper functions. Gamut parameter printing was
re-written.
In spite of the massive changes, the tests themselves still work exactly
the same.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
There are two partial implementations of the color-manager
protocol boilerplate, in color-management-test.c and
color-management-parametric-test.c. This patch moves the implementation
from the latter into the client library, and uses the helper bit().
This paves way for moving the other partial implementation as well,
de-duplicating the overlapping code, and allowing new test programs to
poke at color-manager.
The color-manager is initialized on-demand, because mosts tests in the
suite do not need it. This avoids a little of unnecessary work.
In anticipation of wp_color_management_v1 version 2, the interface
version is explicit and ensured.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
weston-test-client-helper.h includes all these generated header files. I
could not figure out what might guarantee that these headers are
generated before compiling anything that includes
weston-test-client-helper.h, maybe we are simply lucky. I could not make
the build fail by building a single test program from a clean builddir.
Yet, this seems like the right thing to do.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
There is no need to special-case this generated header in foreach-tests
if we list it as an order-only dependency implied by dep_test_client.
The viewporter header is already there.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
A minor simplification to tests/meson.build. The disabler object
prevents the test from being built or run.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
It was getting difficult to see which files were part of the test
harness and which were actual tests. Moving the harness sources into a
subdirectory helps to see at a glance what is what, and will allow using
shorter file names in the future.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>