Commit Graph

26362 Commits

Author SHA1 Message Date
Philip Withnall
088df783c0 docs: Convert GVariant Specification to reStructuredText
This is a verbatim conversion of the GVariant Specification from
https://people.gnome.org/~desrt/gvariant-serialisation.pdf /
https://raw.githubusercontent.com/ostreedev/gvariant-rs/master/docs/gvariant-serialisation.pdf
to reStructuredText.

This is for several reasons:
 1. The canonical copy has gone offline due to people.gnome.org being
    shut down.
 2. GLib is the reference implementation of GVariant, so should probably
    host the specification (unless someone wants to host it on
    freedesktop-specs).
 3. Moving it out of a PDF and into reStructuredText should allow for
    amendments. The specification has a few problems, typos and
    oversights in its original form, and it would be good to canonically
    fix them without having to write a separate addendum document.

This conversion is verbatim, and does not change the content of the
document at all, even to fix typos and broken links (which there are a
small number of in the PDF).

This describes what I’m labelling as version 1.0 of the GVariant
serialisation format. Updates to the specification can bump this version
number, in subsequent commits.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-11-01 13:12:53 +00:00
Matthias Clasen
13e48ff963 tests: Tweak the task tests
Tweak the g_task_set_name test to use a non-literal string,
so we don't test g_task_set_static_name twice.
2022-11-01 11:48:52 +00:00
Matthias Clasen
525e3953ef tests: Add a test for g_task_set_static_name()
The test checks that the original string
is returned by g_task_get_name().
2022-11-01 11:48:46 +00:00
Matthias Clasen
99c7d60869 gtask: Add g_task_set_static_name()
Similar to g_source_set_static_name, this avoids
strdup overhead for debug-only information in
possibly hot code paths.

We also add a macro wrapper for g_task_set_name that
uses __builtin_constant_p to decide whether to use
g_task_set_name or g_task_set_static_name.
2022-11-01 11:48:38 +00:00
Matthias Clasen
794ee60306 gdbusconnection: Set a name on all sources
We already set names on most sources, this
one was just forgotten. This lets us set
a static name, and prevents g_task_attach_source
from setting a non-static one.
2022-11-01 11:48:33 +00:00
Matthias Clasen
01f2c5aec9 gtask: Don't overwrite source names
Only set a name in g_task_attach_source
if the source does not already have one.

Including a new test by Philip Withnall.
2022-11-01 11:48:08 +00:00
Philip Withnall
110cddb90c Merge branch 'wip/smcv/os-detect' into 'main'
docs: Mention platform-specific predefined macros

See merge request GNOME/glib!2997
2022-11-01 11:00:03 +00:00
Philip Withnall
debf3e4a87 Merge branch 'sandbox-check' into 'main'
gio: Create a sandbox checking function

See merge request GNOME/glib!3037
2022-11-01 10:45:05 +00:00
Simon McVittie
871237b9d5 docs: Mention platform-specific predefined macros
The platform-specific predefined macros provided by various compilers
sometimes capture subtle differences of meaning, like the distinction
between the Linux kernel and a glibc-based (GNU/Linux) user-space.
It would be difficult to capture those subtleties in GLib-specific
convenience macros, particularly for platforms that we don't use
ourselves.

Instead, recommend that anyone who is already writing platform-specific
code should use the platform-specific predefined macros directly.

Alternative to !2986.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-11-01 10:40:37 +00:00
Robert Ancell
bfd7074dfc gio: Fix formatting 2022-11-01 10:20:36 +00:00
Robert Ancell
5a83f384d1 Fix meson formatting 2022-11-01 10:20:36 +00:00
Robert Ancell
568763e776 gio: Create a sandbox checking function 2022-11-01 10:20:36 +00:00
Patrick Monnerat
0120cd772a glib-mkenums: feature use of previous symbols in evaluation
Enum symbols can be defined with a value computed from previously
defined enum symbols. The current evaluator does not support this and
requires a literal integer expression.

