Commit Graph

26738 Commits

Author SHA1 Message Date
Marco Trevisan (Treviño)
f68c49102e gtestutils: Write log to stderr atomically
We used to send the test log to stderr in pieces, but this could be
problematic when running multiple tests in parallel, so let's just prepare
the string in pieces and write it all at once.
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
a943d42104 gtestutils: Use TAP format for all the verbose output
In some cases if verbose output was enabled we were using wrong output
format in TAP mode, so let's fix these cases and run the 'testing' test
case in --verbose mode to ensure we won't regress.
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
5c799ff01d gtestutils: Write tap test results atomically
When running multiple tests in parallel using meson, the output could be
mixed and if we write the TAP reports in multiple steps the output could
be mangled together with other results.

An example is: https://gitlab.gnome.org/3v1n0/glib/-/jobs/2507620

Where we have:
  ok 5 /cancellable/poll-fd# GLib-GIO-DEBUG: Collecting capable appnames: 0ms
  # Allocating hashtables:...... 0ms
  # Reading capable apps:        63ms
  # Reading URL associations:... 0ms
  # Reading extension assocs:    78ms
  # Reading exe-only apps:...... 47ms
  # Reading classes:             312ms
  # Reading UWP apps:            47ms
  # Postprocessing:..............16ms
  # TOTAL:                       563ms
   # SKIP Platform not supported

Leading to a clear TAP parsing error
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
254c71e7c6 gtestutils: Set the TAP version 13 as first line of tests output
This is not required, but meson may warn about in future versions, so it's
safer to define it.

However, we must be sure that we only expose it once and in the root binary
if a test file launches another subprocess test file.
To avoid this, we set an environment variable at test init, so that it can
be inherited by children.
It's not the best solution, but for sure the best-effort one without having
to change gtest arguments and called binaries.

Non mentioning a version was considered as assuming we were using TAP
version 12, while no version earlier than 13 can be specified
explicitly so let's use it.

See: https://testanything.org/tap-specification.html
And: https://testanything.org/tap-version-13-specification.html
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
d4088e7f2a gio: Use 'cpp' suite for C++ tests
That's what we use for all the tests, so be consistent.
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
6efbc7c624 meson: Add 'core' suite to glib (only) tests
As per meson default, the project name is a suite per se that is always
added to a test, so running `meson test --suite=glib` is the same as not
passing the `--suite` argument at all, and so making all the tests to run.

To be able to only run the *glib* tests without using the `--no-suite` args,
add a `core` suite that only targets the glib folder tests.
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
1594cf77eb meson: Use exitcode protocol for some c++ and gobject definition tests
In all these cases we don't really care about running the test file,
while building and basic execution it is relevant.

Also they don't support TAP at all.
2023-01-17 21:08:48 +01:00
Marco Trevisan (Treviño)
58031feb17 meson: Use 'tap' test protocol by default
Meson supports tap protocol results parsing, allowing us to track better
the tests that are running (and the ones that are actually skipped) without
manually parsing the test output.

However this also implies that using the verbose mode for a test doesn't
show its output by default (unless there are failures).
2023-01-17 21:08:48 +01:00
Marco Trevisan
f21772ead0 Merge branch 'spawn-test-debugging' into 'main'
tests: Add a test print to spawn-test on Windows

See merge request GNOME/glib!3206
2023-01-17 20:07:25 +00:00
Philip Withnall
13e775dcf6 Merge branch 'print-avoid-allocations' into 'main'
gmessages: Avoid strings duplication if there's nothing to format

See merge request GNOME/glib!3205
2023-01-17 19:57:53 +00:00
Marco Trevisan (Treviño)
71a7603e7f gmessages: Avoid strings duplication if there's nothing to format
g_print(), g_printerr() and all the g_log() functions used to always
duplicating a string when printing even if there's nothing to format.

This can be avoided in many cases though, so if a string has no formatting
directive, we can just write it as it is without duplicating and free'ing
it.

From my tests the potential `strchr` overhead is minimal.
2023-01-17 16:41:54 +01:00
Philip Withnall
42b8929407 tests: Add a test print to spawn-test on Windows
To try and debug why the following assert sometimes fails on
`msys2-clang64`, such as in this job:
https://gitlab.gnome.org/GNOME/glib/-/jobs/2515166.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #1371
2023-01-17 15:31:03 +00:00
Philip Withnall
438006899e Merge branch 'document-gtask-brokenness' into 'main'
GTask: Document issues

See merge request GNOME/glib!3203
2023-01-16 14:43:20 +00:00
Marco Trevisan
dabb650ad4 Merge branch 'settings-action-per-desktop-default' into 'main'
gsettings: Support per-desktop overrides in GSettingsAction

See merge request GNOME/glib!3193
2023-01-16 13:30:53 +00:00
Matthias Clasen
f999481ec2 GTask: Document issues
We may not be able to fix GTasks broken design,
but at least we should document it and not let
users stumble into this bear trap without warning.

Helps: #1346
2023-01-16 08:19:23 -05:00
Philip Withnall
f7a02efbb7 Merge branch 'issue_2883b' into 'main'
Use 'write' with 'count' <= max value of its return type

Closes #2883

See merge request GNOME/glib!3200
2023-01-16 13:08:43 +00:00
CCode
e9e4d52de8 gfileutils: Use 'write' with 'count' <= max value of its return type
Limit `count` so that `write` can properly report the number of written bytes.

Limits:
 - POSIX: `SSIZE_MAX`
 - Windows: `INT_MAX`

Fixes: #2883
2023-01-16 13:08:42 +00:00
Philip Withnall
26728b4ecc Merge branch 'gstring-optimizations' into 'main'
Some GString optimizations

See merge request GNOME/glib!3199
2023-01-16 12:38:54 +00:00
Matthias Clasen
908bd08dc5 Try to make gtk-doc happy 2023-01-14 12:55:25 -05:00
Matthias Clasen
0a26b1c038 markup: Use g_string_truncate
We don't need a private inline helper
for this anymore.
2023-01-14 10:08:42 -05:00
Matthias Clasen
6bb9fdd9c7 markup: Replace a g_string_insert_len call
This lets us use the optimized inline call.
2023-01-14 09:44:22 -05:00
Matthias Clasen
d102a4d8b2 Improve the g_string_truncate test
Test the inline version too.
2023-01-14 09:44:22 -05:00
Matthias Clasen
c191c99748 string: Add an inline g_string_truncate too
This is another very commonly used
GString function.
2023-01-14 09:44:22 -05:00
Matthias Clasen
84780536a4 Improve the g_string_append test
Test the inline versions too, and test
passing -1 for len.
2023-01-14 09:09:19 -05:00
Matthias Clasen
57de9af06f Improve the g_string_append_c test
We should check the resulting string too.
2023-01-14 09:09:19 -05:00
Matthias Clasen
9810803358 string: Optimize g_string_append(_len)
Add static inline versions of these functions
that boil down to just an memcpy. ag_string_append_len
is used quite a bit in GMarkup and GTK's css parser.
2023-01-14 09:09:19 -05:00
Matthias Clasen
0cc74d5a37 string: Add a G_LIKELY
This is the case we optimize for.
2023-01-14 09:09:15 -05:00
Emmanuele Bassi
5d0db7f0b8 Merge branch 'fix-closure-annotations' into 'main'
Fix a couple of `closure` annotations

See merge request GNOME/glib!3198
2023-01-14 08:58:28 +00:00
Matthias Clasen
34b7992fd6 string: Split g_string_maybe_expand
Split off g_string_expand, and inline just
the size check.
2023-01-14 00:05:34 -05:00
Marco Trevisan (Treviño)
45ec0aa81e tests/gsettings: Check that per-desktop settings are used by GAction's 2023-01-14 04:17:51 +01:00
Philip Withnall
6e91e809c7 Merge branch 'banjiuqingshan-main-patch-03761' into 'main'
gio/tests/file.c:Fix expectations when running as root

See merge request GNOME/glib!3196
2023-01-13 23:35:51 +00:00
banjiuqingshan
d9a1d7524f gio/tests/file.c: Fix expectations when running as root
Includes tweaks by Philip Withnall.
2023-01-13 22:21:07 +00:00
Philip Withnall
f85e4e341f gsettings: Slightly simplify g_settings_action_get_state()
This introduces no functional changes.

Suggested by Christian Persch.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-01-13 22:14:56 +00:00
Sebastian Dröge
79fd6fd6a0 Fix a couple of closure annotations 2023-01-13 18:06:23 +02:00
Marco Trevisan
d839282edb Merge branch 'regex-invalid-memory-access' into 'main'
gregex: Prevent invalid memory access for unmatched subpatterns

Closes #2881

