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.

Fixes: 6be268151426 ("selftests/harness: order TEST_F and XFAIL_ADD 
constructors")
Signed-off-by: Thomas Weißschuh <[email protected]>
---
The harness selftest flags this issue, but apparently that was not used.
---
 tools/testing/selftests/kselftest_harness.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/kselftest_harness.h 
b/tools/testing/selftests/kselftest_harness.h
index 75fb016cd190..eaa659acb3b4 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -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;
 }

---
base-commit: c1f49dea2b8f335813d3b348fd39117fb8efb428
change-id: 20260420-kselftests-harness-order-9f641f204bde

Best regards,
--  
Thomas Weißschuh <[email protected]>


Reply via email to