mirror of
https://github.com/brl/mutter.git
synced 2024-11-10 07:56:14 -05:00
[tests] Add TEST_CONFORM_SKIP() macro
Sometimes a test unit should not be executed depending on a condition. It would be good to have a macro doing this, along with TEST_CONFORM_SIMPLE(). Additionally, the skipped unit should be added to a specific namespace, so that any coverage report will be able to catch it. For this reason, here's TEST_CONFORM_SKIP() which follows the syntax: TEST_CONFORM_SKIP (condition, namespace, function); If condition evaluates to FALSE the test is skipped and the unit added to the "/skipped" namespace.
This commit is contained in:
parent
9da564b391
commit
28dd557d8f
@ -7,6 +7,12 @@
|
|||||||
|
|
||||||
#include "test-conform-common.h"
|
#include "test-conform-common.h"
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_conform_skip_test (TestConformSimpleFixture *fixture,
|
||||||
|
gconstpointer data)
|
||||||
|
{
|
||||||
|
/* void */
|
||||||
|
}
|
||||||
|
|
||||||
/* This is a bit of sugar for adding new conformance tests:
|
/* This is a bit of sugar for adding new conformance tests:
|
||||||
*
|
*
|
||||||
@ -18,15 +24,29 @@
|
|||||||
* that gets passed to the fixture setup and test functions. (See the
|
* that gets passed to the fixture setup and test functions. (See the
|
||||||
* definition in test-conform-common.h)
|
* definition in test-conform-common.h)
|
||||||
*/
|
*/
|
||||||
#define TEST_CONFORM_SIMPLE(NAMESPACE, FUNC) \
|
#define TEST_CONFORM_SIMPLE(NAMESPACE, FUNC) G_STMT_START { \
|
||||||
extern void FUNC (TestConformSimpleFixture *fixture, gconstpointer data); \
|
extern void FUNC (TestConformSimpleFixture *fixture, gconstpointer data); \
|
||||||
g_test_add ("/conform" NAMESPACE "/" #FUNC, \
|
g_test_add ("/conform" NAMESPACE "/" #FUNC, \
|
||||||
TestConformSimpleFixture, \
|
TestConformSimpleFixture, \
|
||||||
shared_state, /* data argument for test */ \
|
shared_state, /* data argument for test */ \
|
||||||
test_conform_simple_fixture_setup, \
|
test_conform_simple_fixture_setup, \
|
||||||
FUNC, \
|
FUNC, \
|
||||||
test_conform_simple_fixture_teardown);
|
test_conform_simple_fixture_teardown); } G_STMT_END
|
||||||
|
|
||||||
|
/* this is a macro that conditionally executes a test if CONDITION
|
||||||
|
* evaluates to TRUE; otherwise, it will put the test under the
|
||||||
|
* "/skip" namespace and execute a dummy function that will always
|
||||||
|
* pass.
|
||||||
|
*/
|
||||||
|
#define TEST_CONFORM_SKIP(CONDITION, NAMESPACE, FUNC) G_STMT_START { \
|
||||||
|
if (CONDITION) { \
|
||||||
|
g_test_add ("/skipped" NAMESPACE "/" #FUNC, \
|
||||||
|
TestConformSimpleFixture, \
|
||||||
|
shared_state, /* data argument for test */ \
|
||||||
|
test_conform_simple_fixture_setup, \
|
||||||
|
test_conform_skip_test, \
|
||||||
|
test_conform_simple_fixture_teardown); \
|
||||||
|
} else { TEST_CONFORM_SIMPLE (NAMESPACE, FUNC); } } G_STMT_END
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
@ -58,13 +78,11 @@ main (int argc, char **argv)
|
|||||||
shared_state->argv_addr = &argv;
|
shared_state->argv_addr = &argv;
|
||||||
|
|
||||||
TEST_CONFORM_SIMPLE ("/timeline", test_timeline);
|
TEST_CONFORM_SIMPLE ("/timeline", test_timeline);
|
||||||
if (g_test_slow ())
|
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_dup_frames);
|
||||||
{
|
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_dup_frames);
|
||||||
TEST_CONFORM_SIMPLE ("/timeline", test_timeline_dup_frames);
|
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_interpolate);
|
||||||
TEST_CONFORM_SIMPLE ("/timeline", test_timeline_interpolate);
|
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_rewind);
|
||||||
TEST_CONFORM_SIMPLE ("/timeline", test_timeline_rewind);
|
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_smoothness);
|
||||||
TEST_CONFORM_SIMPLE ("/timeline", test_timeline_smoothness);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_CONFORM_SIMPLE ("/picking", test_pick);
|
TEST_CONFORM_SIMPLE ("/picking", test_pick);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user