diff options
author | Simon McVittie <smcv@collabora.com> | 2022-10-27 12:58:53 +0100 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2022-10-27 14:50:48 +0100 |
commit | a62dd272d8acc38e90a9320f274ec0a4ddb4e45a (patch) | |
tree | 0b1717a131a37cd1f0f5c05ac1cca93efbe74dd0 | |
parent | c59d553890b8eed712f5c3eab2edf934b95049f9 (diff) | |
download | glib-a62dd272d8acc38e90a9320f274ec0a4ddb4e45a.tar.gz |
tests: Test that we can include all headers with an old MAX_VERSION
In principle we could script this so that each max-version.c is compiled
26 times, once per possible MAX_VERSION, but I haven't implemented
that here: just pinning to the oldest possible version is sufficient to
reproduce #2796.
These aren't included in the installed-tests, since they don't really
do anything at runtime (the important thing is that they compile
without warnings).
Reproduces: #2796
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r-- | gio/tests/max-version.c | 74 | ||||
-rw-r--r-- | gio/tests/meson.build | 1 | ||||
-rw-r--r-- | glib/tests/max-version.c | 50 | ||||
-rw-r--r-- | glib/tests/meson.build | 1 | ||||
-rw-r--r-- | gmodule/tests/max-version.c | 46 | ||||
-rw-r--r-- | gmodule/tests/meson.build | 1 | ||||
-rw-r--r-- | gobject/tests/max-version.c | 48 | ||||
-rw-r--r-- | gobject/tests/meson.build | 1 |
8 files changed, 222 insertions, 0 deletions
diff --git a/gio/tests/max-version.c b/gio/tests/max-version.c new file mode 100644 index 000000000..b6735cea6 --- /dev/null +++ b/gio/tests/max-version.c @@ -0,0 +1,74 @@ +/* + * Copyright 2022 Collabora Ltd. + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef GLIB_VERSION_MAX_ALLOWED +/* This is the oldest version macro available */ +#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_26 +#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_26 +#endif + +#include <glib.h> + +/* All the headers that can validly be included in third-party code */ +#include <gio/gio.h> +#include <gio/gnetworking.h> + +#define G_SETTINGS_ENABLE_BACKEND +#include <gio/gsettingsbackend.h> + +#ifdef G_OS_UNIX +#include <gio/gdesktopappinfo.h> +#include <gio/gfiledescriptorbased.h> +#include <gio/gunixconnection.h> +#include <gio/gunixcredentialsmessage.h> +#include <gio/gunixfdlist.h> +#include <gio/gunixfdmessage.h> +#include <gio/gunixinputstream.h> +#include <gio/gunixmounts.h> +#include <gio/gunixoutputstream.h> +#include <gio/gunixsocketaddress.h> +#endif + +#ifdef G_OS_WIN32 +#include <gio/gwin32inputstream.h> +#include <gio/gwin32outputstream.h> +#include <gio/gwin32registrykey.h> +#endif + +#ifdef HAVE_COCOA +#include <gio/gosxappinfo.h> +#endif + +static void +nothing (void) +{ + /* This doesn't really do anything: the real "test" is at compile time. + * Just make sure the GIO library gets linked. */ + g_debug ("Loaded %s from GIO library", g_type_name (G_TYPE_CANCELLABLE)); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/max-version/tested-at-compile-time", nothing); + return g_test_run (); +} diff --git a/gio/tests/meson.build b/gio/tests/meson.build index 4ed8f6561..2014ee6e8 100644 --- a/gio/tests/meson.build +++ b/gio/tests/meson.build @@ -84,6 +84,7 @@ gio_tests = { }, 'inet-address' : {}, 'io-stream' : {}, + 'max-version' : {'install' : false}, 'memory-input-stream' : {}, 'memory-monitor' : {}, 'memory-output-stream' : {}, diff --git a/glib/tests/max-version.c b/glib/tests/max-version.c new file mode 100644 index 000000000..3b27adb2f --- /dev/null +++ b/glib/tests/max-version.c @@ -0,0 +1,50 @@ +/* + * Copyright 2022 Collabora Ltd. + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef GLIB_VERSION_MAX_ALLOWED +/* This is the oldest version macro available */ +#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_26 +#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_26 +#endif + +/* All the headers that can validly be included in third-party code */ +#include <glib.h> +#include <glib/gi18n.h> +#include <glib/gprintf.h> +#include <glib/gstdio.h> + +#ifdef G_OS_UNIX +#include <glib-unix.h> +#endif + +static void +nothing (void) +{ + /* This doesn't really do anything: the real "test" is at compile time. */ +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/max-version/tested-at-compile-time", nothing); + return g_test_run (); +} diff --git a/glib/tests/meson.build b/glib/tests/meson.build index 8b5c58b8c..a9d8c4951 100644 --- a/glib/tests/meson.build +++ b/glib/tests/meson.build @@ -56,6 +56,7 @@ glib_tests = { 'markup-collect' : {}, 'markup-escape' : {}, 'markup-subparser' : {}, + 'max-version' : {'install' : false}, 'memchunk' : {}, 'mem-overflow' : { 'link_args' : cc.get_id() == 'gcc' and cc.version().version_compare('> 6') diff --git a/gmodule/tests/max-version.c b/gmodule/tests/max-version.c new file mode 100644 index 000000000..bae63b7bb --- /dev/null +++ b/gmodule/tests/max-version.c @@ -0,0 +1,46 @@ +/* + * Copyright 2022 Collabora Ltd. + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef GLIB_VERSION_MAX_ALLOWED +/* This is the oldest version macro available */ +#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_26 +#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_26 +#endif + +#include <glib.h> + +#include <gmodule.h> + +static void +nothing (void) +{ + /* This doesn't really do anything: the real "test" is at compile time. + * Just make sure the GModule library gets linked. */ + g_debug ("GModule supported: %s", g_module_supported () ? "yes" : "no"); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/max-version/tested-at-compile-time", nothing); + return g_test_run (); +} diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build index a751f3185..9e4f5a39d 100644 --- a/gmodule/tests/meson.build +++ b/gmodule/tests/meson.build @@ -1,4 +1,5 @@ gmodule_tests = { + 'max-version' : {'install': false}, 'module-test-library' : { 'export_dynamic' : true, 'source': 'module-test.c', diff --git a/gobject/tests/max-version.c b/gobject/tests/max-version.c new file mode 100644 index 000000000..fa359503f --- /dev/null +++ b/gobject/tests/max-version.c @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Collabora Ltd. + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef GLIB_VERSION_MAX_ALLOWED +/* This is the oldest version macro available */ +#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_26 +#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_26 +#endif + +#include <glib.h> + +/* All the headers that can validly be included in third-party code */ +#include <glib-object.h> +#include <gobject/gvaluecollector.h> + +static void +nothing (void) +{ + /* This doesn't really do anything: the real "test" is at compile time. + * Just make sure the GObject library gets linked. */ + g_debug ("Loaded %s", g_type_name (G_TYPE_OBJECT)); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/max-version/tested-at-compile-time", nothing); + return g_test_run (); +} diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build index 09f23e8bf..8475b3aa2 100644 --- a/gobject/tests/meson.build +++ b/gobject/tests/meson.build @@ -47,6 +47,7 @@ gobject_tests = { 'source' : ['dynamictype.c', 'testmodule.c'], }, 'enums' : {}, + 'max-version' : {'install': false}, 'override' : {}, 'param' : {}, 'references' : {}, |