Commit Graph

7727 Commits

Author SHA1 Message Date
Sebastian Dröge
c80ff2474f Merge branch 'wip/pwithnall/2625-clang-cxx' into 'main'
gatomic: Add a C++ variant of g_atomic_int_compare_and_exchange()

Closes #2625

See merge request GNOME/glib!2578
2022-04-06 10:08:35 +00:00
Jason Francis
a85246af3b gio: Add g_list_store_find_with_equal_func_full()
Fixes: #2447
2022-04-05 18:34:39 +01:00
Philip Withnall
e5316bb5ab Merge branch 'issue-2628' into 'main'
glib/win32: fix spawn from GUI regression

See merge request GNOME/glib!2582
2022-04-05 12:13:03 +00:00
Philip Withnall
14717e4f41 Merge branch 'cleanup-warnings-split-9' into 'main'
Cleanup warnings split 9

See merge request GNOME/glib!2498
2022-04-05 11:19:51 +00:00
Emmanuel Fleury
795952cb8d Move tests/unicode-encoding.c to glib/tests/unicode-encoding.c
Related to issue #1434
2022-04-04 18:51:30 +02:00
Loic Le Page
19280e2166 Fix non-initialized variable in gio/tests/date.c 2022-04-04 17:39:59 +01:00
Marc-André Lureau
f70dc8bcb4 glib/win32: fix spawn from GUI regression
In commit 674072b13 ("glib/win32: check if dup() failed in helper
process"), I happily added checks for dup() calls in the spawn helper.
However, I didn't realize that GUI applications do not necessarily have
a console attached, and will now fail spawning processes.

One way to check that is via a _fileno() call, as explained in:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fileno?view=msvc-170#return-value

Fixes:
https://gitlab.gnome.org/GNOME/glib/-/issues/2628

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-04-04 15:59:04 +04:00
Philip Withnall
ad23894c15 gatomic: Add a C++ variant of g_atomic_int_compare_and_exchange()
The C++ variant implements type safety differently, to avoid warnings
from C++ compilers about:
```
../../../gnome-commander-1.14.2/src/intviewer/searcher.cc:303:5: error: cannot initialize a parameter of type 'gint *' (aka 'int *') with an rvalue of type 'void *'
    g_atomic_int_compare_and_exchange ((gint*)&src->priv->progress_value, oldval, (gint)d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/b/yoe/master/build/tmp/work/cortexa72-yoe-linux/gnome-commander/1.14.2-r0/recipe-sysroot/usr/include/glib-2.0/glib/gatomic.h:160:44: note: expanded from macro 'g_atomic_int_compare_and_exchange'
    __atomic_compare_exchange_n ((atomic), (void *) (&(gaicae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
```

This complements the existing C++ variant for
`g_atomic_pointer_compare_and_exchange()`, and fixes a regression on C++
from https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2114.

With the addition of the unit tests in the previous commit, this is
effectively tested by the FreeBSD and macOS CI jobs, as they use
`clang++` in C++ mode. `g++` doesn’t seem to emit a warning about this.

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

Fixes: #2625
2022-04-01 17:23:23 +01:00
Philip Withnall
16d1bc49cc tests: Add C++ tests for typechecking with atomic compare and exchanges
The tests have to be conditional on C++11 being enabled, as the default
C++ standard on macOS is (for some reason), C++97 (`__cplusplus` is
defined as `199711L`).

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

Helps: #2625
2022-04-01 17:22:33 +01:00
Philip Withnall
4e65bcda0c tests: Fix a typo in a test skip message
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-04-01 17:22:31 +01:00
Loic Le Page
704c65228f Fix global variable name hidden by local variables in glib/tests/asyncqueue.c 2022-04-01 00:18:40 +01:00
Loic Le Page
29c15bc325 Fix global variable name hidden by local variables in glib/tests/base64.c 2022-04-01 00:18:40 +01:00
Loic Le Page
7c138574bd Fix global variable name hidden by local variables in glib/tests/cond.c 2022-04-01 00:18:40 +01:00
Philip Withnall
dabf3ab5f2 Merge branch 'glib-2-74-macros' into 'main'
gversionmacros: Add version macros for GLib 2.74

See merge request GNOME/glib!2572
2022-03-31 15:06:52 +00:00
Emmanuele Bassi
136dc8afff Merge branch 'fix-deprecation-build' into 'main'
tests: Fix compilation when GLIB_DISABLE_DEPRECATION_WARNINGS is defined

See merge request GNOME/glib!2567
2022-03-30 15:26:54 +00:00
Philip Withnall
4f79f0712c gversionmacros: Add version macros for GLib 2.74
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-28 12:55:20 +01:00
Marc-André Lureau
743cd659f4 tests/filutils: remove an mkdir expected to fail test on win32
When running under msys2 (and supposedly cygwin), the root path is
remapped and permissions are permissive, the test doesn't fail.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-23 16:08:42 +00:00
Marc-André Lureau
bd45147077 tests/io-channel: skip a "unimplemented" error on win32
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-23 16:08:42 +00:00
Marc-André Lureau
0ca9edd15f glib/tests: fix foo=bar=baz environment test
The handling of that case isn't well specified, and system dependent.

However if the system decided that "foo=bar" was the key, then don't
expect "foo" is set.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-23 16:08:42 +00:00
Marc-André Lureau
4403704826 glib/tests: fix test_turkish_strupdown
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-23 16:08:40 +00:00
Marc-André Lureau
44adc6ca8e glib/tests: fix casemap_and_casefold test on win32
Both environment variables and GetThreadLocale() may interefere with the
glib case conversion logic.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-23 16:08:05 +00:00
Emmanuel Fleury
5931ed8c2b Move test files on slices from tests/ to glib/tests/
slice-color.c and slice-concurrent.c are moved from tests/ to glib/tests/

Related to issue #1434
2022-03-22 11:42:33 +00:00
Philip Withnall
84940a56fd tests: Fix compilation when GLIB_DISABLE_DEPRECATION_WARNINGS is defined
This should fix the Coverity build, which runs with
`-DGLIB_DISABLE_DEPRECATION_WARNINGS` defined in the environment (see
`.gitlab-ci.yml`).

See: https://gitlab.gnome.org/GNOME/glib/-/jobs/1907625
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-22 10:15:40 +00:00
Carlos Garnacho
16fcd0814e glib: Add tests for far away GDateTimes
Poke near the limits (years 9 and 9990) to ensure these also
result in a correct ISO8601 format.
2022-03-21 12:56:42 +00:00
Carlos Garnacho
c3cc6bf5eb glib: Format GDateTime ISO8601 years as %C%y
The current use of %Y does not take into account that %Y will
not pad the year with 0's, meanwhile ISO8601 does expect a full
YYYY format for all dates. This breaks the formatting with dates
prior to the year 1000.

Split this into %C%y so 2-digit, 0-padded century and year are
printed separately, this gives the expected YYYY format.
2022-03-21 12:56:42 +00:00
Philip Withnall
2e940e125f Merge branch 'w32-skips' into 'main'
Various win32 tests skip & fixes

See merge request GNOME/glib!2540
2022-03-21 12:19:24 +00:00
Philip Withnall
48a3e8f7f2 Merge branch 'move_g_basename_test' into 'main'
Move unit test on g_basename() function to glib/tests/fileutils.c

See merge request GNOME/glib!2558
2022-03-21 12:14:59 +00:00
Philip Withnall
47f905d2f6 Merge branch 'move_relation_tests' into 'main'
Move tests/relation-test.c to glib/tests/relation.c

See merge request GNOME/glib!2559
2022-03-21 12:12:38 +00:00
Marc-André Lureau
0bdd37b7ff glib/tests: disable a racy check on mainloop test
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-18 00:16:38 +04:00
Marc-André Lureau
56405a2fda glib/tests: skip a failing test with a FIXME
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-18 00:16:38 +04:00
Marc-André Lureau
20f8007f73 glib/tests: fix random failure due to rounding
GLib:ERROR:../glib/tests/timer.c:41:test_timer_basic: assertion failed (micros == ((guint64)(elapsed * 1e6)) % 1000000): (11 == 10)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-18 00:16:38 +04:00
Emmanuel Fleury
2d6dc9ff2e Move tests/relation-test.c to glib/tests/relation.c
Related to issue #1434
2022-03-17 18:36:58 +01:00
Emmanuel Fleury
7f7b5ba093 Move unit test on g_basename() function to glib/tests/fileutils.c
g_basename() function is defined in glib/gfileutils.c which is tested
by glib/tests/fileutils.c test set. Until now, g_basename() test was
in glib/test/utils.c. This patch move the unit test to the proper file.
2022-03-17 18:10:09 +01:00
Philip Withnall
7ab9359af0 gtimezone: Fix assertion failure when called with a huge offset
This looks like a regression from commit 3356934db5, but prior to that
commit there was always an assertion failure when calling
`g_time_zone_new_offset()` with an offset which is too large (such as 44
hours), ever since the function was added in commit cf24867b93.

It would be ideal if we could return a `NULL` timezone to indicate the
error, but that’s not part of the API for `g_time_zone_new_offset()`, so
we have to go with the dated and not-ideal approach of returning the UTC
timezone and letting the caller figure it out.

Another potential approach would be to reduce the `offset` modulo 24
hours. This makes the error less easily detectable than if returning
UTC, though, and still returns an invalid result: `+44:00` is not the
same timezone as `+20:00` (it’s one day further ahead).

Add a unit test.

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

Fixes: #2620
2022-03-16 12:52:13 +00:00
Philip Withnall
dbe34687d0 tests: Skip vasprintf() placeholder checks on FreeBSD and macOS
The `vasprintf()` version on those platforms seems to do less rigorous
checking of format placeholders.

See https://gitlab.gnome.org/GNOME/glib/-/jobs/1890001 and
https://gitlab.gnome.org/GNOME/glib/-/jobs/1890000.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-14 17:59:37 +00:00
Philip Withnall
c455d0efb7 tests: Correctly exit and join the worker threads in spawn-multithreaded
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
3f753b0fa3 tests: Fix the prototype of a GChildWatchFunc in spawn-multithreaded
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
ca99cf032d tests: Use separate GMainContext in thread in spawn-multithreaded
Otherwise the `start_thread()` threads and the main thread are competing
to iterate the global default context, which is probably not what was
intended.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
54748d3b7c tests: Lower thread TTLs in spawn-multithreaded
Otherwise the test takes forever, for no discernible benefit.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
7b004d4052 tests: Fix a memory leak in spawn-multithreaded
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
8cb44235df tests: Remove sources when done in spawn-multithreaded
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
d6f99e5093 tests: Remove global variables from spawn-multithreaded
They make everything a lot harder to reason about, and easily allow for
state to leak between tests.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:46:07 +00:00
Philip Withnall
fd43391583 tests: Use g_assert_*() rather than g_assert() in spawn-multithreaded
It won’t get compiled out with `G_DISABLE_ASSERT`.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-12 01:12:19 +00:00
Philip Withnall
aa4385c1d9 gprintf: Clarify error behaviour of g_vasprintf() in docs
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-09 18:19:05 +00:00
Philip Withnall
d6ad10404f tests: Add some tests for g_string_append_vprintf()
This adds coverage of one previously uncovered branch in `gstring.c`.
Real progress!

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-09 14:09:57 +00:00
Philip Withnall
27e1509cd6 tests: Add some tests for g_vasprintf() invalid format strings
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-03-09 14:08:49 +00:00
Philip Withnall
7329c6e09b gprintf: Fix a memory leak with an invalid format in g_vasprintf()
If using the fallback implementation of `g_vasprintf()`.

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

Coverity CID: #1474726
2022-03-09 14:07:34 +00:00
Emmanuele Bassi
618d6873fd Merge branch 'wip/pwithnall/ci-fixes' into 'main'
Various unit test fixes

See merge request GNOME/glib!2538
2022-03-07 09:24:10 +00:00
Philip Withnall
f0baa136f9 Merge branch 'canon-fix' into 'main'
glib: fix buffer overflow in g_canonicalize_filename()

See merge request GNOME/glib!2451
2022-03-04 20:16:29 +00:00
Marc-André Lureau
56e87ae1b5 glib: fix buffer overflow in g_canonicalize_filename()
The output pointer must not go past the ending \0.

warning: HEAP[testglib.exe]:
warning: Heap block at 0000011EA35745A0 modified at 0000011EA35745BF past requested size of f

Fixes commit 9a30a495ec "gfileutils: Improve performance of g_canonicalize_filename()"

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-03-04 20:16:29 +00:00