4805 Commits

Author SHA1 Message Date
Dan Winship
41eacde630 gtestutils: add "options" to g_test_init(), make option-argv0 use gtester
Declare that the previously-unused "..." argument to g_test_init() is
actually a NULL-terminated list of strings indicating testing options,
and add an option "no_g_set_prgname", which keeps g_test_init() from
calling g_set_prgname(). Then we can port glib/tests/option-argv0 to
use gtester, by passing that option.

https://bugzilla.gnome.org/show_bug.cgi?id=711796
2013-11-23 00:43:45 -05:00
Dan Winship
f733075cd1 glib/tests/include: port to gtester
https://bugzilla.gnome.org/show_bug.cgi?id=711796
2013-11-23 00:39:07 -05:00
Matthias Clasen
a9d93ca1df Add some mainloop instrumentation
Add trace points around adding, removing and dispatching of
sources.

https://bugzilla.gnome.org/show_bug.cgi?id=710741
2013-11-23 00:22:09 -05:00
Dan Winship
158dde0507 Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX
In Windows development environments that have it, <unistd.h> is mostly
just a wrapper around several other native headers (in particular,
<io.h>, which contains read(), close(), etc, and <process.h>, which
contains getpid()). But given that some Windows dev environments don't
have <unistd.h>, everything that uses those functions on Windows
already needed to include the correct Windows header as well, and so
there is never any point to including <unistd.h> on Windows.

Also, remove some <unistd.h> includes (and a few others) that were
unnecessary even on unix.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:25:39 -05:00
Dan Winship
3981cddbf8 Require POSIX.1 (1990) compliance on unix
Assume unix platforms support the original POSIX.1 standard.
Specifically, assume that if G_OS_UNIX, then we have chown(),
getcwd(), getgrgid(), getpwuid(), link(), <grp.h>, <pwd.h>,
<sys/types.h>, <sys/uio.h>, <sys/wait.h>, and <unistd.h>.

Additionally, since all versions of Windows that we care about also
have <sys/types.h>, we can remove HAVE_SYS_TYPES_H checks everywhere.

Also remove one include of <sys/times.h>, and the corresponding
configure check, since the include is not currently needed (and may
always have just been a typo for <sys/time.h>).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:17:42 -05:00
Dan Winship
6e4a7fca43 Require C90 compliance
Assume all supported platforms implement C90, and therefore they
(correctly) implement atexit(), memmove(), setlocale(), strerror(),
and vprintf(), and have <float.h> and <limits.h>.

