54 Commits

Author SHA1 Message Date
Simon McVittie
b0f686a00e tests: Don't test invalid aligned allocations if avoiding UB
We can't exercise precondition check failures if GLib was (inadvisably)
compiled with -Dglib_checks=false, and we shouldn't necessarily exercise
precondition check failures when using QA tools like valgrind, so skip
these tests if run with -m no-undefined.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-02-15 11:03:00 +00:00
Simon McVittie
38cdfe3c02 tests: Make g_aligned_alloc tests fail if preconditions aren't checked
Previously, these tests would always pass. If the precondition check
failed (as we want it to), the subprocess would exit unsuccessfully;
but if the precondition check wrongly passed, the subprocess would
continue, allocate a nonzero amount of memory, and fail the
g_assert_null(), resulting in the subprocess exiting unsuccessfully
and the test still passing.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-02-15 10:52:59 +00:00
Simon McVittie
d04f3491af tests: Don't assume that all platforms are 64-bit
On ILP32 platforms, 4 is a valid alignment for g_aligned_alloc(), so
use 2 as our invalid alignment instead.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-02-15 10:49:51 +00:00
Emmanuele Bassi
b37c99c44e Add tests for g_aligned_alloc()
We want to test the API contract, by checking the return value for
zero-sized allocations, invalid alignments, and overflows.
2022-02-11 14:44:09 +00:00
Sophie Herold
68eab1d999 utils: Add XDG_STATE_HOME support 2021-12-24 20:11:39 +00: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
Emmanuel Fleury
dd47df80e1 Merging tests/bit-test.c into glib/tests/utils.c 2021-12-01 14:10:44 +01: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
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
Luke Yue
3321fb561e tests: Add a test case for g_find_program_in_path()
Signed-off-by: Luke Yue <lukedyue@gmail.com>
2021-06-02 20:10:38 +08:00
Philip Withnall
7e9585177d tests: Drop use of g_test_bug_base()
Include the base URI in the `g_test_bug()` calls instead. This resolves
inconsistencies between the old bug base (bugzilla.gnome.org) and the
new bug base (gitlab.gnome.org). It also has the advantage that the URI
passed to `g_test_bug()` is now clickable in the code editor, rather
than being split across two locations.

See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/275#note_303175

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-05-13 22:16:27 +01:00
Philip Withnall
648986a290 glib: Avoid redefining GLIB_DISABLE_DEPRECATION_WARNINGS
It may be defined by the environment (we document that as being allowed)
— if so, individual files should not try to redefine it, as that causes
a preprocessor warning.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-27 15:41:09 +01:00
Ernestas Kulik
58ba7d78fb list, slist: Add g_clear_{s,}list()
Although not quite as often-occurring, this should help with constructs
like this:

  if (list)
    {
      g_list_free_full (list, foo);
      list = NULL;
    }

Closes https://gitlab.gnome.org/GNOME/glib/issues/1943
2019-11-25 13:09:25 +01:00
Ting-Wei Lan
d219b3553c gutils: Use uname to report OS info when there is no os-release file
There are a lot of Unix-like systems which have not implemented the
os-release spec. On such system, we can use POSIX uname function as a
fallback to get basic information of the system.
2019-10-14 13:42:08 +01:00
Simon McVittie
f9a1970a0f gutils test: Don't assume that every Unix OS implements os-release(5)
os-release(5) is widely implemented on Linux, but not necessarily
ubiquitous: unusual or minimal Linux distributions might not have it.
It could in principle be implemented by any other Unix OS, but in
practice this has not yet happened.

Closes: https://gitlab.gnome.org/GNOME/glib/issues/1906
Fixes: 349318e8 "gutils: Add g_get_os_info()"
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-10-09 14:11:08 +01:00
Robert Ancell
349318e8db gutils: Add g_get_os_info()
Add a new function that gets OS information for /etc/os-release.
2019-09-27 15:47:03 +12:00
Patrick Storz
56149722ae Add g_get_console_charset
Queries the charset used by the associated console, which does not
necessarily match the charset of the current locale as returned by
g_get_charset.

