45 Commits

Author SHA1 Message Date
Simon McVittie
ffe0402e02 testing: Assert that skipped tests cause g_test_failed()
Signed-off-by: Simon McVittie <smcv@collabora.com>
2018-08-03 13:42:57 +01:00
Simon McVittie
49a877764d testing: Clarify why incomplete tests cause g_test_failed()
Signed-off-by: Simon McVittie <smcv@collabora.com>
2018-08-03 13:42:38 +01:00
Emmanuele Bassi
0b4c2eefce Add fuzzy floating point comparison macro
Add a test macro that allows comparing two floating point values for
equality within a certain tolerance.

This macro has been independently reimplemented by various projects:

 * Clutter
 * Graphene
 * colord

https://gitlab.gnome.org/GNOME/glib/issues/914
2018-05-29 10:02:47 +01: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
Dan Winship
9f2e3f6b72 gtestutils: add g_assert_cmpmem()
Add a test macro to compare two buffers (which are not already known
to be the same length) for equality.

https://bugzilla.gnome.org/show_bug.cgi?id=754283
2015-08-31 13:59:48 -04:00
Dan Winship
be0b921115 Fix up failure-to-see-expected-message logging
When GLib had been told to expect message X, but then actually saw
message Y, it would log the "did not see expected message" error with
message Y's log level and domain, which makes no sense. Change it to
log with domain "GLib" and G_LOG_LEVEL_CRITICAL instead.

Also, include the expected domain in the error message, so that if
that's the reason why the expectation didn't match, you can tell that
from the error message.

Update glib/tests/testing.c for these changes; for all other test
programs in GLib and elsewhere, this change should not break any
existing tests, it should only improve the output on failure.

https://bugzilla.gnome.org/show_bug.cgi?id=727974
2014-07-09 10:48:34 -04:00
Matthias Clasen
cdb14a194e Improve testing test coverage
In particular, test the just-fixed g_test_trap_reached_timeout.
2014-01-01 17:59:21 -05:00
Dan Winship
fab0805b81 Make g_test_run() return 77 if all tests are skipped
Change g_test_run() to return 1 on failure (rather than the number of
failed tests), and 77 if all tests are skipped (since automake and
some other test harnesses recognize that status code).

Previously g_test_run() returned the number of failed tests, but this
behavior was not documented, and at any rate, prior to 2.39,
g_test_run() would normally not return at all if an error occurred.

https://bugzilla.gnome.org/show_bug.cgi?id=720263
2013-12-18 10:09:46 -05:00
Dan Winship
8c188fc9e5 gtestutils: skipping a test should count as success, not failure
In particular, the test program as a whole should exit with status 0
if you skipped some tests but did not fail any.

https://bugzilla.gnome.org/show_bug.cgi?id=720263
2013-12-18 09:26:54 -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
Dan Winship
f4c30feb95 gtestutils: fix g_test_set_nonfatal_assertions()
g_test_set_nonfatal_assertions() was a no-op, because
g_assertion_message() wasn't actually checking the
test_nonfatal_assertions flag. Fix that and add a test.

Also, g_test_set_nonfatal_assertions() has to set test_mode_fatal to
FALSE as well, or else a failed assertion will cause the test program
to abort at the end of the failed test.

Also, belatedly add this and the new g_assert_* methods to the docs.

https://bugzilla.gnome.org/show_bug.cgi?id=711800
2013-11-24 14:59:51 -05: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
8dfb070329 Don't g_test_assert_expected_messages for g_error
Don't allow the user to assert for expected g_error().  They need to use
subprocess for this.

https://bugzilla.gnome.org/show_bug.cgi?id=709615
2013-10-21 14:33:06 -04:00
Dan Winship
f8bb08305c gmessages: fix g_test_expect_message() with NULL domains
Allow passing a NULL domain to g_test_expect_message(), and more
importantly, don't crash if a message with a NULL domain gets logged
while there is an expected message.
2013-08-31 11:51:07 -04:00
Dan Winship
e9284ed297 gtestutils: deprecate g_test_trap_fork()
https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:53 -04: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
Dan Winship
960f5500e2 gtestutils: add g_test_trap_subprocess()
g_test_trap_fork() doesn't work on Windows and is potentially flaky on
unix anyway given the fork-but-don't-exec. Replace it with
g_test_trap_subprocess(), which re-spawns the same program with
arguments telling it to run a specific (otherwise-ignored) test case.

Make the existing g_test_trap_fork() unit tests be unix-only (they
never passed on Windows anyway), and add a parallel set of
g_test_trap_subprocess() tests.