This commit introduces a C symbol namespace that is filled along
code generation and provided as a local namespace for new symbols
evaluation, effectively allowing definitions such as:

	typedef enum {
	  a = 4;
	  b = a + 2;
	}  myenum;

to be successfully processed.
2022-11-01 02:12:26 +01:00
Marco Trevisan (Treviño)
c6eddf897b ci: Do not use installed tests in debian-stable build
Setting installed_tests option enforces various test files to be
installed, this causes meson to build tools that might have not built
otherwise but that are still required for testing.

Also, disabling installed tests lead to slightly different code paths
when it comes to using test test files.

So, disable it for debian so that we can ensure that at test time we
have set all the dependencies between test programs and the used
resources (that can be libraries, external programs or modules).
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
038ef36b99 gobject/tests/meson: Make gobject-query.py test depend on gobject-query util
The utility is used by the script, so we need to depend on it.
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
a106ce4445 gobject/tests/meson: Add support to add extra depends args to python tests 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
eef2b0b39e gmodule/tests/meson: Make tests depending on loaded libraries and modules 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
82fc49fa10 glib/tests/meson: Add test programs dependencies to single tests
Various glib tests (such as the spawn ones) depend on local binaries
being built, this may not happen (especially when not using installed
tests), thus ensure such dependencies via the newly added extra_programs
key
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
495017e2db glib/tests/meson: Compile tests extra programs using same strategy as gio
This allows also to keep track of targets and to make possible for a
test to depend on a particular test program
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
c490e3c522 gio/tests/meson: Add resource plugin as test dependency 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
407c45ddaf gio/tests/meson: Add fake-service-name as gdbus-names dependency
It uses a fake name owner that we didn't depend on
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
ed013f9550 gio/tests/meson: Make giomodule test to depend on built modules
These are loaded dynamically so we need to ensure they're available at
test time
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
ff195b6e0d gio/tests/meson: Add dbus-launch as dependency of gdbus-address-get-session 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
fd2b4e4ca4 gio/tests/meson: Add glib-compile-schemas as dependency for gsettings test 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
0525a32c09 gio/tests/meson: Add fake-document-portal as dependency of dbus-appinfo
It uses the portal, but it doesn't depend on it.
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
cb85b26dd2 gio/tests/meson: Add gdbus-connection-flush-helper as dependency of connection tests 2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
01349e8e7f gio/tests/meson: Add gdbus-testserver prog as dependency of GDbus tests
Most gdbus tests launch the gdbus-testserver binary, so add it as
dependency of such tests.
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
caf75d8f9c gio/tests/meson: Add basic-application as prerequisite of gapplication
It's currently commented code, but in any case it's better to build it
earlier
2022-11-01 01:56:27 +01:00
Marco Trevisan (Treviño)
97b0e96577 gio/tests/meson: Add gsubprocess-testprog as gsubprocess dependency
It launches such binary, so add it as prerequisite.
2022-11-01 01:56:20 +01:00
Marco Trevisan (Treviño)
e1e4084ecb gio/tests/meson: Add appinfo-test and apps as appinfo tests dependency
We need to make sure that such binaries are built and available at test time
or we may fail some tests requiring them (directly or through desktop file).

As per this, and because now generated desktop files are available both
at build and install time, don't skip some tests we were used to, but
actually enforce they are running.
2022-11-01 01:56:10 +01:00
Marco Trevisan (Treviño)
a1a0a9d75a gio/meson: Make possible for test to depend on extra programs
We have some test programs on which some tests depend on, for example
appinfo-test is a tool that is used by the desktop-app-info tests.

So test can now have an 'extra_programs' key where the extra program
names can be included.

This could have been handled manually via 'depends', but this allows
to avoid repeating code and be sure that all is defined when extra
programs targets are checked.
2022-11-01 01:56:09 +01:00
Marco Trevisan
02db6107ce Merge branch 'speed-up-desktop-test' into 'main'
tests: Remove an unnecessary sleep from desktop-app-info test

See merge request GNOME/glib!2961
2022-11-01 00:33:40 +00:00
Philip Withnall
176f66502d tests: Reduce an unnecessary sleep from desktop-app-info test
`g_app_info_launch_default_for_uri_async()` has already returned by this
point, so waiting a long time is not really going to help.

