From dcfaabd4a4e16a71b68c70b306df8ca5ee32d82b Mon Sep 17 00:00:00 2001 From: mmaehren <32199075+mmaehren@users.noreply.github.com> Date: Mon, 17 Mar 2025 15:09:01 +0100 Subject: [PATCH 1/2] Fixed integration tests discovering themselves --- .../nds/anvilcore/execution/TestRunner.java | 104 ++++++++++++------ 1 file changed, 70 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java b/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java index 431a889..d3231a4 100644 --- a/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java +++ b/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor; import org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor; import org.junit.platform.engine.FilterResult; import org.junit.platform.engine.TestSource; @@ -85,41 +86,9 @@ public void runTests() { builder.filters(TagFilter.includeTags(config.getTags())); } if (!config.getProfiles().isEmpty()) { - ProfileResolver profileResolver = new ProfileResolver(config.getProfileFolder()); - List ids = profileResolver.resolve(config.getProfiles()); - builder.filters( - (PostDiscoveryFilter) - descriptor -> { - if (descriptor instanceof MethodBasedTestDescriptor) { - MethodBasedTestDescriptor md = - (MethodBasedTestDescriptor) descriptor; - Method method = md.getTestMethod(); - String anvilTestId = null; - if (method.isAnnotationPresent(AnvilTest.class)) { - anvilTestId = method.getAnnotation(AnvilTest.class).id(); - } else if (method.isAnnotationPresent( - NonCombinatorialAnvilTest.class)) { - anvilTestId = - method.getAnnotation( - NonCombinatorialAnvilTest.class) - .id(); - } else { - LOGGER.warn("Method {} has no ID", method); - } - if (anvilTestId != null) { - if (ids.contains(anvilTestId)) { - return FilterResult.included("Profile includes ID"); - } else { - return FilterResult.excluded( - "Profile does not include ID"); - } - } - return FilterResult.excluded("Method has no ID"); - } - return FilterResult.included( - "Method is not instance of MethodBasedTestDescriptor"); - }); + restrictToProfile(builder); } + restrictToAnvilTests(builder); LauncherDiscoveryRequest request = builder.build(); AnvilTestWatcher anvilTestWatcher = new AnvilTestWatcher(); @@ -163,4 +132,71 @@ public void runTests() { } } } + + private void restrictToProfile(LauncherDiscoveryRequestBuilder builder) { + ProfileResolver profileResolver = new ProfileResolver(config.getProfileFolder()); + List ids = profileResolver.resolve(config.getProfiles()); + builder.filters( + (PostDiscoveryFilter) + descriptor -> { + if (descriptor instanceof MethodBasedTestDescriptor) { + MethodBasedTestDescriptor md = + (MethodBasedTestDescriptor) descriptor; + Method method = md.getTestMethod(); + String anvilTestId = null; + if (method.isAnnotationPresent(AnvilTest.class)) { + anvilTestId = method.getAnnotation(AnvilTest.class).id(); + } else if (method.isAnnotationPresent( + NonCombinatorialAnvilTest.class)) { + anvilTestId = + method.getAnnotation( + NonCombinatorialAnvilTest.class) + .id(); + } else { + LOGGER.warn("Method {} has no ID", method); + } + if (anvilTestId != null) { + if (ids.contains(anvilTestId)) { + return FilterResult.included("Profile includes ID"); + } else { + return FilterResult.excluded( + "Profile does not include ID"); + } + } + return FilterResult.excluded("Method has no ID"); + } + return FilterResult.included( + "Method is not instance of MethodBasedTestDescriptor"); + }); + } + + private void restrictToAnvilTests(LauncherDiscoveryRequestBuilder builder) { + builder.filters( + (PostDiscoveryFilter) + descriptor -> { + if (descriptor instanceof MethodBasedTestDescriptor) { + MethodBasedTestDescriptor md = + (MethodBasedTestDescriptor) descriptor; + Method method = md.getTestMethod(); + if (method.isAnnotationPresent(AnvilTest.class) + || method.isAnnotationPresent( + NonCombinatorialAnvilTest.class)) { + return FilterResult.included(""); + } else { + return FilterResult.excluded("Method is not an AnvilTest"); + } + } else if (descriptor instanceof ClassBasedTestDescriptor) { + ClassBasedTestDescriptor cd = (ClassBasedTestDescriptor) descriptor; + if (cd.getTestClass().isAnnotationPresent(AnvilTest.class) + || cd.getTestClass() + .isAnnotationPresent( + NonCombinatorialAnvilTest.class)) { + return FilterResult.included(""); + } else { + return FilterResult.excluded("Class is not an AnvilTest"); + } + } + return FilterResult.excluded("Test is not an AnvilTest"); + }); + } } From a813defc314e13095b0157adeb0a860e6552df99 Mon Sep 17 00:00:00 2001 From: mmaehren <32199075+mmaehren@users.noreply.github.com> Date: Mon, 17 Mar 2025 15:14:20 +0100 Subject: [PATCH 2/2] Ran formatter and adjusted descriptions --- .../java/de/rub/nds/anvilcore/execution/TestRunner.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java b/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java index d3231a4..46d206e 100644 --- a/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java +++ b/src/main/java/de/rub/nds/anvilcore/execution/TestRunner.java @@ -149,8 +149,7 @@ private void restrictToProfile(LauncherDiscoveryRequestBuilder builder) { } else if (method.isAnnotationPresent( NonCombinatorialAnvilTest.class)) { anvilTestId = - method.getAnnotation( - NonCombinatorialAnvilTest.class) + method.getAnnotation(NonCombinatorialAnvilTest.class) .id(); } else { LOGGER.warn("Method {} has no ID", method); @@ -159,8 +158,7 @@ private void restrictToProfile(LauncherDiscoveryRequestBuilder builder) { if (ids.contains(anvilTestId)) { return FilterResult.included("Profile includes ID"); } else { - return FilterResult.excluded( - "Profile does not include ID"); + return FilterResult.excluded("Profile does not include ID"); } } return FilterResult.excluded("Method has no ID");