1240 Commits

Author SHA1 Message Date
Philip Withnall
860dc949ca tests: Add some assertions on some otherwise-unused variables
Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=751738
2017-10-06 12:57:06 +01:00
Philip Withnall
a2cf4806a4 tests: Add tests for g_slist_copy() and g_slist_copy_deep()
This gives us 100% coverage of GSList (when running `make lcov`).

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

https://bugzilla.gnome.org/show_bug.cgi?id=787581
2017-09-13 13:37:13 +01:00
Robert Ancell
491f835c17 GDateTime: Support parsing ISO 8601 strings
This supports a subset of ISO 8601 since that is a commonly used standard for
storing date and time information. We support only ISO 8601 strings that contain
full date and time information as this would otherwise not map to GDateTime.
This subset includes all of RFC 3339 which is commonly used on the Internet and
the week and ordinal day formats as these are supported in the GDateTime APIs.

(Minor modification by Philip Withnall to change API versions from 2.54
to 2.56.)

https://bugzilla.gnome.org/show_bug.cgi?id=753459
2017-09-11 19:29:34 +01:00
Robert Ancell
947fea1d16 GDateTime: Reject days outside of month limits
The previous code allowed February 30th.
2017-08-16 11:47:32 +12:00
Tim-Philipp Müller
a1fdae8afc meson: don't error out if xmllint is not found
Only needed for glib/tests and entirely optional.
2017-08-03 19:23:25 +01:00
Philip Withnall
5cddde1fb2 Consistently save errno immediately after the operation setting it
Prevent the situation where errno is set by function A, then function B
is called (which is typically _(), but could be anything else) and it
overwrites errno, then errno is checked by the caller.

errno is a horrific API, and we need to be careful to save its value as
soon as a function call (which might set it) returns. i.e. Follow the
pattern:
  int errsv, ret;
  ret = some_call_which_might_set_errno ();
  errsv = errno;

  if (ret < 0)
    puts (strerror (errsv));

This patch implements that pattern throughout GLib. There might be a few
places in the test code which still use errno directly. They should be
ported as necessary. It doesn’t modify all the call sites like this:
  if (some_call_which_might_set_errno () && errno == ESOMETHING)
since the refactoring involved is probably more harmful than beneficial
there. It does, however, refactor other call sites regardless of whether
they were originally buggy.

https://bugzilla.gnome.org/show_bug.cgi?id=785577
2017-08-03 10:21:13 +01:00
Руслан Ижбулатов
425a9f5864 gio: add a simple gpoll performance test for W32
It just creates a number of socket pairs, then triggers read-ready status on these pairs in different patterns (none, one, half, all) and checks how much time it takes to g_poll() those. Also sometimes posts a Windows message and polls for its arrival.
The g_main_context_new() is necessary to initialize g_poll() debugging on W32.

Measures minimal and maximal time it takes to g_poll(), as well as the average, over 1000 runs.
Collects the time values into 25 non-linear buckets between 0ns and 1000ns, and displays them at the conclusion of each subtest.

https://bugzilla.gnome.org/show_bug.cgi?id=785468
2017-08-01 12:50:08 +00:00
Tim-Philipp Müller
9306ada4fd meson: fix 'Unknown variable "gtester"' error on windows
With msys64/mingw.
2017-07-15 11:24:40 +01:00
Emmanuele Bassi
065a8a488a meson: Use the appropriate interface and binary ages
We need to build them out of the project version, and then propagate
them.
2017-07-14 14:21:57 +01:00
Tim-Philipp Müller
89ee284d2b meson: glib/tests: add missing tests 2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
3c62619930 tests: autoptr test can be run on gcc, clang, intel
The only place where it won't work, is MSVC and maybe Sun Studio, but
we'd need someone to test Sun Studio first.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
fe2a9887a8 meson: Improve MSVC and MinGW support and fix dependencies everywhere
Disable gio tests on Windows, fix .gitignore to not ignore
config.h.meson, and add more things to it.

Rename the library file naming and versioning to match what Autotools
outputs, e.g., libglib-2.0.so.0.5000.2 on Linux, libglib-2.0-0.dll  and
glib-2.0-0.dll on Windows with MSVC.

Several more tiny fixes, more executables built and installed, install
pkg-config and m4 files, fix building of gobject tests.

