1610 Commits

Author SHA1 Message Date
Marc-André Lureau
10b450eaf6 glib/tests: make fd-assignment-clash run on win32
This is a minimal test for g_spawn_async_with_pipes_and_fds()

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-07 23:30:37 +04:00
Marc-André Lureau
8309872111 glib/tests: fix compilation with MSVC
glib/tests/spawn-singlethread.c(439): error C2057: expected constant expression

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-07 23:30:37 +04:00
Philip Withnall
41ba547ea7 Merge branch 'fix_date_test_again_and_again' into 'main'
Fix glib/test/date.c for FreeBSD/OpenBSD/MacOS X

See merge request GNOME/glib!2473
2022-02-07 14:00:14 +00:00
Emmanuel Fleury
541d52b984 Fix glib/test/date.c for FreeBSD/OpenBSD/MacOS X
Still have forgot one last (hopefully) case in the generic ones.
2022-02-04 18:20:57 +01:00
Emmanuel Fleury
48c9d77588 Fix test date (again)...
I forgot to remove the "%P" case from shared code... Doh!
2022-02-04 17:07:39 +01:00
Emmanuel Fleury
fd52a39abc Fix tests on the date format for FreeBSD and MacOS X.
Related to MR !2433
2022-02-04 13:47:25 +01:00
Emmanuel Fleury
e5cb2e9bbf Remove tests/testgdate.c from tests
Related to issue #1434
2022-02-03 15:18:05 +01:00
Philip Withnall
555bef05cf Merge branch 'file-test' into 'main'
File tests

See merge request GNOME/glib!2404
2022-02-01 11:15:45 +00:00
Loic Le Page
4f6673fb58 Fix glib/tests/completion test
GLists compare pointers values and not strings content.
2022-01-27 12:10:13 +01:00
Emmanuel Fleury
b3d0752f3d Improve test coverage of glib/gfileutils.c 2022-01-26 15:18:40 +01:00
Emmanuel Fleury
849d3812c9 Move tests/file-test.c to glib/tests/fileutils.c 2022-01-26 15:18:40 +01:00
Loic Le Page
42c77c7ac7 Enable full-static build on Windows
Glib cannot be built statically on Windows because glib, gobject and gio
modules need to perform specific initialization when DLL are loaded and
cleanup when unloaded. Those initializations and cleanups are performed
using the DllMain function which is not called with static builds.

