From b02c4013e3c10d26c6afae675eec77a97c4c10ab Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Thu, 22 Feb 2018 11:23:39 +0000 Subject: [PATCH] tests: add code, public-code and private-code tests First one is deprecated in favour of the second option. The latter is newly introduced and annotates the generated symbols accordingly. v2: Don't introduce small-public-code.c - reuse small-code.c (Pekka) Cc: Pekka Paalanen Signed-off-by: Emil Velikov Reviewed-by: Pekka Paalanen Reviewed-by: Derek Foreman --- Makefile.am | 3 +- tests/data/small-private-code.c | 71 +++++++++++++++++++++++++++++++++ tests/scanner-test.sh | 4 ++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 tests/data/small-private-code.c diff --git a/Makefile.am b/Makefile.am index 4ffce0d7..2731ee76 100644 --- a/Makefile.am +++ b/Makefile.am @@ -299,7 +299,8 @@ EXTRA_DIST += tests/scanner-test.sh \ tests/data/small-server.h \ tests/data/small-code-core.c \ tests/data/small-client-core.h \ - tests/data/small-server-core.h + tests/data/small-server-core.h \ + tests/data/small-private-code.c tests/scanner-test.sh: $(top_builddir)/wayland-scanner diff --git a/tests/data/small-private-code.c b/tests/data/small-private-code.c new file mode 100644 index 00000000..e447607b --- /dev/null +++ b/tests/data/small-private-code.c @@ -0,0 +1,71 @@ +/* SCANNER TEST */ + +/* + * Copyright © 2016 Collabora, Ltd. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include "wayland-util.h" + +#ifndef __has_attribute +# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ +#endif + +#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4 +#define WL_PRIVATE __attribute__ ((visibility("hidden"))) +#else +#define WL_PRIVATE +#endif + +extern const struct wl_interface another_intf_interface; +extern const struct wl_interface intf_not_here_interface; + +static const struct wl_interface *types[] = { + NULL, + &intf_not_here_interface, + NULL, + NULL, + NULL, + NULL, + NULL, + &another_intf_interface, +}; + +static const struct wl_message intf_A_requests[] = { + { "rq1", "sun", types + 0 }, + { "rq2", "nsiufho", types + 1 }, + { "destroy", "", types + 0 }, +}; + +static const struct wl_message intf_A_events[] = { + { "hey", "", types + 0 }, +}; + +WL_PRIVATE const struct wl_interface intf_A_interface = { + "intf_A", 3, + 3, intf_A_requests, + 1, intf_A_events, +}; + diff --git a/tests/scanner-test.sh b/tests/scanner-test.sh index 7854b864..ff250894 100755 --- a/tests/scanner-test.sh +++ b/tests/scanner-test.sh @@ -48,4 +48,8 @@ generate_and_compare "-c code" "small.xml" "small-code-core.c" generate_and_compare "-c client-header" "small.xml" "small-client-core.h" generate_and_compare "-c server-header" "small.xml" "small-server-core.h" +# The existing "code" must produce result identical to "public-code" +generate_and_compare "code" "small.xml" "small-code.c" +generate_and_compare "public-code" "small.xml" "small-code.c" +generate_and_compare "private-code" "small.xml" "small-private-code.c" exit $RETCODE