Changes to gdbus-codegen to support out-of-tree builds without
environment variables set (which you can't in Meson). We now add the
build directory to the Python module search path.
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
213957970e meson: Fix glib, add gobject, gio, gthread, gmodule, etc
Several small fixes to the build files.

Lots of tests have also been added, and glib tests pass now.
2017-07-13 19:03:39 -04:00
Rico Tzschichholz
4e1567a079 unicode: Update to unicode 10.0.0
https://bugzilla.gnome.org/show_bug.cgi?id=784456
2017-07-05 17:53:07 +02:00
Philip Withnall
a74fe20064 tests: Drop local timezone GTimeVal overflow check
We can’t reasonably control the local timezone in the test
environment, so drop some assertions which were assuming the local
timezone offset was not big enough to cause an overflow in the GTimeVal
handling for GDateTime.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2017-07-05 16:37:20 +01:00
Philip Withnall
1366ce7ee0 gutf8: Clarify return value docs for g_utf8_find_next_char()
Make it clearer that it will only return NULL if @end is non-NULL. Add a
test for this too.

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

https://bugzilla.gnome.org/show_bug.cgi?id=773842
2017-06-21 11:39:52 +01:00
Philip Withnall
3e89b19c44 gutf8: Fix documentation for g_utf8_get_char_validated() length limits
If g_utf8_get_char_validated() encounters a nul byte in the middle of a
string of given longer length, it returns -2, indicating a partial
gunichar. That is not the obvious behaviour, but since
g_utf8_get_char_validated() has been API for a long time, the behaviour
cannot be changed.

Document it, and add some unit tests (for this behaviour and the other
behaviour of g_utf8_get_char_validated()).

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

https://bugzilla.gnome.org/show_bug.cgi?id=780095
2017-06-21 11:38:46 +01:00
Philip Withnall
428acd9b14 tests: Fix overflows in find_maximum_supported_tv_sec()
The addition (highest_success + lowest_failure) could have overflowed,
and typically would do on 32-bit platforms where the real
highest_success should be G_MAXLONG. Fix that, and introduce special
handling of the corner case of (highest_success = G_MAXLONG).

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

https://bugzilla.gnome.org/show_bug.cgi?id=783841
2017-06-21 11:21:31 +01:00
Philip Withnall
30fed3b906 tests: Fix GDateTime overflow tests on 32-bit architectures
On architectures where sizeof(glong) == 32 bits, there are no problems
with overflow when constructing a GDateTime from a GTimeVal. Adjust the
test for this by basing it on the maximum supported tv_sec value it can
calculate, rather than a fixed ‘known unsupported’ value.

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

https://bugzilla.gnome.org/show_bug.cgi?id=783841
2017-06-21 11:21:31 +01:00
Sébastien Wilmet
eea0681574 LGPLv2+ -> LGPLv2.1+: update remaining files
For the files in gio/ (but not in gio/ sub-directories), only the *.[ch]
files were handled in commit 3bf4a720c315b5015c8d51edf0b458348f796674.

For the modified files in glib/tests/markups/, I've tested that
`make check` still succeeds.

After this commit,
$ git grep -in "GNU Library"
and
$ git grep -in "Library General"
return only results in COPYING files and in glib/libcharset/. The latter
was not updated because it's a copy.

$ git grep -in "version 2" | grep -iv "version 2\.1"
now doesn't return any LGPL license header.
- glib-gettextize.in: GPL
- glib/gen-unicode-tables.pl: GPL
- glib/gnulib/: a copy
- glib/libcharset/: a copy
- m4macros/attributes.m4: GPL
- po/po2tbl.sed.in: GPL
- tap-driver.sh: GPL
- tests/*.pl: GPL

https://bugzilla.gnome.org/show_bug.cgi?id=776504
2017-06-03 10:30:17 +02:00
Sébastien Wilmet
95cad9c3e0 glib/tests/: LGPLv2+ -> LGPLv2.1+
There are other tests in glib/tests/ that are licensed under a BSD-style
license, and other tests that don't have any license header.

https://bugzilla.gnome.org/show_bug.cgi?id=776504
2017-05-24 11:58:19 +02:00
Daniel Boles
8a12fb47ce array-test: Fix a comment 2017-05-12 10:05:56 +01:00
Krzesimir Nowak
4fe89b0437 gstrfuncs: Add replacement for string-to-number functions
Very often when we want to convert a string to number, we assume that
the string contains only a number. We have g_ascii_strto* family of
functions to do the conversion but they are awkward to use - one has
to check if errno is zero, end_ptr is not NULL and *end_ptr points to
the terminating nul and then do the bounds checking. Many projects
need this kind of functionality, so it gets reimplemented all the
time.

This commit adds some replacement functions that convert a string to a
signed or unsigned number that also follows the usual way of error
reporting - returning FALSE on failure and filling an error output
parameter.
2017-05-10 12:04:03 +02:00
Philip Withnall
b7ffc07d98 tests: Improve error handling for fileutils test
The test_stdio_wrappers() test will spuriously fail if the mkdir-test
directory already exists and is non-empty, which can happen if a
previous test run has failed and left a coredump file in the directory.
Tighten up the error checking around the pre-test rmdir() call to catch
this failure.

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

https://bugzilla.gnome.org/show_bug.cgi?id=782237
2017-05-08 11:19:46 +01:00
Philip Withnall
5c1e85669a tests: Update g_assert()s in fileutils test to be more descriptive
Use the new g_assert_{non,}null(), g_assert_cmpint(), g_assert_true(),
etc., to get more descriptive output when the tests fail.

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

https://bugzilla.gnome.org/show_bug.cgi?id=782237
2017-05-07 20:18:30 +01:00
Philip Withnall
9374ecc3cb gdatetime: Fix overflow checks when constructing from timestamps
GDateTime does overflow checks to see if the timestamp being passed in
is too big to be represented. However, it only does those after
converting from a timestamp to an interval, which involves some
multiplications and additions — and hence can overflow, and cause the
later bounds check to erroneously succeed. This results in a non-NULL
GDateTime being returned which represents completely the wrong date.

Fix the overflow checks (do them earlier) and add some unit tests.

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

https://bugzilla.gnome.org/show_bug.cgi?id=782089
2017-05-05 10:51:08 +01:00
Philip Withnall
f6f6b3d83c garray: Add g_ptr_array_find[_with_equal_func]()
Partially based on telepathy-glib’s tp_g_ptr_array_contains(), and a
patch by Xavier Claessens <xavier.claessens@collabora.co.uk>.

Test cases included.

https://bugzilla.gnome.org/show_bug.cgi?id=698064
2017-05-02 16:54:41 +01:00
Philip Withnall
35c0dd2755 gbase64: Fix base-64 stepped encoding with small chunks
If encoding with small chunks such that the call to
g_base64_encode_close() has to deal with 0 < x < 24 bits of remaining
state, the encoding code would not correctly use zeroes to pad out the
state — it would use left-over state from an earlier iteration in the
encoding process.

This resulted in invalid base-64 encodings.

Add a unit test for incremental encoding using different sized chunks
too.

Thanks to Rainier Perske for reporting and analysing the bug.

https://bugzilla.gnome.org/show_bug.cgi?id=780066

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2017-03-23 15:34:11 +00:00
Iain Lane
ec02a1875f tests/gdatetime: Use a real rather than invented timezone
The tzdata maintainers had previously invented abbreviations for
timezones. As of their 2017a release, the one we were testing ("BRT")
has been dropped.

Switch to testing PST, which is a real timezone abbreviation.

https://bugzilla.gnome.org/show_bug.cgi?id=779799
2017-03-15 11:06:55 +00:00
Carlos Sánchez de La Lama
525b33c05f Correct collation key generation on OS X
This ixes bug #673047.
2017-03-08 22:37:29 -05:00
Paolo Borelli
935cd72bdd utf8: add unit test for g_utf8_make_valid 2017-03-04 19:59:37 +01:00
Philip Withnall
77945667f7 ghmac: Add support for G_CHECKSUM_SHA384 to GHmac
It has the same block size as SHA-512, so it just needs a new case in
the switch, some documentation updates, and the test vectors from RFC
4868.

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

https://bugzilla.gnome.org/show_bug.cgi?id=771997
2017-02-20 12:40:26 +01:00
Igor Gnatenko
1f9a9f8ce5 gchecksum: add SHA-384 support
Signed-off-by: Igor Gnatenko <ignatenko@src.gnome.org>
2017-02-20 12:40:26 +01:00
Bastien Nocera
4b75333c83 guuid: Remove support for curly braces and URN UUIDs
As we currently cannot generate UUIDs with curly braces, or as URNs,
remove those from the possible valid UUIDs.

We do this separately to make it easier to re-add later, should we want
to enhance the coverage of our UUID functions.

https://bugzilla.gnome.org/show_bug.cgi?id=639078
2017-02-06 14:40:38 +01:00
Bastien Nocera
215c9b7951 guuid: Add UUID helper functions to GLib
Many UUID users will just need a random string, which can be generated
simply by calling the function g_uuid_string_random().

Based on original patch by
Marc-André Lureau <marcandre.lureau@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=639078
2017-02-06 14:40:38 +01:00
Sébastien Wilmet
6231b1abc9 License headers: replace current FSF address by a link to gnu.org
Even if the address is correct, it's far more convenient to have a link
to a website.

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:57 +01:00
Sjoerd Simons
e097619327 Assert threads are created in test 642026
We kept seeing the glib testsuite hanging on our CI system in the
testcase for 642026. After some digging it turned out the jenkins slave
was misconfigured and its task limit was too low.

Add an assertion that the test thread has been created to more easily
spot this error condition as opposed to the test simply hanging.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

https://bugzilla.gnome.org/show_bug.cgi?id=769672
2016-12-27 20:43:17 +01:00
Rico Tzschichholz
ba18667bb4 unicode: Update to unicode 9.0.0
https://bugzilla.gnome.org/show_bug.cgi?id=771591
2016-09-21 18:31:04 +02:00
Matthias Clasen
2dc11a55f8 Add a test for the previous fix 2016-09-12 22:28:35 -04:00
Jonh Wendell
e7bdd5d189 Add g_log_variant(): structured log that accepts a GVariant
This makes the structured logging available to other
languages via introspection.

https://bugzilla.gnome.org/show_bug.cgi?id=770971
2016-09-09 09:07:50 -03:00
Jonh Wendell
9323378834 tests: Remove an unsed variable 2016-09-09 09:07:50 -03:00
Allison Lortie
6d1178b2d9 gregex: loosen behaviour testing
Circa 8.38, upstream PCRE (intentionally?) changed behaviour with
respect to whether options set with expressions like "(?i)" at the
top-level were reported via the pcre_fullinfo() API as having been
requested during compilation.

GLib contained a test that verified that these options were indeed
reported as if they had been provided as flags on the API.

Remove that check, and document the no-longer-deterministic behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=767240
2016-08-16 10:41:46 +02:00
Philip Withnall
f1eeb7cf8c tests: Fix GSList test to not dereference off the end of an array
This looks like a typo or copypasta error. As spotted by cppcheck, which
is the code analysis tool GLib deserves, but not the one it needs right
now.
2016-08-13 10:29:31 +02:00
Philip Withnall
ba874a8580 tests: Add an assertion to guard against unexpected flags
This should not change the behaviour of the test, unless the test's
behaviour is changed in future. As spotted by cppcheck, which has
impeccable taste and a flair for the unexpected.
2016-08-13 10:28:24 +02:00
Philip Withnall
2a5d9f8898 Revert "Add a test for expected messages with structured logging"
This reverts commit bc40c7a05cbd0e7c9b97ce86cccb6a4b78c2e56a.

We are going to make g_test_expect_message() only work for the old
logging API.

https://bugzilla.gnome.org/show_bug.cgi?id=769486
2016-08-07 08:07:42 +01:00
Matthias Clasen
bc40c7a05c Add a test for expected messages with structured logging
This tests the fix in the previous commit.
2016-08-02 23:16:04 -04:00
Matthias Clasen
df457c9110 Update logging tests
We now treat the PRIORITY field like other string fields, and
set its length to -1. Adapt the tests for this.
2016-07-22 23:06:52 -04:00
Matthias Clasen
ca775518d8 Add more structured logging tests
In particular, add a test to ensure that passing NULL
as log_domain has no negative consequences.
2016-07-22 15:12:42 -04:00
Matthias Clasen
3892034455 Add more tests for g_log_structured 2016-07-20 20:42:09 -04:00
Philip Withnall
052eaf24f7 gmessages: Add a structured logging API
In parallel with g_log(), add a new structured logging API, based around
g_log_structured() and various helper functions which are exposed
publicly to allow programs to build their own logging policies easily,
without having to rewrite a lot of gmessages.c because it’s all
internal.

See the expanded documentation at the top of gmessages.c for some
rationale. See the g_log_structured() documentation for some example
code.

https://bugzilla.gnome.org/show_bug.cgi?id=744456
2016-07-16 23:52:18 -04:00