Issue is known for a while and solutions were already proposed but never
merged (see: https://gitlab.gnome.org/GNOME/glib/-/issues/692). Last
patch is from version 2.36.x and since then the
"constructor/destructor" mechanism has been implemented and used in
other part of the system.

This patch takes back the old idea and updates it to the last version of
glib to allow static compilation on Windows.

WARNING: because DllMain doesn't exist anymore in static compilation
mode, there is no easy way of knowing when a Windows thread finishes.
This patch implements a workaround for glib threads created by calling
g_thread_new(), so all glib threads created through glib API will behave
exactly the same way in static and dynamic compilation modes.
Unfortunately, Windows threads created by using CreateThread() or
_beginthread/ex() will not work with glib TLS functions. If users need
absolutely to use a thread NOT created with glib API under Windows and
in static compilation mode, they should not use glib functions within
their thread or they may encounter memory leaks when the thread finishes.

This should not be an issue as users should use exclusively the glib API
to manipulate threads in order to be cross-platform compatible and this
would be very unlikely and cumbersome that they may mix up Windows native
threads API with glib one.

Closes #692
2022-01-26 10:14:02 +01:00
Pablo Correa Gómez
c2ff12ced5
glib/tests: Fix variable maybe uninitialized warning 2022-01-25 20:18:41 +01:00
Philip Withnall
ce45b88b90 Merge branch 'unicode_caseconv_tests' into 'main'
Merge test/unicode-caseconv.c into glib/tests/unicode.c

See merge request GNOME/glib!2432
2022-01-19 15:54:19 +00:00
Emmanuel Fleury
b9f07a458a Merge test/unicode-caseconc.c into glib/tests/unicode.c
Related to issue #1434
2022-01-19 16:21:01 +01:00
Philip Withnall
8ec5dca0fe Merge branch '2564-zerowidth-jungseong' into 'main'
guniprop: Set jungseong and jongseong points to zero-width for Old Korean

Closes #2564

See merge request GNOME/glib!2418
2022-01-19 11:20:35 +00:00
Philip Withnall
3be0fc867e Merge branch 'wip/hash-table-from' into 'main'
ghash: Add g_hash_table_new_similar

See merge request GNOME/glib!2405
2022-01-19 11:19:07 +00:00
Jonas Ådahl
283d9e0c15 ghash: Add g_hash_table_new_similar()
This function creates a new hash table, but inherits the functions used
for the hash, comparison, and key/value memory management functions from
another hash table.

The primary use case is to implement a behaviour where you maintain a
hash table by regenerating it, letting the values not migrated be freed.
See the following pseudo code:

```
GHashTable *ht;

init(GList *resources) {
  ht = g_hash_table_new (g_str_hash, g_str_equal, g_free, g_free);
  for (r in resources)
    g_hash_table_insert (ht, strdup (resource_get_key (r)), create_value (r));
}

update(GList *resources) {
  GHashTable *new_ht = g_hash_table_new_similar (ht);

  for (r in resources) {
    if (g_hash_table_steal_extended (ht, resource_get_key (r), &key, &value))
      g_hash_table_insert (new_ht, key, value);
    else
      g_hash_table_insert (new_ht, strdup (resource_get_key (r)), create_value (r));
  }
  g_hash_table_unref (ht);
  ht = new_ht;
}
```
2022-01-18 22:19:55 +01:00
Pablo Correa Gómez
b8c4a3e13b
glib/tests: Fix NULL reference on >= C++11
Fixes #2582
2022-01-18 16:51:15 +01:00
Philip Withnall
233611fe42 tests: Fix compilation failure on msys2-mingw64
This is a follow-up from commit 995823b9d9, which added the condition
```
```
to the array test. On most platforms, both of those symbols are numeric
literals, but on 64-bit Windows `G_MAXSIZE` includes some widening
casts, which means it can’t be used in a preprocessor condition.

We don’t expose an appropriate symbol in `glibconfig.h` which could be
used instead, but the standard `*_WIDTH` symbols from `limits.h` will be
identical and can be used instead.

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

Fixes: #2565
2022-01-06 13:22:23 +00:00
Philip Withnall
84202a2ef0 guniprop: Set jungseong and jongseong points to zero-width for Old Korean
This mirrors what `wcwidth()` from glibc does as of June 2020 (commit
6e540caa2).

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

Fixes: #2564
2022-01-06 13:11:24 +00:00
Sophie Herold
68eab1d999 utils: Add XDG_STATE_HOME support 2021-12-24 20:11:39 +00:00
Sebastian Dröge
8ca2a7d7c8 Merge branch 'wip/pwithnall/fix-environment-tests' into 'main'
tests: Fix environment test on FreeBSD

See merge request GNOME/glib!2407
2021-12-24 10:08:50 +00:00
Philip Withnall
1a1f05234e Merge branch 'improve_gasyncqueue_tests' into 'main'
Improve test coverage of glib/tests/asyncqueue.c

See merge request GNOME/glib!2403
2021-12-23 13:11:45 +00:00
Philip Withnall
4bb9e20fff tests: Fix environment test on FreeBSD
Fix for commit 20c8ea1bc651bc4b79d39b80d42b468f6e7a2dc8; while Linux
seems happy to return the value for the invalid key we set above, BSD
returns NULL (which is probably a more valid thing to do).

Accept both.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-12-23 13:04:49 +00:00
Emmanuel Fleury
aa99af54aa Improve test coverage of glib/tests/asyncqueue.c 2021-12-17 21:21:49 +01:00
Emmanuel Fleury
c6ced6abe0 Improving glib/tests/environment.c 2021-12-17 20:18:40 +01:00
Emmanuel Fleury
20c8ea1bc6 Move tests/env-test.c into glib/tests/environment.c 2021-12-16 16:32:26 +01:00
Emmanuel Fleury
9f760a7cc1 Moving tests/dirname-test.c to glib/tests/fileutils.c
Helps issue #1434
2021-12-16 10:41:13 +00:00
Philip Withnall
dce8d110d6 Merge branch 'move_tests/child-test_to_glib/tests/spawn-multithreaded' into 'main'
Merging tests/child-test.c into glib/tests/spawn-multithreaded.c

See merge request GNOME/glib!2390
2021-12-16 10:38:53 +00:00
Charles Barto
d60b4010c4 Silence MSVC C4312 in list tests
This warning warns on widening casts from integer to pointer type,
because those casts can be problematic for porting to new pointer
sizes. The code in question didn't do any bad things here so an
intermediate cast to size_t was added to silence the warning
2021-12-15 17:21:20 -08:00
Charles Barto
cdd53b9218 fix /list/position test
This test was exploiting unspecified behavior w.r.t. the address of string
literals, It expected them to be pooled (the same literal has the same
address, at least within a TU), but MSVC does not pool by default,
leading to a failure.
2021-12-15 17:19:50 -08:00
Emmanuel Fleury
45bd6e1d3d Improving the tests moved in spawn-multithreaded 2021-12-16 00:55:42 +01:00
Emmanuel Fleury
241b9f41b4 Merging tests/child-test.c into glib/tests/spawn-multithreaded.c
Helps issue #1434
2021-12-15 23:12:59 +01:00
Emmanuel Fleury
cde56cfc70 Move tests/completion-test.c to glib/tests/completion.c
Helps issue #1434
2021-12-13 17:42:23 +01:00
Philip Withnall
cbd48824bd tests: Test the function forms of g_bit_*() APIs too
The tests were previously only checking the macro forms. The function
forms should behave identically, but since it’s easy enough to get
coverage of them, we might as well.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-12-02 10:02:57 +00:00
Philip Withnall
d5e6793b83 tests: Factor out common calculations in test_basic_bits() test
This decreases the overall test time from 0.17s to 0.12s for me, and
will help further in the following commit where I’m going to repeat some
of these calculations again for further comparisons.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-12-02 09:59:46 +00:00
Philip Withnall
17ffe7b303 Merge branch 'move_bit-test' into 'main'
Merging tests/bit-test.c into glib/tests/utils.c

See merge request GNOME/glib!2379
2021-12-02 09:45:37 +00:00
Emmanuel Fleury
dd47df80e1 Merging tests/bit-test.c into glib/tests/utils.c 2021-12-01 14:10:44 +01:00
Philip Withnall
b5b3327636 Merge branch 'move_test_sources' into 'main'
GSource: move test to glib/tests/

See merge request GNOME/glib!2376
2021-12-01 11:39:46 +00:00
Nishal Kulkarni
70a8811ccc GSource: move test to glib/tests/
Previously tests existed in two places,
`$top_srcdir/tests/sources.c` contained additional tests,
they have now been moved to `$top_srcdir/glib/tests/mainloop.c`
and `$top_srcdir/tests/sources.c` was deleted.

Related to: #1434
2021-12-01 14:04:46 +05:30
Emmanuel Fleury
074d0a79d9 Removing tests/asyncqueue-test.c from tests/
Tests on async queues are already performed in a more extensive way in
glib/tests/asyncqueue.c. This test file can be safely removed without
any loss.
2021-11-29 16:46:13 +01:00
Nishal Kulkarni
279a610018 gqsort: Move test to glib/tests/
Previously tests existed in two places,
`$top_srcdir/tests/qsort-test.c` contained a similar test
to the one in `$top_srcdir/glib/tests/sort.c` called `test_sort_basic()`

The test for checking with zero elements was additional added to
`$top_srcdir/glib/tests/sort.c` and `$top_srcdir/tests/qsort-test.c`
was deleted.

Related to: #1434
2021-11-27 02:16:22 +05:30
Philip Withnall
3fecaa3924 tests: Unset CHARSET when testing locales to avoid it breaking tests
The charset set in `CHARSET` overrides the charset after the `.` in any
`LC_*` category (set via the environment or `setlocale()`). This will
break many tests, but in particular it definitely breaks the
`/GDateTime/format_mixed/` tests which are specifically checking
different charsets being set for different `LC_*` categories.

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

Fixes: #2514
2021-11-26 12:08:02 +00:00
Philip Withnall
f496d28093 Merge branch 'make_setprgname_thread_safe' into 'main'
gutils: Make g_set_prgname() thread-safe

Closes #847

See merge request GNOME/glib!2358
2021-11-24 11:10:29 +00:00
Nishal Kulkarni
ef4b43ff13 gutils: Make g_set_prgname() thread-safe
Currently `g_prgname` can be freed by `g_set_prgname()` while another
thread is holding a pointer to it.

We use GQuark when setting g_prgname so that string is never released once set.
Also added unit test, which checks if setting prgname in multi-threaded
program is safe.

Closes: #847
2021-11-24 16:22:28 +05:30
Philip Withnall
de2f692846 Merge branch 'main' into 'main'
gutf8: add string length check when ending character offset is -1

See merge request GNOME/glib!2328
2021-11-22 12:22:54 +00:00
Chen Guanqiao
9adbdd45d7 gutf8: add string length check when ending character offset is -1
Some function such as atk_text_get_text, use -1 to indicate the end of the
string. And an crash occurs when the -1 is passed to g_utf8_substring.

Call Trace:
  0  __memmove_avx_unaligned_erms
  1  memcpy
  2  g_utf8_substring
  3  impl_GetText
  4  handle_other
  5  handle_message
  6  _dbus_object_tree_dispatch_and_unlock
  7  dbus_connection_dispatch
  8  dbus_connection_dispatch
  9  ()
  10 g_main_dispatch
  11 g_main_context_dispatch
  12 g_main_context_iterate
  13 g_main_context_iteration
  14 g_application_run
  15 main

Signed-off-by: Chen Guanqiao <chen.chenchacha@foxmail.com>
2021-11-19 00:52:07 +08:00
Philip Withnall
6554af0320 gutils: Disable some dead code on macOS
This code isn’t used when building on macOS, so ifdef it out to avoid a
compiler warning.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-11-18 10:57:37 +00:00
Sebastian Wilhelmi
21b45d6ac2 guri: Improve performance of remove_dot_segments() algorithm 2021-11-17 15:20:28 +00:00