1.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java Thu Jun 20 10:22:50 2013 +0200
1.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java Fri Jun 21 15:21:09 2013 +0200
1.3 @@ -17,6 +17,7 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.vmtest;
1.6
1.7 +import java.lang.annotation.Annotation;
1.8 import java.util.ArrayList;
1.9 import java.util.Arrays;
1.10 import java.util.List;
1.11 @@ -39,6 +40,7 @@
1.12 public final class VMTest {
1.13 private final List<Class> classes = new ArrayList<>();
1.14 private final List<String> launcher = new ArrayList<>();
1.15 + private Class<? extends Annotation> annotation = BrwsrTest.class;
1.16
1.17 private VMTest() {
1.18 }
1.19 @@ -104,6 +106,24 @@
1.20 this.launcher.addAll(Arrays.asList(launcher));
1.21 return this;
1.22 }
1.23 +
1.24 + /** Specifies which annotation annotates the test methods
1.25 + * to be executed. By
1.26 + * default it is the {@link BrwsrTest} annotation. Methods in
1.27 + * {@link #withClasses(java.lang.Class[]) test classes} annotated by
1.28 + * this annotation will be executed.
1.29 + *
1.30 + * @param aClass an annotation class
1.31 + * @return this
1.32 + * @since 0.8
1.33 + */
1.34 + public final VMTest withTestAnnotation(Class<? extends Annotation> aClass) {
1.35 + if (!aClass.isAnnotation()) {
1.36 + throw new IllegalStateException();
1.37 + }
1.38 + this.annotation = aClass;
1.39 + return this;
1.40 + }
1.41
1.42 /** Assembles the provided information into the final array of tests.
1.43 * @return array of TestNG tests
1.44 @@ -112,7 +132,8 @@
1.45 public final Object[] build() {
1.46 return CompareCase.create(
1.47 launcher.toArray(new String[0]),
1.48 - classes.toArray(new Class[0])
1.49 + classes.toArray(new Class[0]),
1.50 + annotation
1.51 );
1.52 }
1.53 }
2.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java Thu Jun 20 10:22:50 2013 +0200
2.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java Fri Jun 21 15:21:09 2013 +0200
2.3 @@ -17,6 +17,7 @@
2.4 */
2.5 package org.apidesign.bck2brwsr.vmtest.impl;
2.6
2.7 +import java.lang.annotation.Annotation;
2.8 import org.apidesign.bck2brwsr.vmtest.*;
2.9 import java.lang.reflect.Method;
2.10 import java.util.ArrayList;
2.11 @@ -53,7 +54,7 @@
2.12 * @param clazz the class to inspect
2.13 * @return the set of created tests
2.14 */
2.15 - public static Object[] create(String[] brwsr, Class[] classes) {
2.16 + public static Object[] create(String[] brwsr, Class[] classes, Class<? extends Annotation> brwsrTest) {
2.17 List<Object> ret = new ArrayList<>();
2.18
2.19 final LaunchSetup l = LaunchSetup.INSTANCE;
2.20 @@ -70,7 +71,7 @@
2.21 Method[] arr = clazz.getMethods();
2.22 for (Method m : arr) {
2.23 registerCompareCases(m, l, ret, brwsr);
2.24 - registerBrwsrCases(m, l, ret, brwsr);
2.25 + registerBrwsrCases(brwsrTest, m, l, ret, brwsr);
2.26 }
2.27 }
2.28 return ret.toArray();
2.29 @@ -149,8 +150,8 @@
2.30 ret.add(new CompareCase(m, real, cse));
2.31 }
2.32 }
2.33 - private static void registerBrwsrCases(Method m, final LaunchSetup l, List<Object> ret, String[] brwsr) {
2.34 - BrwsrTest c = m.getAnnotation(BrwsrTest.class);
2.35 + private static void registerBrwsrCases(Class<? extends Annotation> brwsrTest, Method m, final LaunchSetup l, List<Object> ret, String[] brwsr) {
2.36 + Object c = m.getAnnotation(brwsrTest);
2.37 if (c == null) {
2.38 return;
2.39 }