aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJana Fabrikova <[email protected]>2013-04-03 18:37:00 +0200
committerJana Fabrikova <[email protected]>2013-04-03 18:37:00 +0200
commita956d92aefd561d63fc8d3e35bfd79e35a7b0c0a (patch)
treef4197ad33bb192738d2d3b6458df72d0b200b3a0
parent30cfedc8f9d0fcaa0378005c9a0ca38930bf946b (diff)
Modification of KnownToFail annotation (adding optional parameter failsIn)
-rw-r--r--tests/junit-runner/JunitLikeXmlOutputListener.java29
-rw-r--r--tests/junit-runner/LessVerboseTextListener.java18
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java8
3 files changed, 46 insertions, 9 deletions
diff --git a/tests/junit-runner/JunitLikeXmlOutputListener.java b/tests/junit-runner/JunitLikeXmlOutputListener.java
index 24cfb30..5e39cf6 100644
--- a/tests/junit-runner/JunitLikeXmlOutputListener.java
+++ b/tests/junit-runner/JunitLikeXmlOutputListener.java
@@ -20,10 +20,12 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import net.sourceforge.jnlp.annotations.Bug;
import net.sourceforge.jnlp.annotations.KnownToFail;
import net.sourceforge.jnlp.annotations.Remote;
+import net.sourceforge.jnlp.browsertesting.Browsers;
import org.junit.internal.JUnitSystem;
@@ -201,17 +203,30 @@ public class JunitLikeXmlOutputListener extends RunListener {
testcaseAtts.put(TEST_IGNORED_ATTRIBUTE, Boolean.TRUE.toString());
}
KnownToFail k2f = LessVerboseTextListener.getAnnotation(testClass, testMethod.getName(), KnownToFail.class);
+ boolean thisTestIsK2F = false;
Remote remote = LessVerboseTextListener.getAnnotation(testClass, testMethod.getName(), Remote.class);
if (k2f != null) {
- testcaseAtts.put(K2F, Boolean.TRUE.toString());
+ //determine if k2f in the current browser
+ //??
+ Browsers[] br = k2f.failsIn();
+ if(0 == br.length){//the KnownToFail annotation without optional parameter
+ thisTestIsK2F = true;
+ }else{
+ for(Browsers b : br){
+ if(description.toString().contains(b.toString())){
+ thisTestIsK2F = true;
+ }
+ }
+ }
}
+ if( thisTestIsK2F ) testcaseAtts.put(K2F, Boolean.TRUE.toString());
if (remote != null) {
testcaseAtts.put(REMOTE, Boolean.TRUE.toString());
}
openElement(TEST_ELEMENT, testcaseAtts);
if (testFailed != null) {
- if (k2f != null) {
+ if (thisTestIsK2F) {
failedK2F++;
}
Map<String, String> errorAtts = new HashMap<String, String>(3);
@@ -226,7 +241,7 @@ public class JunitLikeXmlOutputListener extends RunListener {
writeElement(TEST_ERROR_ELEMENT, testFailed.getTrace(), errorAtts);
} else {
- if (k2f != null) {
+ if (thisTestIsK2F) {
if (ignored) {
ignoredK2F++;
} else {
@@ -265,25 +280,25 @@ public class JunitLikeXmlOutputListener extends RunListener {
classStats.put(description.getClassName(), classStat);
}
classStat.total++;
- if (k2f != null) {
+ if (thisTestIsK2F) {
classStat.totalK2F++;
}
classStat.time += testTime;
if (testFailed == null) {
if (ignored) {
classStat.ignored++;
- if (k2f != null) {
+ if (thisTestIsK2F) {
classStat.ignoredK2F++;
}
} else {
classStat.passed++;
- if (k2f != null) {
+ if (thisTestIsK2F) {
classStat.passedK2F++;
}
}
} else {
classStat.failed++;
- if (k2f != null) {
+ if (thisTestIsK2F) {
classStat.failedK2F++;
}
}
diff --git a/tests/junit-runner/LessVerboseTextListener.java b/tests/junit-runner/LessVerboseTextListener.java
index e660157..34df9f3 100644
--- a/tests/junit-runner/LessVerboseTextListener.java
+++ b/tests/junit-runner/LessVerboseTextListener.java
@@ -10,6 +10,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import net.sourceforge.jnlp.annotations.KnownToFail;
import net.sourceforge.jnlp.annotations.Remote;
+import net.sourceforge.jnlp.browsertesting.Browsers;
import org.junit.internal.JUnitSystem;
import org.junit.runner.Description;
@@ -74,7 +75,22 @@ public class LessVerboseTextListener extends RunListener {
private void printK2F(PrintStream writer, Boolean failed, Description description) {
try {
KnownToFail k2f = getK2F(description);
- if (k2f != null) {
+ boolean thisTestIsK2F = false;
+ if (k2f != null){
+ //determine if k2f in the current browser
+ Browsers[] br = k2f.failsIn();
+ if(0 == br.length){ //@KnownToFail with default optional parameter failsIn={}
+ thisTestIsK2F = true;
+ }else{
+ for(Browsers b : br){
+ if(description.toString().contains(b.toString())){
+ thisTestIsK2F = true;
+ }
+ }
+ }
+ }
+
+ if( thisTestIsK2F ){
totalK2F++;
if (failed != null) {
if (failed) {
diff --git a/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java b/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java
index 15e7e87..0d46de0 100644
--- a/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java
@@ -41,6 +41,7 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import net.sourceforge.jnlp.browsertesting.Browsers;
/**
* <p>
@@ -52,10 +53,15 @@ import java.lang.annotation.Target;
* This annotation is meant for adding tests for bugs before the fix is
* implemented.
* </p>
+ * <p>
+ * The meaning of optional parameter failsIn is either a list of
+ * browsers where the test fails, or a default value - an empty array {},
+ * default value means that the test fails always.
+ * </p>
*/
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface KnownToFail {
-
+ public Browsers[] failsIn() default {};
}