1728 Commits

Author SHA1 Message Date
Simon McVittie
00b17c92bf Add a test-case for calling g_test_build_filename after g_test_run
This will not reproduce the bug when run as a unit test, because in that
scenario, G_TEST_BUILDDIR and G_TEST_SRCDIR are set. It *can* reproduce
the bug (at least probabilistically) when run as an installed-test,
or manually in a build tree:

    ./_build/glib/tests/testing

Reproduces: https://gitlab.gnome.org/GNOME/glib/-/issues/2563
Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-02-11 13:04:06 +00:00
Philip Withnall
a71ed21116 Merge branch 'unicode-script-math' into 'main'
Add G_UNICODE_SCRIPT_MATH to GUnicodeScript

See merge request GNOME/glib!2476
2022-02-11 12:42:55 +00:00
Alexis King
e85a085ca4 Add G_UNICODE_SCRIPT_MATH to GUnicodeScript 2022-02-11 12:42:55 +00:00
Philip Withnall
0c27ac8287 tests: Use g_test_skip() to skip a test on Windows 2022-02-10 13:40:28 +00:00
Marc-André Lureau
32f514b0fa glib/tests: skip more tests that depend on installed translations
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 12:44:59 +04:00
Marc-André Lureau
6d21ff6305 glib/tests: skip test that aborts with plain Windows UCRT
setlocale() asserts on LC_MESSAGES:
minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp(448) : Assertion failed: LC_MIN <= _category && _category <= LC_MAX

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale
https://developercommunity.visualstudio.com/t/setlocale-assert-on-invalid-category/1646244

(apparently, MinGW wraps or reimplements the call)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 12:44:59 +04:00
Marc-André Lureau
9e9e323a2d glib/tests: set DE ThreadLocale to fix a test
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 12:44:59 +04:00
Marc-André Lureau
2761e13446 glib/tests: skip some tests if langinfo isn't available
The fallback win32 code doesn't seem to be localized.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 12:44:59 +04:00
Marc-André Lureau
60e7430c80 glib/tests: skip rfc8536 file parsing on Windows
This is specific to Unix, as far as I can tell.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 12:44:56 +04:00
Marc-André Lureau
1713dd0a91 tests: skip read-only-directory test on win32
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 01:05:46 +04:00
Marc-André Lureau
354c454c56 tests: fix read-only-file test
The test is meant to check read-only files don't get overwritten, which
is 0400 in octal.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 01:04:30 +04:00
Marc-André Lureau
59b226d272 tests: use g_chmod in fileutils tests
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 00:36:46 +04:00
Marc-André Lureau
5f4e8f625d tests: fix test_set_contents_full error test on win32
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 00:36:46 +04:00
Marc-André Lureau
a4e302f503 tests: fix test_set_contents_full mode check on win32
Fixes:
GLib:ERROR:../glib/tests/fileutils.c:1348:test_set_contents_full: assertion failed (statbuf.st_mode & ~S_IFMT == tests[i].new_mode): (438 == 420)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-10 00:36:46 +04:00
Philip Withnall
e74d6f4552 Merge branch 'test_two_digit_years' into 'main'
Improve coverage of two digit years in gdate tests

See merge request GNOME/glib!2477
2022-02-09 11:40:52 +00:00
Emmanuel Fleury
d2e86d806c Improve coverage of two digit years in gdate tests 2022-02-08 23:35:59 +01:00
Marc-André Lureau
e05227371d glib/win32: fix passing same fd for stdout & stderr spawn
Delay closing the FDs after all input FDs are duped.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-07 23:39:36 +04:00
Marc-André Lureau
34ce1b1f93 glib/spawn: win32 helper doesn't support same fd for out&err
This is fixed in the following commits of this MR.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-07 23:31:10 +04:00
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