selftests: harness: Restore order of test functions
The recent addition of explicit constructor orders for fixture tests
broke the ordering of those relative to non-fixture tests and the
reverse-constructor-order detection.
Restore the ordering of the test functions relative to each other by
using the same explicit test order for all test registrations and
__constructor_order_first().
Rename the constant, as it is not specific to TEST_F() anymore.
Link: https://lore.kernel.org/r/20260422-kselftests-harness-order-v2-1-93ea980ea3ac@linutronix.de
Fixes: 6be2681514 ("selftests/harness: order TEST_F and XFAIL_ADD constructors")
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: Kees Cook <kees@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
master
parent
74f192205c
commit
465b05bae5
|
|
@ -76,7 +76,7 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
|
|||
memset(s, c, n);
|
||||
}
|
||||
|
||||
#define KSELFTEST_PRIO_TEST_F 20000
|
||||
#define KSELFTEST_PRIO_TEST 20000
|
||||
#define KSELFTEST_PRIO_XFAIL 20001
|
||||
|
||||
#define TEST_TIMEOUT_DEFAULT 30
|
||||
|
|
@ -194,7 +194,7 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
|
|||
.fixture = &_fixture_global, \
|
||||
.termsig = _signal, \
|
||||
.timeout = TEST_TIMEOUT_DEFAULT, }; \
|
||||
static void __attribute__((constructor)) _register_##test_name(void) \
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST))) _register_##test_name(void) \
|
||||
{ \
|
||||
__register_test(&_##test_name##_object); \
|
||||
} \
|
||||
|
|
@ -238,7 +238,7 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
|
|||
FIXTURE_VARIANT(fixture_name); \
|
||||
static struct __fixture_metadata _##fixture_name##_fixture_object = \
|
||||
{ .name = #fixture_name, }; \
|
||||
static void __attribute__((constructor)) \
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST))) \
|
||||
_register_##fixture_name##_data(void) \
|
||||
{ \
|
||||
__register_fixture(&_##fixture_name##_fixture_object); \
|
||||
|
|
@ -364,7 +364,7 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
|
|||
_##fixture_name##_##variant_name##_object = \
|
||||
{ .name = #variant_name, \
|
||||
.data = &_##fixture_name##_##variant_name##_variant}; \
|
||||
static void __attribute__((constructor)) \
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST))) \
|
||||
_register_##fixture_name##_##variant_name(void) \
|
||||
{ \
|
||||
__register_fixture_variant(&_##fixture_name##_fixture_object, \
|
||||
|
|
@ -468,7 +468,7 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
|
|||
fixture_name##_teardown(_metadata, self, variant); \
|
||||
} \
|
||||
static struct __test_metadata *_##fixture_name##_##test_name##_object; \
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST_F))) \
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST))) \
|
||||
_register_##fixture_name##_##test_name(void) \
|
||||
{ \
|
||||
struct __test_metadata *object = mmap(NULL, sizeof(*object), \
|
||||
|
|
@ -1323,7 +1323,7 @@ static int test_harness_run(int argc, char **argv)
|
|||
return KSFT_FAIL;
|
||||
}
|
||||
|
||||
static void __attribute__((constructor)) __constructor_order_first(void)
|
||||
static void __attribute__((constructor(KSELFTEST_PRIO_TEST))) __constructor_order_first(void)
|
||||
{
|
||||
__constructor_order_forward = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue