You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2018/04/20 13:36:43 UTC
[2/3] deltaspike git commit: DELTASPIKE-1338 support for ClassFilter
per @TestControl test
DELTASPIKE-1338 support for ClassFilter per @TestControl test
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/3f219d6f
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/3f219d6f
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/3f219d6f
Branch: refs/heads/deltaspike-1.8.x
Commit: 3f219d6fbf87186edcd934848bff80ae608a6af7
Parents: f7c12d7
Author: gpetracek <gp...@apache.org>
Authored: Fri Apr 20 15:12:56 2018 +0200
Committer: gpetracek <gp...@apache.org>
Committed: Fri Apr 20 15:24:02 2018 +0200
----------------------------------------------------------------------
.../deltaspike/testcontrol/api/TestControl.java | 9 +++++
.../testcontrol/api/junit/CdiTestRunner.java | 2 +-
.../api/junit/CdiTestSuiteRunner.java | 40 ++++++++++++++++----
.../api/literal/TestControlLiteral.java | 7 ++++
4 files changed, 50 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3f219d6f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/TestControl.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/TestControl.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/TestControl.java
index 5753250..7885fb2 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/TestControl.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/TestControl.java
@@ -18,6 +18,7 @@
*/
package org.apache.deltaspike.testcontrol.api;
+import org.apache.deltaspike.core.spi.filter.ClassFilter;
import org.apache.deltaspike.core.api.projectstage.ProjectStage;
import java.lang.annotation.Annotation;
@@ -64,6 +65,14 @@ public @interface TestControl
*/
Class<? extends Label> activeAlternativeLabel() default Label.class;
+ //with cdi 1.1+ it can be used to implement labeled-alternatives without text based config
+ //(details see DELTASPIKE-1338)
+ /**
+ * low-level filter (mainly needed for special cases if labeled-alternatives aren't enough)
+ * @return the class-filter class which should be used for the current test-class
+ */
+ Class<? extends ClassFilter> classFilter() default ClassFilter.class;
+
interface Label
{
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3f219d6f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
index f50650c..11be0d4 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
@@ -467,7 +467,7 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
// Note that Weld 1 was "flat" anyway, so this property only affects newer versions of Weld
System.setProperty("org.jboss.weld.se.archive.isolation", "false");
- CdiTestSuiteRunner.applyAlternativeLabel(testClass);
+ CdiTestSuiteRunner.applyTestSpecificMetaData(testClass);
container.boot(CdiTestSuiteRunner.getTestContainerConfig());
setContainerStarted();
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3f219d6f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestSuiteRunner.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestSuiteRunner.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestSuiteRunner.java
index bfe0b45..5a31765 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestSuiteRunner.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestSuiteRunner.java
@@ -22,6 +22,7 @@ import org.apache.deltaspike.cdise.api.CdiContainer;
import org.apache.deltaspike.cdise.api.CdiContainerLoader;
import org.apache.deltaspike.core.api.config.ConfigResolver;
import org.apache.deltaspike.core.api.config.PropertyLoader;
+import org.apache.deltaspike.core.spi.filter.ClassFilter;
import org.apache.deltaspike.core.spi.activation.Deactivatable;
import org.apache.deltaspike.core.spi.config.ConfigSource;
import org.apache.deltaspike.core.util.ClassDeactivationUtils;
@@ -111,7 +112,7 @@ public class CdiTestSuiteRunner extends Suite
if (!containerStarted)
{
- applyAlternativeLabel(getTestClass().getJavaClass());
+ applyTestSpecificMetaData(getTestClass().getJavaClass());
container.boot(getTestContainerConfig());
containerStarted = true;
@@ -219,16 +220,17 @@ public class CdiTestSuiteRunner extends Suite
}
//just here, because all shared methods are in this class
- static void applyAlternativeLabel(Class<?> currentAnnotationSource)
+ static void applyTestSpecificMetaData(Class<?> currentAnnotationSource)
{
- String activeAlternativeLabel = checkForLabeledAlternativeConfig(currentAnnotationSource);
- initTestEnvConfig(currentAnnotationSource, activeAlternativeLabel);
+ TestControl testControl = currentAnnotationSource.getAnnotation(TestControl.class);
+ String activeAlternativeLabel = checkForLabeledAlternativeConfig(testControl);
+
+ initTestEnvConfig(currentAnnotationSource, activeAlternativeLabel, testControl);
}
- private static String checkForLabeledAlternativeConfig(Class<?> currentAnnotationSource)
+ private static String checkForLabeledAlternativeConfig(TestControl testControl)
{
String activeAlternativeLabel = "";
- TestControl testControl = currentAnnotationSource.getAnnotation(TestControl.class);
if (testControl != null)
{
@@ -258,7 +260,7 @@ public class CdiTestSuiteRunner extends Suite
return activeAlternativeLabel;
}
- private static void initTestEnvConfig(Class<?> testClass, String activeAlternativeLabel)
+ private static void initTestEnvConfig(Class<?> testClass, String activeAlternativeLabel, TestControl testControl)
{
if (ClassDeactivationUtils.isActivated(TestConfigSource.class))
{
@@ -283,6 +285,18 @@ public class CdiTestSuiteRunner extends Suite
testConfigSource.getProperties().put("activeAlternativeLabel", activeAlternativeLabel);
testConfigSource.getProperties().put("activeAlternativeLabelSource", testClass.getName());
+
+ if (testControl != null)
+ {
+ testConfigSource.getProperties().put(TestControl.class.getName(), testClass.getName());
+ testConfigSource.getProperties().put(ClassFilter.class.getName(), testControl.classFilter().getName());
+ }
+ else
+ {
+ //reset it to avoid leaks between tests
+ testConfigSource.getProperties().put(TestControl.class.getName(), TestControl.class.getName());
+ testConfigSource.getProperties().put(ClassFilter.class.getName(), ClassFilter.class.getName());
+ }
}
else
{
@@ -290,6 +304,18 @@ public class CdiTestSuiteRunner extends Suite
System.setProperty("activeAlternativeLabel", activeAlternativeLabel); //will be picked up by ds-core
System.setProperty("activeAlternativeLabelSource", testClass.getName()); //can be used for custom logic
+
+ if (testControl != null) //can be used for custom logic
+ {
+ System.setProperty(TestControl.class.getName(), testClass.getName());
+ System.setProperty(ClassFilter.class.getName(), testControl.classFilter().getName());
+ }
+ else
+ {
+ //reset it to avoid leaks between tests
+ System.setProperty(TestControl.class.getName(), TestControl.class.getName());
+ System.setProperty(ClassFilter.class.getName(), ClassFilter.class.getName());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3f219d6f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/literal/TestControlLiteral.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/literal/TestControlLiteral.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/literal/TestControlLiteral.java
index f9d789b..80a15d0 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/literal/TestControlLiteral.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/literal/TestControlLiteral.java
@@ -18,6 +18,7 @@
*/
package org.apache.deltaspike.testcontrol.api.literal;
+import org.apache.deltaspike.core.spi.filter.ClassFilter;
import org.apache.deltaspike.core.api.projectstage.ProjectStage;
import org.apache.deltaspike.core.util.metadata.AnnotationInstanceProvider;
import org.apache.deltaspike.testcontrol.api.TestControl;
@@ -66,4 +67,10 @@ public class TestControlLiteral extends AnnotationLiteral<TestControl> implement
{
return defaultInstance.activeAlternativeLabel();
}
+
+ @Override
+ public Class<? extends ClassFilter> classFilter()
+ {
+ return defaultInstance.classFilter();
+ }
}