gtestutils: Add g_test_get_path() API

I found myself wanting to know the test that is currently being run,
where e.g. __func__ would be inconvenient to use, because e.g. the place
the string was needed was not in the test case function. Using __func__
also relies on the test function itself containing the whole path, while
loosing the "/" information that is part of the test path.
This commit is contained in:
Jonas Ådahl 2021-01-25 14:43:00 +01:00
parent 3791add329
commit 657d18fdbb
4 changed files with 40 additions and 0 deletions

View File

@ -3508,6 +3508,7 @@ GTestDataFunc
g_test_add_data_func
g_test_add_data_func_full
g_test_add
g_test_get_path
GTestFileType
g_test_build_filename

View File

@ -4230,3 +4230,23 @@ g_test_get_filename (GTestFileType file_type,
return result;
}
/**
* g_test_get_path:
*
* Gets the test path for the test currently being run.
*
* In essence, it will be the same string passed as the first argument to
* e.g. g_test_add() when the test was added.
*
* This function returns a valid string only within a test function.
*
* Returns: the test path for the test currently being run
*
* Since: 2.68
**/
const char *
g_test_get_path (void)
{
return test_run_name;
}

View File

@ -338,6 +338,10 @@ void g_test_add_data_func_full (const char *testpath,
GTestDataFunc test_func,
GDestroyNotify data_free_func);
/* tell about currently run test */
GLIB_AVAILABLE_IN_2_68
const char * g_test_get_path (void);
/* tell about failure */
GLIB_AVAILABLE_IN_2_30
void g_test_fail (void);

View File

@ -843,6 +843,18 @@ test_subprocess_timed_out (void)
g_assert_true (g_test_trap_reached_timeout ());
}
static void
test_path_first (void)
{
g_assert_cmpstr (g_test_get_path (), ==, "/misc/path/first");
}
static void
test_path_second (void)
{
g_assert_cmpstr (g_test_get_path (), ==, "/misc/path/second");
}
static const char *argv0;
static void
@ -1595,6 +1607,9 @@ main (int argc,
g_test_add_func ("/misc/incomplete", test_incomplete);
g_test_add_func ("/misc/timeout", test_subprocess_timed_out);
g_test_add_func ("/misc/path/first", test_path_first);
g_test_add_func ("/misc/path/second", test_path_second);
g_test_add_func ("/tap", test_tap);
g_test_add_func ("/tap/summary", test_tap_summary);