See merge request GNOME/glib!3194
2023-01-12 15:22:57 +00:00
Philip Withnall
e9fc91550f Merge branch 'badcel/revert-update-closure-annotations' into 'main'
Revert "Rename user data parameters to user_data"

Closes #2827

See merge request GNOME/glib!3111
2023-01-11 14:58:31 +00:00
Philip Withnall
fdd2d706b2 gregex: Prevent invalid memory access for unmatched subpatterns
Based on a test by Emmanuel Pacaud.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #2881
2023-01-11 12:14:04 +00:00
Philip Withnall
b494b83405 gsettings: Support per-desktop overrides in GSettingsAction
Due to an oversight (I guess), per-desktop default values (which come
from override files such as this one:
https://github.com/endlessm/gnome-shell/blob/master/data/00_org.gnome.shell.gschema.override)
were not checked when getting a GSettings value via a `GSettingsAction`.

Per-desktop default values are correctly returned via all other
GSettings query paths (see calls to
`g_settings_schema_key_get_translated_default()`).

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-01-10 20:57:03 +00:00
Simon McVittie
1955497993 Merge branch 'wip/smcv/gptrarray-null-term' into 'main'
garray: Update NULL termination after copying array content

Closes #2877

See merge request GNOME/glib!3190
2023-01-10 19:51:57 +00:00
Simon McVittie
71f0b3b5ea Merge branch 'wip/smcv/rlimit-nproc-error' into 'main'
tests: Improve error message if setting max processes to 1 fails

See merge request GNOME/glib!3191
2023-01-10 19:28:07 +00:00
Simon McVittie
d3356bdbe9 Merge branch 'wip/smcv/gptrarray-memcpy-nothing' into 'main'
garray: Avoid calling memcpy with no items

See merge request GNOME/glib!3192
2023-01-10 19:27:31 +00:00
Simon McVittie
952b07101f garray: Avoid calling memcpy with no items
`memcpy(NULL, ., n)` and `memcpy(., NULL, n)` are undefined behaviour,
even if *n* is zero.

When len is 0 here, callers are allowed to pass in null data, and
GPtrArray also does not guarantee to have allocated rarray->pdata yet.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-01-10 13:40:24 +00:00
Simon McVittie
68b9fd53ec garray: Update NULL termination after copying array content
ptr_array_new(len, ., TRUE) ensures that there are at least len+1
elements in pdata, and that pdata[0] is null, but leaves the rest of
pdata uninitialized. After copying the array data into pdata[1] to
pdata[len-1] inclusive, we still need to make sure pdata[len] is a
null terminator.

Note that if len is 0, then pdata is not guaranteed to be non-null. If
it's null, then we can't add null-termination to it until its size
is updated.

Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/2877
Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-01-10 13:35:22 +00:00
Philip Withnall
6d2705e016 Merge branch 'gnumdk/cmpint_typo' into 'main'
docs: Fix return type in cmpint

See merge request GNOME/glib!3189
2023-01-10 12:49:42 +00:00
Simon McVittie
f42316cb0b tests: Improve error message if setting max processes to 1 fails
This has historically failed on Debian autobuilders, and as a result we
have had a patch for a long time that turned a failure here into a
g_test_skip(). It's not clear whether this still happens, so I'm now
assessing whether the patch can be dropped; but if the prlimit() call
can fail for whatever reason, it would be useful for the error message
to say what limit we were trying to set.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-01-10 12:48:32 +00:00
Cédric Bellegarde
cf5d807881 docs: Fix return type in cmpint example 2023-01-10 11:31:25 +00:00
Simon McVittie
cabe1370ed Merge branch 'fix-glib-compile-schemas-typo' into 'main'
glib-compile-schemas: Fix typo in comparison function

See merge request GNOME/glib!3188
2023-01-09 17:12:12 +00:00
badcel
fc70f2c057
Do not name callback parameters "user_data"
Calling a callback parameter "user_data" implicitly adds the "closure" attribute in the documentation which is wrong for callbacks.
2023-01-09 14:12:16 +01:00
Philip Withnall
8cddffdf6a Merge branch 'ebassi/visibility-build-vars' into 'main'
build: Don't overwrite build variables

See merge request GNOME/glib!3184
2023-01-09 12:37:00 +00:00
Philip Withnall
8d86ae6725 Merge branch 'ebassi/glib-types-visibility' into 'main'
Include gobject-visibility.h in glib-types.h

See merge request GNOME/glib!3185
2023-01-09 12:29:07 +00:00