Also fix the logic of gtestutils's "-p" argument (which is used by the
subprocess tests); previously if you had tests "/foo/bar" and
"/foo/bar/baz", and ran the test program with "-p /foo/bar/baz", it
would run "/foo/bar" too. Fix that and add tests.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Matthias Clasen
08dce819cc Revert "gtestutils: add g_test_trap_subprocess(), deprecate g_test_trap_fork()"
This reverts commit e3a29184d56b3a65664eb8859e61afbc804497c8.
2012-12-19 15:20:45 -05: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
Matthias Clasen
6f15db8c3d Revert "gtestutils: fix "-p" logic"
This reverts commit 723a8f55880f1e7bf1b475901ce40e6cd443b72d.
2012-12-19 15:20:31 -05:00
Dan Winship
723a8f5588 gtestutils: fix "-p" logic
If you had two tests "/foo/bar" and "/foo/bar/baz", and ran the test
program with "-p /foo/bar/baz", it would run "/foo/bar" too. Fix that.
And add a test to tests/testing for it.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:11 -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
Dan Winship
e3a29184d5 gtestutils: add g_test_trap_subprocess(), deprecate g_test_trap_fork()
g_test_trap_fork() doesn't work on Windows and is potentially flaky on
unix anyway given the fork-but-don't-exec. Replace it with
g_test_trap_subprocess(), which re-spawns the same program with
arguments telling it to run a specific (otherwise-ignored) test case.

Make the existing g_test_trap_fork() unit tests be unix-only (they
never passed on Windows anyway), and add a parallel set of
g_test_trap_subprocess() tests.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:08 -05:00
Dan Winship
25ac137c0a gtestutils: add g_text_expect_message()
Add g_test_expect_message() and g_test_assert_expected_messages(), to
allow tests of warnings, error messages, return-if-fails, etc.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:54:52 -04:00
Dan Winship
f78931c4ab glib/tests/testing, logging: don't use g_test_undefined()
We are verifying the behavior of the test/logging functions here; this
is not undefined behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:49:06 -04:00
Simon McVittie
fa4792c35e various tests: do not provoke SIGTRAP with -m no-undefined
Some of the GLib tests deliberately provoke warnings (or even fatal
errors) in a forked child. Normally, this is fine, but under valgrind
it's somewhat undesirable. We do want to follow fork(), so we can check
for leaks in child processes that exit gracefully; but we don't want to
be told about "leaks" in processes that are crashing, because there'd
be no point in cleaning those up anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=666116
2011-12-27 17:51:09 -05:00
Matthias Clasen
780d6bfa88 Improve testutils test coverage 2010-08-23 00:38:19 -04:00
Matthias Clasen
2b113e4a9a Silence log handler tests 2010-07-30 19:51:18 -04:00
Christian Dywan
278ac0a45d Bug 579050 Allow making selected critical and warning messages non-fatal
Implement g_test_log_set_fatal_handler which is a function similar to
g_log_set_default_handler but for use in unit tests where certain
errors have to be ignored because it is not possible to fix or avoid
them otherwise. A unit test is added.
2009-09-10 16:45:49 +02:00
15:47:08 Tim Janik
8017661f6d added new sample test to prepare for extended range random tests.
2008-07-25 15:47:08  Tim Janik  <timj@imendio.com>

        * glib/tests/testing.c (test_random_conversions): added new sample
        test to prepare for extended range random tests.


svn path=/trunk/; revision=7253
2008-07-25 13:49:00 +00:00
Michael Natterer
82bc28361e add G_DISABLE_SINGLE_INCLUDES to CPPFLAGS globally.
2008-05-28  Michael Natterer  <mitch@imendio.com>

	* configure.in: add G_DISABLE_SINGLE_INCLUDES to CPPFLAGS
	globally.

	* glib/tests/option-context.c
	* glib/tests/testing.c
	* tests/testingbase64.c: don't include <glib/gtestutils.h>


