1728 Commits

Author SHA1 Message Date
Philip Withnall
8640f95106 tests: Fix strict-aliasing and pointer-sign warnings in atomic tests
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 19:08:42 +01:00
Philip Withnall
98df887b7f tests: Silence set-but-not-used warnings for variables in autoptr test
Clang decides that `p` and `p2` are set but not used. Try a bit harder
to trick it.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 18:27:20 +01:00
Philip Withnall
0e1b410779 tests: Remove unused variables from slice tests
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 18:27:20 +01:00
Philip Withnall
6a1e35422f tests: Remove unused function from slice-memchunk.c
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 18:27:19 +01:00
Philip Withnall
8d613ee7ff tests: Remove unused inline functions from slice tests
These were causing compiler warnings when compiling with clang.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 18:26:55 +01:00
Philip Withnall
d7c3b0fbf2 Merge branch 'gatomic-exchange' into 'main'
gatomic: Add APIs to perform atomic int / pointer exchanges

See merge request GNOME/glib!2726
2022-06-07 15:30:34 +00:00
Marco Trevisan (Treviño)
fa4e34667c gatomic: Add APIs to perform atomic int / pointer exchanges
Atomic APIs provide a way to exchange values only if we compare a value
that is equal to the old value, but not to just exchange the value
returning the old one.

However, compilers provide such built-in functions, so we can use them
to expose such functionality to GLib.

The only drawback is that when using an old version of gcc not providing
atomic APIs to swap values, we need to re-implement it with an
implementation that may not be fully atomic, but that is safe enough.

However this codepath should really not be used currently as gcc
introduced __atomic_exchange_n() at version 4.7.4, so 8 years ago.
2022-06-07 17:10:57 +02:00
Philip Withnall
9926703494 tests: Avoid an uninitialised variable warning in slice-memchunk test
Dynamically, all the right elements of `ps` are initialised before they
are used. However, scan-build doesn’t think so. It (probably) thinks
that `number_of_blocks` could change value between the different loops
over `ps`.

Try and avoid that by marking `number_of_blocks` (and related variables)
as `const`.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 11:16:57 +01:00
Philip Withnall
6c0bde8aa4 tests: Fix a scan-build warning about uninitialised threads
It seems that scan-build assumes `n_threads > 0`, but doesn’t assume a
tighter condition than that, and hence assumes that the two loops to
initialise and join the threads have different numbers of iterations.

That’s obviously not the case.

Try and help scan-build out here by marking `n_threads` as `const`. I
don’t know if this will work, but it’s correct regardless.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-07 11:09:39 +01:00
Simon McVittie
804c45324e Merge branch 'test-verbose-output' into 'main'
tests: Remove various bits of overly-verbose test output

See merge request GNOME/glib!2704
2022-06-01 17:31:53 +00:00
Philip Withnall
69d7f8f16b tests: Add no-valgrind suite to slice-known-pages test
It does some unusual things with memory pages and allocation, and
testing that with valgrind (a) fails and (b) probably isn’t useful
anyway.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-06-01 15:22:02 +01:00
Philip Withnall
0611999fed tests: Remove various bits of overly-verbose test output
None of these messages are particularly helpful, but they increase the
overall test log output size, which has to be stored by the CI for every
test run.

With these messages removed, the size of a full test log is reduced from
6.5MB to 1.8MB for me.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-05-31 15:21:46 +01:00
Thomas Haller
ee247c0a2d array: add support for %NULL termination in GPtrArray
GArray supports a "zero_terminated" flag, but GPtrArray doesn't.
This is odd, because especially for a pointer array it makes sense
to have a %NULL sentinel. This would be for example useful to track
or construct a strv array with a GPtrArray.

As workaround for this missing feature you could use a GArray instead
(ugly) or to explicitly add the %NULL element. However the latter increases
the "len" of the array, which can be problematic if you want to still use
the GPtrArray for other purposes.

Add API for marking a GPtrArray as %NULL terminated. In that case, the
API will ensure that there is always a valid %NULL sentinel after the
array. Note that the API does not enforce that a %NULL terminated API
actually has any data allocated. That means, even with a %NULL terminated
array, pdata can still be %NULL (only if len is zero).