(Also remove the configure check testing that "do ... while (0)" works
correctly; the non-do/while-based version of G_STMT_START and
G_STMT_END was removed years ago, but the check remained. Also, remove
some checks that configure.ac claimed were needed for libcharset, but
aren't actually used.)

Note that removing the g_memmove() function is not an ABI break even
on systems where g_memmove() was previously not a macro, because it
was never marked GLIB_AVAILABLE_IN_ALL or listed in glib.symbols, so
it would have been glib-internal since 2004.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
7f5b2901cf Remove alleged support for last-millennium Unixes
Remove workarounds for NeXTStep (last released in 1995), SunOS (1994),
HP-UX 9.x (1992) and 10.x (1995), OSF/1 / Digital UNIX / Tru64 UNIX
4.x (1999), and AIX 4.x (1999).

HP-UX 11 implements dlopen(), so dropping support for earlier versions
also lets us remove the HP-UX-specific gmodule-dld.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
51a917bc16 Remove alleged support for BeOS
Since the initial addition of BeOS support in 1999, there has only
been one update to it (in 2005, and it wasn't even very big). GLib is
known to not currently build on Haiku (or presumably actual BeOS)
without additional patching, and the fact that there isn't a single
G_OS_BEOS check in gio/ is suspicious.

Additionally, other than the GModule implementation, all of the
existing G_OS_BEOS checks are either (a) "G_OS_UNIX || G_OS_BEOS", or
(b) random minor POSIXy tweaks (include this header file rather than
that one, etc), suggesting that if we were going to support Haiku, it
would probably be simpler to treat it as a special kind of G_OS_UNIX
(as we do with Mac OS X) rather than as its own completely different
thing.

So, kill G_OS_BEOS.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
57969f4b25 Remove alleged support for OS/2
In particular, remove the OS/2 GModule implementation (which AFAICT
was never actually built even on OS/2).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Stef Walter
6f7d8f6294 gbacktrace: Print out gdb exec errors correctly
We want to see error messages related to starting and running
gdb (such as if it's not installed).

https://bugzilla.gnome.org/show_bug.cgi?id=711088
2013-11-19 14:53:28 +01:00
Stef Walter
36f1a4ce7e gmessages: Add g_info macro for G_LOG_LEVEL_INFO
For completeness. Although less used than others, projects want
to use this, and end up having to define it awkwardly themselves.

https://bugzilla.gnome.org/show_bug.cgi?id=711103
2013-11-19 08:08:14 +01:00
Philip Withnall
cb889d9580 gstrfuncs: Mention nullability in g_ascii_strcasecmp() documentation
Like strcmp(), g_ascii_strcasecmp() requires that both of its parameters
be non-%NULL.
2013-11-14 18:06:32 +00:00
Chun-wei Fan
f038c629a4 glib/tests/: Avoid GCCisms and fix tests for MSVC
Skip the tests on inf/nan strings for the gvariant and strfuncs tests, and
skip the hex strings for the strtod tests in strfuncs as they are C99
features that are not yet supported by Visual C++ (even 2013).  Use a
definition for NAN and INFINITY (that is also used in PyGObject) as
atof("NaN") and atof("Infinity") simply returns 0.0 (which is not a NAN)
in Visual C++ to fix the tests running there.

Also adapt to the format of g_ascii_formatd() when dealing with 1e99.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-11 22:52:00 +08:00
Chun-wei Fan
c58a7b8c74 tests: Fix for non-GCC
Remove uses of using empty arrays in initialization and structs, and build
tests that rely on GCCisms on GCC only.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-11 22:39:57 +08:00
Chun-wei Fan
a7707ec60b glib/tests/spawn-singlethread: Improve test for Windows
Use a Windows-style .bat script for the test_spawn_script() test, at least
when the code is built with Visual C++ (due to differences in how scripts
are written for shells and Windows cmd.exe), and account for Windows-style
line endings for that test too.

Let the MinGW builds (which are normally done in an MSYS BASH-style shell) continue to use the
*NIX-style script for that test.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-11 22:38:36 +08:00
Chun-wei Fan
5fd3c63ae8 glib/gspawn-win32-helper.c: Clean up a bit
Remove the parts about storing up the fd's in a data structure, but call
close() on the fd's.  However, retain the _get_osfhandle() check on the
fd's when we iterate through the fd's as on fd values in the iteration may
well be invalid fd's.  As a result, the invalid parameter handler is still
needed for newer Microsoft CRTs (8.0/2005+) for _get_osfhandle() to
make sure that the program does not abort when we check the validity of
fd's to be closed in the loop[1].

[1]: http://msdn.microsoft.com/en-us/library/ks2530z6%28v=vs.80%29.aspx
2013-11-11 22:37:10 +08:00
Chun-wei Fan
172aaa3a01 glib/gmessages.h: Unify log messages
...Under various compilers when !G_DISABLE_CHECKS.  Previously, the
messages that are logged differ depending whether GLib was built with GCC
or not.  To simplify test cases, make all builds use a single output format
for g_return_if_fail(), g_return_val_if_fail(), g_return_if_reached(), and
g_return_val_if_reached(), by using the GCC-style format and replaceing
__PRETTY_FUNCTION__ with G_STRFUNC, so that it will work across various
compilers.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-11 22:35:40 +08:00
Stef Walter
e34d74bdb3 private: Use threading primitives correctly in private test
We shouldn't be clearing statically allocated mutexes, and also
don't use deprecated heap-allocated GPrivate.

https://bugzilla.gnome.org/show_bug.cgi?id=711755
2013-11-11 08:20:13 +01:00
Stef Walter
dce83add18 gthreadpool: Don't pass bad data to GThreadPool sorter
This causes sorters to crash.

https://bugzilla.gnome.org/show_bug.cgi?id=711756
2013-11-11 07:57:52 +01:00
Stef Walter
81d0ebe29c gmain: Fix use of uninitialized memory in sigaction structure
https://bugzilla.gnome.org/show_bug.cgi?id=711754
2013-11-11 07:40:16 +01: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
Stef Walter
e525586726 unix: Fix memory leak in unix test
https://bugzilla.gnome.org/show_bug.cgi?id=711751
2013-11-10 22:40:28 +01:00
Dan Winship
ab3c55435a gerror: Don't leak memory when overwrite warning
Even though we can't always make no-leak guarantees when g_warning()
in this case we're testing this behavior in tests, and it would be
good to be able to valgrind this.

https://bugzilla.gnome.org/show_bug.cgi?id=711751
2013-11-10 22:40:08 +01:00
Stef Walter
e74b4351a3 private: Fix memory leak in tests
Don't use g_private_new(), it's deprecated, and leaks by definition.

https://bugzilla.gnome.org/show_bug.cgi?id=711751
2013-11-10 22:39:25 +01:00
Michael Catanzaro
5627452048 gstrfuncs: fix small typo in documentation 2013-11-07 18:41:29 -06:00
Stef Walter
2672228733 gerror: Don't leak when warning about overwriting an error
While not strictly necessary, this fixes a false positive
leak in the tests.

https://bugzilla.gnome.org/show_bug.cgi?id=627423
2013-11-06 10:14:16 +01:00
Ryan Lortie
92b71825fd tests: fix leak in mainloop test
Properly unref a pair of GSources in the unix-fd mainloop test.

valgrind was reporting these as 'still reachable' before (possibly due
to some residual pointers somewhere in memory), but when running with
G_DEBUG=cleanup they were properly reported as leaked.
2013-11-06 10:12:50 +01:00
Ryan Lortie
eef0d3c0b8 grand: restructure a bit
Instead of having lots of 'if NULL then allocate' code segments for the
global GRand instance, move it to a single getter function that everyone
calls.
2013-11-06 10:12:40 +01:00
Ryan Lortie
70410b322c gslice: don't misuse g_mutex_init()
We were using g_mutex_init() to initialise a pair of mutexes in static
storage, but we should only do that for mutexes that are part of
allocated structures.
2013-11-06 10:09:29 +01:00
Philip Withnall
4af135ce49 garray: Note lack of bounds checking in g_ptr_array_index() documentation 2013-11-05 16:43:26 +00:00
Chun-wei Fan
d262b6fe0c glib/tests: Clean up inclusion of unistd.h
Include unistd.h only when G_OS_UNIX is defined (or when G_OS_WIN32 is not
defined).  This will avoid including unistd.h unconditionally and/or
unecessarily, which may cause problems in certain scenarios, such as when
building the tests on Visual C++, which does not come with a unistd.h and
MinGW, where unistd.h is essentially a wrapper for io.h and process.h.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-04 22:52:02 +08:00
Chun-wei Fan
1079d30e1b glib/tests/fileutils.c: Include unistd.h on *NIX only
...and fix the test on non-English Windows, as gettext on Windows does
not honor LC_ALL = "C" (the default CRT behavior) but requires using
SetThreadLocale() to set the locale as it picks up the user's environment
and the thread's locale.  Without doing so the g_format_size_for_display()
et al will display the translated message if the gettext translations have
been installed before, causing the test_format_size_for_display tests to
fail.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-04 22:51:39 +08:00
Ognyan Tonchev
64909ff740 gmain: make g_source_add_child_source() thread safe
g_source_add_child_source() releases the context lock before attaching
child_source to context. And this causes trouble if parent source is
blocked and g_main_dispatch() manages to lock the context mutex and call
unblock_source() before child_source gets attached to context.
To fix this we call g_source_attach_unlocked() before releasing the
context mutex.

https://bugzilla.gnome.org/show_bug.cgi?id=711064
2013-11-03 18:11:55 -05:00
Dan Winship
dc172f0616 gmacros.h: fix C99 check
G_STRFUNC was checking __STDC_VERSION__ against the wrong value
(though it didn't actually matter, since __STDC_VERSION__ wasn't
defined in C90, so the check still only matched C99 and above anyway).
2013-11-02 12:23:30 -04:00
Murray Cumming
6ed60a936c docs: GDataTime: *_add_*(): Mention that you can subtract.
Because this was not obvious to at least one person on irc.
2013-10-31 13:15:01 +01:00
Ryan Lortie
daff84e23c GMarkup: clear attributes on ignorned tags
Make sure that if we ignore a tag then we also clear the attributes that
we already collected so that they don't end up on the next unignored tag
opening.

Also add some extra brackets for clarity (it doesn't make any difference
-- I just think it reads nicer this way).

https://bugzilla.gnome.org/show_bug.cgi?id=665634
2013-10-29 09:37:06 -07:00
Ryan Lortie
1bc98830c5 tests: add a ignore-qualified markup-collect case
Add a case to markup-collect that exercises the new IGNORE_QUALIFIED
flag.

https://bugzilla.gnome.org/show_bug.cgi?id=665634
2013-10-28 15:24:58 -07:00
Ryan Lortie
474d91566a GMarkup: add G_MARKUP_IGNORE_QUALIFIED
Add a flag to GMarkupParserFlags to ignore qualified tags (along with
their contents) and attributes.

This will provide a nice way for some of our parsers (GDBus
introspection, GSettings schema, etc) to ignore additional tags that
users have added to their files, under a different namespace.

https://bugzilla.gnome.org/show_bug.cgi?id=665634
2013-10-28 15:24:58 -07:00
Ryan Lortie
cbccbaeacf GMarkup: share some common code for closing tags
The code for dealing with </foo> and the second half of <foo/> was
largely duplicated.  We can share a lot of it by using a common
function.

This slightly changes the behaviour of the parser under error
circumstances: previously the parser would deal with '<foo/}' by first
issuing the end_element callback and then flagging the error due to the
unexpected character.  Now we will flag the unexpected character error
first, skipping the callback.

This behaviour change required modifying the testsuite.

https://bugzilla.gnome.org/show_bug.cgi?id=665634
2013-10-28 15:24:58 -07:00
Stef Walter
44f13124c9 test: g_debug messages shouldn't affect g_assert_expected_messages
Debug messages are meant to give insight into how a process is
proceeding, and are unpredictable in nature. They also often have
line numbers in them.

This patch ignores debug messages in g_test_assert_expected_messages().

https://bugzilla.gnome.org/show_bug.cgi?id=710991
2013-10-28 21:31:34 +01:00
Ryan Lortie
ba3103763d tests: test g_hash_table_get_keys_as_array()
https://bugzilla.gnome.org/show_bug.cgi?id=710964
2013-10-27 09:26:56 -07:00
Ryan Lortie
2880767702 Add g_hash_table_get_keys_as_array()
Returns a %NULL-terminated array of the keys of a hashtable.

In the case that the hash table has strings for keys, this is actually a
gchar**.

https://bugzilla.gnome.org/show_bug.cgi?id=710964
2013-10-27 09:26:53 -07:00
Ryan Lortie
0e1924a66c win32: use real random data for seed on win32
We can get cryptographically secure data from rand_s().

https://bugzilla.gnome.org/show_bug.cgi?id=710738
2013-10-25 18:17:35 -04:00
Colin Walters
1e1e2d1ff7 grand: Document this is not for cryptographic purposes
While this is obvious to seasoned experts upon inspection, it is
really worth documenting explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=710736
2013-10-23 16:41:09 -04:00
Ryan Lortie
a4bcd3e65a gtester: only remove source if not already dead
Don't attempt to g_source_remove() a source for which we already returned FALSE
from the handler.

https://bugzilla.gnome.org/show_bug.cgi?id=710724
2013-10-23 15:28:06 -04:00
Ryan Lortie
f7beb90193 tests: expect critical on failure to remove source
We've added a g_critical() on failure to remove sources, so make sure we
expect to see that (instead of failing the test due to the unexpected
message).

https://bugzilla.gnome.org/show_bug.cgi?id=710724
2013-10-23 12:00:44 -04:00
Ryan Lortie
b9de6f0489 gmain: test g_source_remove() with invalid ID
Make sure we get the proper critical displayed.

https://bugzilla.gnome.org/show_bug.cgi?id=710724
2013-10-23 12:00:44 -04:00
Bastien Nocera
a919be3d39 gmain: Warn when g_source_remove() fails
Trying to remove a non-existent source should really be
a programming error, as the programmer could be trying to
use the wrong function to remove a callback, as seen when
GtkScrolledWindow tried to remove ID from another function
using g_source_remove().

See https://bugzilla.gnome.org/show_bug.cgi?id=710666#c12

https://bugzilla.gnome.org/show_bug.cgi?id=710724
2013-10-23 12:00:43 -04:00
Bastien Nocera
5a3fd63246 g_file_error_from_errno: Remove unneeded breaks
Just wasting space

https://bugzilla.gnome.org/show_bug.cgi?id=710625
2013-10-23 00:22:21 -04:00
Ryan Lortie
1b592524ff GKeyfile: don't leak on failed get_(u)int64
In the case that g_key_file_get_(u)int64 fails to parse the integer,
make sure we free the string before returning.

Reported by Andrew Stone <astonecc@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=710313
2013-10-22 16:24:41 -04:00