svn path=/trunk/; revision=6955
2008-05-28 16:18:27 +00:00
Matthias Clasen
da0e7e81c1 /bin/ksh can't handle a for-loop with no arguments, so add a "." for when
2008-02-09  Matthias Clasen <mclasen@redhat.com>

        * Makefile.decl: /bin/ksh can't handle a for-loop with no
        arguments, so add a "." for when $(SUBDIRS) is empty.

        * glib/tests/option-context.c:
        * glib/tests/testing.c:
        * gthread/gthread-posix.c:
        * tets/testingbase64.c:
        * glib/gtester.c:
        * glib/gsequence.c: Portability fixes.  (#515154)



svn path=/trunk/; revision=6487
2008-02-10 04:41:25 +00:00
Jens Granseuer
afc9506e9e Only declare variables at the beginning of a code block. Bug #511654.
2008-01-23  Jens Granseuer  <jensgr@gmx.net>

	* glib/gtestutils.c: (g_test_trap_fork):
	* glib/tests/testing.c: (test_assertions): Only declare variables at
	the beginning of a code block. Bug #511654.

svn path=/trunk/; revision=6361
2008-01-23 22:22:27 +00:00
11:43:22 Tim Janik
510d4ec634 added g_test_add_data_func() to pass data into tests. allow data arguments
2007-12-05 11:43:22  Tim Janik  <timj@imendio.com>

        * glib/gtestutils.[hc]: added g_test_add_data_func() to pass data
        into tests. allow data arguments for fixture tests.

        * glib/gtestutils.c: fixed fatal log flag setup, so tests really abort
        upon criticals/warnings/errors.

        * glib/tests/testing.c: test test_data arguments.

        * glib/gtester.c: some prototype fixups.



svn path=/trunk/; revision=6049
2007-12-05 10:42:09 +00:00
21:06:47 Tim Janik
1e55738f31 initialize automake variables EXTRA_DIST and TEST_PROGS for unconditional
2007-11-21 21:06:47  Tim Janik  <timj@imendio.com>

	* Makefile.decl: initialize automake variables EXTRA_DIST and
	TEST_PROGS for unconditional appending via += in other makefiles.
	define recursive test targets: test, test-report, perf-report,
	full-report, as described here:
      http://mail.gnome.org/archives/gtk-devel-list/2007-November/msg00000.html

	* Makefile.am:
	* build/win32/vs8/Makefile.am, build/win32/dirent/Makefile.am:
	* build/win32/Makefile.am, build/Makefile.am:
	* docs/Makefile.am, docs/reference/Makefile.am:
	* docs/reference/glib/Makefile.am, docs/reference/gobject/Makefile.am:
	* gmodule/Makefile.am, tests/Makefile.am:
	* tests/refcount/Makefile.am, tests/gobject/Makefile.am:
	* glib/update-pcre/Makefile.am, glib/libcharset/Makefile.am:
	* glib/tests/Makefile.am, glib/pcre/Makefile.am:
	* glib/gnulib/Makefile.am, gobject/Makefile.am, m4macros/Makefile.am:
	* gthread/Makefile.am, glib/Makefile.am:
	include $(top_srcdir)/Makefile.decl, adapted EXTRA_DIST assignments.

	* glib/tests/Makefile.am: removed example testing rules.

	* glib/tests/testing.c: conditionalized performance and slow tests.

	* glib/gtestutils.h:
	* glib/gtestutils.c: work around g_test_config_vars not changing its
	exported value after value assignments, aparently due to symbol aliases.

	* glib/gtester.c: fixed off-by-one error which produced junk in logs.

	* configure.in: check for python >= 2.4 and provide $PYTHON for scripts.


svn path=/trunk/; revision=5914
2007-11-21 20:09:46 +00:00
Tim Janik
a2bcee8f62 Fixed copyright for newly submitted files.
svn path=/trunk/; revision=5912
2007-11-20 17:35:26 +00:00
Tim Janik
6332518cc2 Renamed gtestframework to gtestutils.
* glib/glib.h:
* glib/Makefile.am: added gtestutils.h to public includes.

* glib/gtestutils.c: include gtestutils.h.

* glib/gtestutils.h:
* glib/glib.symbols:
* glib/tests/testing.c: renamed gtestframework to gtestutils.

* glib/gtestframework.h: renamed to gtestutils.h.

* glib/gtestframework.c: renamed to gtestutils.c.

svn path=/trunk/; revision=5910
2007-11-20 15:01:02 +00:00
Tim Janik
e3c66f03e0 Implemented test logging basics.
* glib/gtestframework.c: added --debug-log and --verbose, implemented
test information logging.

* testing.c: test g_test_maximized_result() and g_test_minimized_result().

svn path=/trunk/; revision=5885
2007-11-20 15:00:31 +00:00
Tim Janik
6145aaca50 Implemented g_test_timer*().
* gtestframework.c: implemented g_test_timer*().

* tests/testing.c: added a g_test_timer*() test.

svn path=/trunk/; revision=5884
2007-11-20 15:00:30 +00:00
Tim Janik
ba166c0081 Implemented support for testpaths.
* gtestframework.c: implemented g_test_add_vtable() and g_test_add_func().

* tests/testing.c: use g_test_add() and g_test_add_func() to majorly simplify main().

svn path=/trunk/; revision=5883
2007-11-20 15:00:29 +00:00
Tim Janik
b2a4c8bae2 testing.c: added tests for the g_test_rand*() API.
svn path=/trunk/; revision=5882
2007-11-20 15:00:28 +00:00
Tim Janik
fcf30698fe testing.c: added tests for g_assert_cmphex() and forked test traps.
svn path=/trunk/; revision=5880
2007-11-20 15:00:26 +00:00
Tim Janik
ca1c42405e that match a given test path. (g_test_run_suite): run suite only if it
* glib/gtestframework.c:

that match a given test path.
(g_test_run_suite): run suite only if it matches the existing test paths.

* glib/tests/testing.c: minor rename.

svn path=/trunk/; revision=5878
2007-11-20 15:00:24 +00:00
Tim Janik
cc3bf40d26 GTest framework started.
* glib/gtestframework.h: testing framework API as proposed on gtk-devel-list.
includes elaborate assertions, performance report functions, test traps,
test timer, test random numbers, teardoiwn garbage collection functions
and general test case / test suite management APIs.

* glib/gtestframework.c: first test framework implementation. already covers
some test suite management APIs and assertion message implementations.

* glib/tests/testing.c: test program for the testing framework.

* glib/tests/Makefile.am: complie testing.c as test. run all tests as part of
make test:.

svn path=/trunk/; revision=5877
2007-11-20 15:00:23 +00:00