You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/05/03 23:52:20 UTC
[31/50] [abbrv] incubator-geode git commit: GEODE-1323: Extend
PerTestClassLoaderRunner to work with Rules
GEODE-1323: Extend PerTestClassLoaderRunner to work with Rules
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a20efb92
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a20efb92
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a20efb92
Branch: refs/heads/feature/GEODE-1255
Commit: a20efb927f29512677d4191094aa3d8445549225
Parents: bcae906
Author: Jens Deppe <jd...@pivotal.io>
Authored: Fri Apr 29 09:26:53 2016 -0700
Committer: Jens Deppe <jd...@pivotal.io>
Committed: Fri Apr 29 10:41:49 2016 -0700
----------------------------------------------------------------------
.../session/junit/PerTestClassLoaderRunner.java | 136 ++++---------------
1 file changed, 28 insertions(+), 108 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a20efb92/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/junit/PerTestClassLoaderRunner.java
----------------------------------------------------------------------
diff --git a/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/junit/PerTestClassLoaderRunner.java b/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/junit/PerTestClassLoaderRunner.java
index 3e5c998..dda5307 100644
--- a/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/junit/PerTestClassLoaderRunner.java
+++ b/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/junit/PerTestClassLoaderRunner.java
@@ -36,9 +36,12 @@ package com.gemstone.gemfire.modules.session.junit;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.internal.runners.statements.Fail;
import org.junit.internal.runners.statements.RunAfters;
import org.junit.internal.runners.statements.RunBefores;
+import org.junit.rules.MethodRule;
+import org.junit.rules.TestRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
@@ -65,6 +68,9 @@ public class PerTestClassLoaderRunner extends NamedRunner {
private TestClass testClassFromClassLoader;
private Object beforeFromClassLoader;
private Object afterFromClassLoader;
+ private Object ruleFromClassLoader;
+ private Object testRuleFromClassLoader;
+ private Object methodRuleFromClassLoader;
/**
* Instantiates a new test per class loader runner.
@@ -117,6 +123,9 @@ public class PerTestClassLoaderRunner extends NamedRunner {
// See withAfters and withBefores for the reason.
beforeFromClassLoader = classLoader.loadClass(Before.class.getName());
afterFromClassLoader = classLoader.loadClass(After.class.getName());
+ ruleFromClassLoader = classLoader.loadClass(Rule.class.getName());
+ testRuleFromClassLoader = classLoader.loadClass(TestRule.class.getName());
+ methodRuleFromClassLoader = classLoader.loadClass(MethodRule.class.getName());
}
@Override
@@ -170,114 +179,25 @@ public class PerTestClassLoaderRunner extends NamedRunner {
return new RunBefores(statement, befores, target);
}
-// /**
-// * Gets the class path. This value is cached in a static variable for performance reasons.
-// *
-// * @return the class path
-// */
-// private static String getClassPath()
-// {
-// if (classPathDetermined)
-// {
-// return classPath;
-// }
-//
-// classPathDetermined = true;
-// // running from maven, we have the classpath in this property.
-// classPath = System.getProperty("surefire.test.class.path");
-// if (classPath != null)
-// {
-// return classPath;
-// }
-//
-// // For a multi module project, running it from the top we have to find it using another way.
-// // We also need to set useSystemClassLoader=true in the POM so that we gets a jar with the classpath in it.
-// String booterClassPath = System.getProperty("java.class.path");
-// Vector<String> pathItems = null;
-// if (booterClassPath != null)
-// {
-// pathItems = scanPath(booterClassPath);
-// }
-// // Do we have just 1 entry as classpath which is a jar?
-// if (pathItems != null && pathItems.size() == 1
-// && isJar((String) pathItems.get(0)))
-// {
-// classPath = loadJarManifestClassPath((String) pathItems.get(0),
-// "META-INF/MANIFEST.MF");
-// }
-// return classPath;
-//
-// }
+ @Override
+ protected List<MethodRule> rules(Object target) {
+ List<MethodRule> result = testClassFromClassLoader.getAnnotatedMethodValues(target,
+ (Class<? extends Annotation>) ruleFromClassLoader, (Class) methodRuleFromClassLoader);
+
+ result.addAll(testClassFromClassLoader.getAnnotatedFieldValues(target,
+ (Class<? extends Annotation>) ruleFromClassLoader, (Class) methodRuleFromClassLoader));
-// /**
-// * Load jar manifest class path.
-// *
-// * @param path the path
-// * @param fileName the file name
-// *
-// * @return the string
-// */
-// private static String loadJarManifestClassPath(String path, String fileName)
-// {
-// File archive = new File(path);
-// if (!archive.exists()) {
-// return null;
-// }
-// ZipFile zipFile = null;
-//
-// try {
-// zipFile = new ZipFile(archive);
-// } catch (IOException io) {
-// return null;
-// }
-//
-// ZipEntry entry = zipFile.getEntry(fileName);
-// if (entry == null) {
-// return null;
-// } try {
-// Manifest mf = new Manifest();
-// mf.read(zipFile.getInputStream(entry));
-//
-// return mf.getMainAttributes().getValue(Attributes.Name.CLASS_PATH)
-// .replaceAll(" ", System.getProperty("path.separator"))
-// .replaceAll("file:/", "");
-// } catch (MalformedURLException e) {
-// LOGGER.throwing("ClassLoaderTestSuite", "loadJarManifestClassPath", e);
-// } catch (IOException e) {
-// LOGGER.throwing("ClassLoaderTestSuite", "loadJarManifestClassPath", e);
-// }
-// return null;
-// }
-//
-// /**
-// * Checks if is jar.
-// *
-// * @param pathEntry the path entry
-// *
-// * @return true, if is jar
-// */
-// private static boolean isJar(String pathEntry)
-// {
-// return pathEntry.endsWith(".jar") || pathEntry.endsWith(".zip");
-// }
-//
-// /**
-// * Scan path for all directories.
-// *
-// * @param classPath the class path
-// *
-// * @return the vector< string>
-// */
-// private static Vector<String> scanPath(String classPath)
-// {
-// String separator = System.getProperty("path.separator");
-// Vector<String> pathItems = new Vector<String>(10);
-// StringTokenizer st = new StringTokenizer(classPath, separator);
-// while (st.hasMoreTokens())
-// {
-// pathItems.addElement(st.nextToken());
-// }
-// return pathItems;
-// }
+ return result;
+ }
+ @Override
+ protected List<TestRule> getTestRules(Object target) {
+ List<TestRule> result = testClassFromClassLoader.getAnnotatedMethodValues(target,
+ (Class<? extends Annotation>) ruleFromClassLoader, (Class) testRuleFromClassLoader);
+
+ result.addAll(testClassFromClassLoader.getAnnotatedFieldValues(target,
+ (Class<? extends Annotation>) ruleFromClassLoader, (Class) testRuleFromClassLoader));
+
+ return result;
+ }
}