Please refer to the definition of RUN_TEST macro. It simply declares a static function "obds_##func" and then create a pointer in the ".test_launch" section pointing to this function.
#define RUN_TEST_COMMON(name, func) \
static int obds_##func (void) \
{ \
obds_test_t test_func = (obds_test_t) func; \
record_test_result(name, test_func()); \
return 0; \
}
#define RUN_TEST(name, func) \
RUN_TEST_COMMON(name, func) \
static obds_test_t __obds_test_##func __attribute__ ((used)) __attribute__ ((section(".test_launch"))) = obds_##func;
In run test, every pointer in ".test_launch" section will go though and execute its pointed test function "obds_##func".
To customize the tests in any order, please remove the "static" declaration in RUN_TEST_COMMON() and then call each "obds_##func()" in the order you want.