Add g_ptr_array_new_null_terminated() constructor. The null-terminated flag
cannot be cleared. Once the GPtrArray is flagged to be %NULL terminated, it
sticks. The purpose is that once a user checks whether a GPtrArray instance
is safe to be treated as a %NULL terminated array, the decision does
not need to be re-evaluated.

Also add a g_ptr_array_is_null_terminated(). That is useful because it
allows you to check whether a GPtrArray created by somebody else is safe
to use as a %NULL terminated array. Since there is no API to make an
array not %NULL terminated anymore, this is not error prone.

The new flag is tracked as a guint8 in GRealPtrArray. On common 64 bit
architectures this does not increase the size of the struct as it fits
in an existing hole. Note that this is not a bitfield because it's
probably more efficient to access the entire guint8. However, there is
still a 3 bytes hole (on common 32 and 64 architectures), so if we need
to add more flags in the future, we still have space for 24 bits,
despite the new flag not being a bitfield.

The biggest downside of the patch is the runtime overhead that most
operations now need to check whether %NULL termination is requested.

Includes some tweaks and additional tests by Philip Withnall.

https://gitlab.gnome.org/GNOME/glib/-/issues/353
2022-05-27 15:27:19 +01:00
Philip Withnall
93bf87528d Merge branch 'ebassi/source-once' into 'main'
Add one-shot idle and timeout functions

See merge request GNOME/glib!2684
2022-05-27 12:25:51 +00:00
Emmanuele Bassi
50c316ef36 Port various timeout/idle callbacks to the once API
So we excercise it in our test coverage.
2022-05-27 12:58:10 +01:00
Emmanuele Bassi
12571a0821 Add one-shot idle and timeout functions
Many idle and timeout sources are installed as "one shot": called once
and immediately removed. While it's easy to write a simple callback that
returns G_SOURCE_REMOVE, it would also be useful to have some sort of
"visual" marker when reading the code; a way to immediately see that a
callback (which may be defined elsewhere in the code) is meant to be
invoked just once.

Includes additional unit tests by Philip Withnall.
2022-05-27 12:57:55 +01:00
Philip Withnall
ce585ba4d2 Merge branch 'slice-test' into 'main'
Slice test

See merge request GNOME/glib!2579
2022-05-26 17:01:52 +00:00
Matthias Clasen
ad3c339ce4 Add another Unicode testcase
It turns out I typoed the character code when
I added the previous one.

See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2669
2022-05-19 12:39:33 -04:00
Matthias Clasen
240675d5f4 Add a Unicode testcase
This verifies that GString is not to blame for the bug
in https://github.com/harfbuzz/harfbuzz/issues/3590
2022-05-18 19:24:04 -04:00
Philip Withnall
caf6d99fbe Merge branch 'win32-fd' into 'main'
gio: various unix/fd-related enablement on win32

See merge request GNOME/glib!2656
2022-05-18 14:01:43 +00:00
Philip Withnall
1771449e54 tests: Add SPDX license headers automatically
Add SPDX license (but not copyright) headers to all files which follow a
certain pattern in their existing non-machine-readable header comment.

This commit was entirely generated using the command:
```
git ls-files glib/tests/*.c | xargs perl -0777 -pi -e 's/\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/\n \*\n \* SPDX-License-Identifier: LGPL-2.1-or-later\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/igs'
```

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

Helps: #1415
2022-05-18 09:21:02 +01:00
Emmanuel Fleury
5c32c31489 Remove unnecessary dependency on the slice-color test 2022-05-17 18:35:20 +02:00
Emmanuel Fleury
8ad765a4c2 Convert test/slice-test.c to glib test framework and move it to glib/tests/ 2022-05-17 18:35:16 +02:00
Philip Withnall
2dc8184590 tests: Add some SPDX license headers
These cover the files which Debian has already worked out the licensing
information for, in
https://salsa.debian.org/gnome-team/glib/-/blob/debian/master/debian/copyright.

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