Fixes https://gitlab.gnome.org/GNOME/glib/issues/1270
2019-05-27 17:51:40 +00:00
Philip Withnall
6a2cfde29f gtypes: Define signed integer minimum values in terms of maximum values
This is what limits.h does. It avoids a problem when compiling with MSVC
(in C++ mode) on Windows, whereby the 0x80000000 constant is interpreted
as unsigned, and *then* the unary minus is applied to it.

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4146?view=vs-2017

Add a test which should hopefully catch problems with different
compilers’ interpretations of this in future.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1663
2019-01-23 13:23:53 +00:00
Philip Withnall
2e9c31af11 gmem: Only evaluate pointer argument to g_clear_pointer() once
The new typeof() macro version of g_clear_pointer() was evaluating its
pointer argument more than once, meaning any side effects would be
evaluated multiple times.

The existing (other) macro version of g_clear_pointer() was evaluating
its argument exactly once. This mismatch could have confused people or
lead to subtle bugs.

See https://gitlab.gnome.org/GNOME/glib/issues/1494.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-22 14:47:52 +01:00
Iain Lane
f9a9902aac gmem.h: Use __typeof__() in the g_clear_pointer() macro
Type punning is used on the existing implementation, which hides errors
such as:

  GSList *list = NULL;
  g_clear_pointer (&list, g_error_free);

Let's use __typeof__ to cast the passed-in pointer before it's passed to
the free function so it trips -Wincompatible-pointer-types if it's wrong.

Fixes #1425
2018-07-16 15:34:27 +01:00
Cosimo Cecchi
5ebd8f6e88 gmain: add g_clear_handle_id API
It's a very common pattern to see code that looks like this in
dispose() or finalize() implementations:

if (priv->source_id > 0)
  {
    g_source_remove (priv->source_id);
    priv->source_id = 0;
  }

This API allows to accomplish the same goal with a single line:

g_clear_handle_id (&priv->source_id, (GClearHandleFunc) g_source_remove);

Thanks to Emmanuele Bassi <ebassi@gnome.org> for making the patch
generic.

https://bugzilla.gnome.org/show_bug.cgi?id=788489
2017-11-07 08:28:45 -08:00
Tom Schoonjans
d011223085 g_get_host_name: ensure hostname has UTF8 encoding on Windows
Ensures that the hostname returned by g_get_host_name is always UTF8 encoded.
Previously, on Windows, the returned string would be encoded in the
current codepage, if it contained non-ASCII characters.

The unit test for g_get_host_name was updated with a check to ensure
that the hostname is indeed at UTF-8 string.

https://bugzilla.gnome.org/show_bug.cgi?id=789755
2017-11-01 15:46:07 +00:00
Simon McVittie
45dae4b506 tests: replace most g_print() with g_printerr()
I searched all files that mention g_test_run, and replaced most
g_print() calls. This avoids interfering with TAP. Exceptions:

* gio/tests/network-monitor: a manual mode that is run by
  "./network-monitor --watch" is unaffected
* glib/gtester.c: not a test
* glib/gtestutils.c: not a test
* glib/tests/logging.c: specifically exercising g_print()
* glib/tests/markup-parse.c: a manual mode that is run by
  "./markup-parse --cdata-as-text" is unaffected
* glib/tests/testing.c: specifically exercising capture of stdout
  in subprocesses
* glib/tests/utils.c: captures a subprocess's stdout
* glib/tests/testglib.c: exercises an assertion failure in g_print()

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981
Reviewed-by: Colin Walters <walters@verbum.org>
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2015-05-11 20:24:56 +01:00
Ryan Lortie
aa68b3d6d6 tests: add a test case for g_steal_pointer()
Just some basic checking to make sure it works as intended.