Wait for 3× as long as the successful case took, which should allow for
long enough to catch true negatives, with a bit of variance.

On my system, this means waiting for about 14ms, rather than the 100ms
which this previous slept for. This speeds the test up by about 5%.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-11-01 00:33:40 +00:00
Marco Trevisan (Treviño)
e9cbcfff80 gio/tests/meson: Always generate desktop files for local builds
We were generating .desktop files with different content when installed
tests were enabled, and thus making impossible to test some cases
because there was no built file until installed.

To avoid this, always generate both versions of desktop files while
install only the one containing the install path prefix if needed.
2022-11-01 01:31:49 +01:00
Marco Trevisan (Treviño)
359c705fc6 gio/tests/meson: Make desktop-app-info depend on gio-launch-desktop
We actually use it to launch applications so it has to be built at test
time
2022-11-01 01:31:49 +01:00
Philip Withnall
cbf17c9422 Merge branch 'wip/3v1n0/support-can-fail-tests' into 'main'
meson, ci: Support tests that can fail under certain conditions

See merge request GNOME/glib!2987
2022-10-31 14:28:02 +00:00
Marco Trevisan (Treviño)
584a4f64c9 glib/tests/meson: Ignore another new windows tests failure 2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
94273b0ebf ci: Remove not-printable chars from generated junit file
Under windows we get some invalid chars that are causing gitlab not to
be able to parse the xml files

See: https://github.com/mesonbuild/meson/issues/9894
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
be665cdce0 glib,gio/tests: Mark some spawn tests as flaky under windows
It a may fail at times, but it generally works:

 See: https://gitlab.gnome.org/GNOME/glib/-/jobs/2346261
 See: https://gitlab.gnome.org/GNOME/glib/-/jobs/2346262
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
832dd0805a meson: Add basic summary
It can nicely provide information about how glib is configured
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
9e649debbe meson: Use default test multiplier to define timeouts
So that we don't have to care about the default, being always set to 1m
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
3d497b8f5b ci: Show commands run from the test scripts
It allows better debugging in case of failures.
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
3c56d661d8 meson: Use test setup environment instead of repeating it everywhere 2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
3e227fb528 glocalfileinfo: Define errsv only if it's used 2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
b30430970a tests: Mark should_fail tests as can_fail
Even if they are expected to fail, we should not use an inverse logic
for treating their return codes.
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
8d5ae3ae83 ci: Mark failing mingw tests as can-fail and do not ignore test failures 2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
54a9e797fe ci: Mark failing windows tests as can-fail and do not ignore test failures 2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
b9e085537d meson: Expose library build type as global variables
Given that it can be computed using an error-prone strings comparisons it
is better to provide a variable everywhere, so that we don't have the
risk of comparing values that are always false.
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
914bb06ab4 gio: mark codegen test as can-fail in freebsd
See: https://gitlab.gnome.org/GNOME/glib/-/issues/2764
2022-10-31 14:08:31 +01:00
Marco Trevisan (Treviño)
62dca6c1cf meson, ci: Support tests that can fail under certain conditions
We have tests that are failing in some environments, but it's
difficult to handle them because:
 - for some environments we just allow all the tests to fail: DANGEROUS
 - when we don't allow failures we have flacky tests: A CI pain

So, to avoid this and ensure that:
 - New failing tests are tracked in all platforms
 - gitlab integration on tests reports is working
 - coverage is reported also for failing tests

Add support for `can_fail` keyword on tests that would mark the test as
part of the `failing` test suite.
Not adding the suite directly when defining the tests as this is
definitely simpler and allows to define conditions more clearly (see next
commits).

Now, add a default test setup that does not run the failing and flaky tests
by default (not to bother distributors with testing well-known issues) and
eventually run all the tests in CI:
 - Non-flaky tests cannot fail in all platforms
 - Failing and Flaky tests can fail

In both cases we save the test reports so that gitlab integration is
preserved.
2022-10-31 14:08:29 +01:00