Helps: #1415
2022-05-17 17:23:34 +01:00
Marc-André Lureau
15ce3c9b37 glib/tests/spawn-path-search: fix stack-buffer-overflow
==24477==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffde020de20 at pc 0x7f2e6f6413f1 bp 0x7ffde020c9d0 sp 0x7ffde020c180
READ of size 4101 at 0x7ffde020de20 thread T0
    #0 0x7f2e6f6413f0 in __interceptor_strlen.part.0 (/lib64/libasan.so.8+0x4c3f0)
    #1 0x7f2e6ef4abee in g_build_path_va ../glib/gfileutils.c:1908
    #2 0x7f2e6f085956 in g_test_build_filename_va ../glib/gtestutils.c:4294
    #3 0x7f2e6f086684 in g_test_build_filename ../glib/gtestutils.c:4365
    #4 0x403a33 in test_search_path_heap_allocation ../glib/tests/spawn-path-search.c:422
    #5 0x7f2e6f0839a5 in test_case_run ../glib/gtestutils.c:2930
    #6 0x7f2e6f0839a5 in g_test_run_suite_internal ../glib/gtestutils.c:3018
    #7 0x7f2e6f0834ed in g_test_run_suite_internal ../glib/gtestutils.c:3035
    #8 0x7f2e6f084879 in g_test_run_suite ../glib/gtestutils.c:3112
    #9 0x7f2e6f084995 in g_test_run ../glib/gtestutils.c:2231
    #10 0x40145f in main ../glib/tests/spawn-path-search.c:488
    #11 0x7f2e6e31258f in __libc_start_call_main (/lib64/libc.so.6+0x2d58f)
    #12 0x7f2e6e312648 in __libc_start_main_alias_1 (/lib64/libc.so.6+0x2d648)
    #13 0x401524 in _start (/home/elmarco/src/gnome/glib/build/glib/tests/spawn-path-search+0x401524)

Address 0x7ffde020de20 is located in stack of thread T0 at offset 4256 in frame
    #0 0x40387f in test_search_path_heap_allocation ../glib/tests/spawn-path-search.c:401

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-05-17 17:34:06 +02:00
Philip Withnall
fa8430d42a Merge branch 'fix_test' into 'main'
Cleaning a file left behind by glib/tests/bookmarkfile.c test case

See merge request GNOME/glib!2659
2022-05-17 14:03:06 +00:00
Philip Withnall
848d7718b6 Merge branch 'test-slice-threadinit' into 'main'
Moving slice-threadinit.c test to glib/tests/

See merge request GNOME/glib!2580
2022-05-17 12:59:45 +00:00
Emmanuel Fleury
92a6db39de Cleaning a file left behind by glib/tests/bookmarkfile.c test case 2022-05-16 19:13:52 +02:00
Emmanuel Fleury
ddb0585e65 Moving slice-threadinit.c test to glib/tests/
Related to issue #1434
2022-05-16 15:21:02 +02:00
Philip Withnall
7137591775 tests: Fix a double-close of a GSource in tests
This bug only gets triggered on BSD, because it calls `recv_message()`
with `G_IO_HUP | G_IO_IN`. That takes two code paths in
`recv_message()`, and ends up calling `shutdown_source()` twice. The
second call causes a critical warning.

Fixes: https://gitlab.gnome.org/GNOME/glib/-/jobs/2004192

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-05-16 14:12:30 +01:00
Philip Withnall
5160b12740 Merge branch 'move_thread_test' into 'main'
Move tests/thread-test.c to glib/tests/thread-deprecated.c

See merge request GNOME/glib!2639
2022-05-16 12:41:25 +00:00
Philip Withnall
d1bec29217 Merge branch 'move_gio-test' into 'main'
Convert tests/gio-test.c to g_test framework