https://bugzilla.gnome.org/show_bug.cgi?id=742456
2015-02-06 15:17:27 +01:00
Matthias Clasen
f9f7ad2557 Improve gutils.c test coverage 2014-01-01 17:59:22 -05:00
Matthias Clasen
90aa4ed0a0 Improve charset test coverage 2014-01-01 17:59:22 -05:00
Matthias Clasen
c34cc2348c Simplify subprocesses in tests
Use the new way of running tests in a subprocess without
registering extra 'subprocess' test cases where appropriate.
2013-12-15 11:50:00 -05:00
Matthias Clasen
d6af3c63c9 Add a test for g_atexit 2013-11-28 21:58:25 -05:00
Stef Walter
fe8862dc1b utils: Don't free memory owned by glib in test
https://bugzilla.gnome.org/show_bug.cgi?id=711775
2013-11-10 22:52:47 +01:00
Dan Winship
e3d1869ee3 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Matthias Clasen
0178402c6d Revert "tests: port from g_test_trap_subprocess() to g_test_trap_fork()"
This reverts commit ea06ec80634ff8f22882f3bc92effb10ac294e41.
2012-12-19 15:20:37 -05:00
Dan Winship
ea06ec8063 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
(or, in a few cases, to g_test_expect_message())

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:10 -05:00
Daniel Macks
1fec9ac47d Fix constant type to match assigned variable type
Some compilers assume a literal value is a certain byte-length without
checking the type to which it is being assigned, giving a compile-time
warning: a default of 'long' is a mismatch when assigning to a guint64
when the latter is a 'long long'. Use one of glib's standard macros to
specify the type of the constant to match the variable type.

https://bugzilla.gnome.org/show_bug.cgi?id=688829
2012-12-19 14:29:08 -05:00
Dan Winship
f80d8f1e4d win32: various fixes to test programs
Fix a few win32-specific bugs in various tests, and #ifdef out code
that is UNIX- or Linux-specific that wouldn't be expected to pass on
Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Matthias Clasen
96ed9e41f4 Improve utils test coverage 2012-08-18 14:42:10 -04:00
Matthias Clasen
1c6070a679 Add a test for G_USER_DIRECTOR_DESKTOP
Based on a patch by Marc-Antoine Perennou,
https://bugzilla.gnome.org/show_bug.cgi?id=676594
2012-06-23 17:51:11 -04:00
Matthias Clasen
d5d3c7b3a4 Cover some malloc corner cases in tests 2012-05-14 17:57:42 -04:00
Matthias Clasen
215844b3a6 Add a test for g_clear_pointer 2012-05-14 17:57:42 -04:00
Matthias Clasen
8783224202 Add some directory getter tests 2012-04-23 08:20:21 -04:00
Matthias Clasen
2a1ea40920 utils: Improve test coverage
Add a test for some of our gettext variants.
2012-04-08 10:24:51 -04:00
Sebastian Dröge
57878d6042 Use __builtin_bswap* for GUINT*_SWAP_LE_BE if building with GCC
https://bugzilla.gnome.org/show_bug.cgi?id=531901
2012-03-17 23:28:48 -04:00
Matthias Clasen
dbc01d3090 Don't rely on /bin/sh
Another Fedora UsrMove victim !
2012-02-21 00:26:19 +01:00
Dan Winship
29f786851d Fix glib/tests/utils for g_parse_debug_string() changes 2011-11-14 13:55:14 -05:00
Matthias Clasen
cbb0b2a0ed Add g_get_codeset test 2011-10-15 23:58:30 -04:00
Matthias Clasen
63fa44251a utils: silence tests unless verbose 2011-06-19 01:05:05 -04:00
Matthias Clasen
309f5f978b Improve test coverage
Various test additions, mainly in GObject
2011-02-13 23:49:19 -05:00
Christian Persch
3d824065b8 Add g_get_locale_variants()
Make _g_compute_locale_variants() public as g_get_locale_variants().

Bug #635998.
2011-01-05 22:57:20 +01:00
Matthias Clasen
b52294d14c Try to fix the version test on builders 2010-12-04 14:12:07 -05:00