See merge request GNOME/glib!2539
2022-05-16 12:34:27 +00:00
Marc-André Lureau
960ed2f906 glib/tests: add spawn-stderr-socket test
Check the spawn implementation behaviour when the stderr is a
socket (mostly for win32).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-05-12 18:54:11 +02:00
Marc-André Lureau
d1520bd06e glib/tests: move spawn-test-win32-gui
Fixes: commit 762ed2e82b ("Move tests/spawn-test.c -> glib/tests/spawn-test.c")

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-05-12 18:48:59 +02:00
Emmanuel Fleury
87a4cea9e4 Convert g_printf() to g_test_message() to capture messages on TAP 2022-05-12 17:25:07 +02:00
Emmanuel Fleury
4589ff080d Move test/gio-test.c to glib/test/io-channel-basic.c
Helps issue #1434
2022-05-12 17:25:07 +02:00
Philip Withnall
2f73cc670c Merge branch 'mapping-test' into 'main'
Moving tests/mapping-test.c to glib/test/mapping.c

See merge request GNOME/glib!2607
2022-05-10 18:05:07 +00:00
Philip Withnall
5eaf305d2e Merge branch 'expand_ghook_tests' into 'main'
Expand ghook unit tests for a better coverage and add more checks

See merge request GNOME/glib!2624
2022-05-10 17:55:24 +00:00
Emmanuel Fleury
3f085d1f4a Moving tests/mapping-test.c to glib/test/mapping.c
Helps issue #1434
2022-05-10 19:23:14 +02:00
Xavier Claessens
374be41433 meson: Use meson.can_run_host_binaries()
It is not only shorter than `not meson.is_cross_build() or
meson.has_exe_wrapper()` but also handle the case of cross compiling to
a compatible arch such as building for i386 on an amd64.
2022-05-06 13:17:11 +01:00
Emmanuel Fleury
647506966d Move tests/thread-test.c to glib/tests/thread-deprecated.c
Helps issue #1434
2022-05-06 10:50:40 +02:00
Philip Withnall
208ae36596 Merge branch 'threadpool_test' into 'main'
Move tests/threadpool-test.c to glib/test/thread-pool-slow.c

See merge request GNOME/glib!2634
2022-05-05 12:45:37 +00:00
Emmanuel Fleury
611a020308 Move tests/threadpool-test.c to glib/test/thread-pool-slow.c
Helps issue #1434
2022-05-05 10:51:16 +02:00
Sebastian Dröge
4ea412c276 Merge branch 'unicode-normalise-leak' into 'main'
tests: Fix a minor leak in the unicode-normalize test

See merge request GNOME/glib!2606
2022-04-29 08:02:56 +00:00
Sebastian Dröge
cf863530ef Merge branch 'fix-unicode-normalize-installed-test' into 'main'
tests: Ensure NormalizationTest.txt is installed for installed-tests

See merge request GNOME/glib!2602
2022-04-29 08:00:50 +00:00
Philip Withnall
b509e59726 tests: Remove some redundant writes
`ret` was never read. This fixes scan-build warnings:
```
../../../../source/glib/glib/tests/thread.c:148:8: warning: Although the value stored to 'ret' is used in the enclosing expression, the value is never actually read from 'ret' [deadcode.DeadStores]
  if ((ret = prlimit (getpid (), RLIMIT_NPROC, &nl, &ol)) != 0)
       ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../source/glib/glib/tests/thread.c:174:8: warning: Although the value stored to 'ret' is used in the enclosing expression, the value is never actually read from 'ret' [deadcode.DeadStores]
  if ((ret = prlimit (getpid (), RLIMIT_NPROC, &ol, NULL)) != 0)
       ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

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

Helps: #1767
2022-04-28 11:22:53 +01:00
Philip Withnall
de5b30df84 tests: Add a missing assertion
This fixes a warning about a dead store to `newpath` from scan-build.

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

Helps: #1767
2022-04-28 11:22:53 +01:00
Emmanuel Fleury
fe2619079f Expand ghook unit tests for a better coverage and better control 2022-04-28 10:35:36 +02:00
Sebastian Dröge
fa55f37a88 Merge branch 'log-writer-checks' into 'main'
gmessages: Error if g_log_set_writer_func() is called multiple times

See merge request GNOME/glib!2617
2022-04-26 07:41:56 +00:00
Philip Withnall
862e250eaa Merge branch 'fixes_in_tests' into 'main'
Fixes in tests

See merge request GNOME/glib!2608
2022-04-25 17:30:54 +00:00