Mark test as Failing or NotSupported
These are reflected in the tck report numbers.
Failing and NotSupported tests are not run by default.
This will allow me to move these test into the normal user/test dir
and have them run during by the continous build machines.

[JSR 303 TCK Result] 54 of 258 (20.93%) Pass with 28 Failures and 13 Errors.

Review at http://gwt-code-reviews.appspot.com/1245801

Review by: rchandia@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9489 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/validationtck/build.xml b/samples/validationtck/build.xml
index e37bcaf..693e682 100755
--- a/samples/validationtck/build.xml
+++ b/samples/validationtck/build.xml
@@ -3,7 +3,7 @@
   <property name="sample.module" value="ValidationTck" />
   <property name="sample.path" value="src" />
   <property name="test.args" value="-ea" />
-  <property name="test.jvmargs" value="-ea" />
+  <property name="test.jvmargs" value="-ea -Dcom.google.gwt.sample.validationtck.util.Failing.include=true  -Dcom.google.gwt.sample.validationtck.util.NonTckTest.exclude=true" />
   <import file="../common.ant.xml" />
 
   <!-- these are after the common.ant.xml so they have gwt.tools etc. -->
@@ -60,9 +60,8 @@
   <property name="emma.merged.out" value="${junit.out}/emma-coverage" />
   <property name="gwt.junit.testcase.web.includes" value="${gwt.junit.testcase.includes}" />
   <property name="gwt.junit.testcase.web.excludes" value="" />
-
   <property name="gwt.junit.testcase.dev.includes" value="${gwt.junit.testcase.includes}" />
-  <property name="gwt.junit.testcase.dev.excludes" value="" />
+  <property name="gwt.junit.testcase.dev.excludes" value="com/google/gwt/sample/validationtck/util/*.class" />
 
   <!--
         Compiles the test code for this project
@@ -133,15 +132,49 @@
         if="junit.failure" status="2" />
   </target>
 
+  <macrodef name="countMarkedTests">
+    <attribute name="annotation" default="NOT SET" />
+    <attribute name="outputproperty" default="jsr303.marked.@{annotation}" />
+    <sequential>
+      <!--TODO(nchalko) find a way to count annotations in windows -->
+      <exec dir="${basedir}"
+          executable="${basedir}/countMarkedTests.sh"
+          outputproperty="@{outputproperty}"
+          os="Mac OS X,Linux"
+          >
+        <arg line="@{annotation}" />
+      </exec>
+    </sequential>
+  </macrodef>
+
   <target name="tck.report">
     <mkdir dir="${junit.out}/tck-report" />
     <mkdir dir="${junit.out}/tck-report/text" />
+    
+    <!-- Greping for annotation currently only works on OS X and Linux -->
+    <!-- The reports will still run but the total count will not be reduced -->
+    <countMarkedTests annotation="Failing" />
+    <countMarkedTests annotation="NonTckTest" />
+    <countMarkedTests annotation="NotSupported" />
+    
+    <echo message="Marked Failing = ${jsr303.marked.Failing}" />
+    <echo message="Marked NonTckTest = ${jsr303.marked.NonTckTest}" />
+    <echo message="Marked NotSupported = ${jsr303.marked.NotSupported}" />
+    
     <junitreport todir="${junit.out}/tck-report">
       <fileset dir="${junit.out}">
         <include name="*/reports/TEST-*.xml" />
       </fileset>
-      <report format="noframes" todir="${junit.out}/tck-report" styledir="style/html" />
-      <report format="noframes" todir="${junit.out}/tck-report/text" styledir="style/text" />
+      <report format="noframes" todir="${junit.out}/tck-report" styledir="style/html">
+        <param name="markedFailing" expression="${jsr303.marked.Failing}" />
+        <param name="markedNonTckTest" expression="${jsr303.marked.NonTckTest}" />
+        <param name="markedNotSupported" expression="${jsr303.marked.NotSupported}" />
+      </report>
+      <report format="noframes" todir="${junit.out}/tck-report/text" styledir="style/text">
+        <param name="markedFailing" expression="${jsr303.marked.Failing}" />
+        <param name="markedNonTckTest" expression="${jsr303.marked.NonTckTest}" />
+        <param name="markedNotSupported" expression="${jsr303.marked.NotSupported}" />
+      </report>
     </junitreport>
 
     <concat taskname="JSR 303 TCK Result">
diff --git a/samples/validationtck/countMarkedTests.sh b/samples/validationtck/countMarkedTests.sh
new file mode 100755
index 0000000..061b6d0
--- /dev/null
+++ b/samples/validationtck/countMarkedTests.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+name=$1
+count=$(grep -r  @${name} test |wc -l)
+echo "$((${count} -1))"
+
+
diff --git a/samples/validationtck/style/html/junit-noframes.xsl b/samples/validationtck/style/html/junit-noframes.xsl
index 5ce74c0..c9759de 100644
--- a/samples/validationtck/style/html/junit-noframes.xsl
+++ b/samples/validationtck/style/html/junit-noframes.xsl
@@ -26,10 +26,15 @@
 
 <!--
 
- Modified from the default spreadshet.
+ Modified from the default stylesheet.
  Changed so counts are relative to the TOTAL tests in the TCK
 
 -->
+
+<xsl:param name="markedFailing" />
+<xsl:param name="markedNonTckTest" />
+<xsl:param name="markedNotSupported" />
+
 <xsl:template match="testsuites">
     <html>
         <head>
@@ -248,12 +253,13 @@
 
     <xsl:template name="summary">
         <h2>Summary</h2>
-        <xsl:variable name="testCount" select="258"/>
-        <!-- 
-          testCount from
-          jar -xf jsr303-tck-1.0.3.GA-sources.jar 
-          grep -r \@Test org/hibernate/jsr303/tck/tests/ | grep -v "enabled = false" | wc -l
+        <xsl:variable name="rawTestCount" select="258"/>
+        <!--
+          rawTestCount from
+          jar -xf jsr303-tck-1.0.3.GA-sources.jar
+          grep -r \@Test org/hibernate/jsr303/tck/tests/| grep -v "enabled = false"  | wc -l
         -->
+        <xsl:variable name="testCount" select="($rawTestCount - $markedNotSupported)"/>
         <xsl:variable name="testExecutedCount" select="sum(testsuite/@tests)"/>
         <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
         <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
@@ -265,11 +271,17 @@
           <xsl:value-of select="$testCount"/> <xsl:text> (</xsl:text>
           <xsl:call-template name="display-percent">
             <xsl:with-param name="value" select="$successRate"/>
-          </xsl:call-template> 
+          </xsl:call-template>
          <xsl:text>) Pass with </xsl:text>
          <xsl:value-of select="$failureCount"/> <xsl:text> Failures and </xsl:text>
          <xsl:value-of select="$errorCount" /> <xsl:text> Errors.</xsl:text>
     </h3>
+
+    <xsl:if test="($failureCount + $errorCount) != ($markedFailing)">
+      <p style="color:red"><strong>WARINING</strong> expected Failures + Errors to match the
+      <xsl:value-of select="$markedFailing" />
+      test marked @Failing</p>
+    </xsl:if>
         <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
         <tr valign="top">
             <th>Tests</th>
diff --git a/samples/validationtck/style/text/junit-noframes.xsl b/samples/validationtck/style/text/junit-noframes.xsl
index 701148d..f0e3e26 100644
--- a/samples/validationtck/style/text/junit-noframes.xsl
+++ b/samples/validationtck/style/text/junit-noframes.xsl
@@ -25,28 +25,40 @@
 
 <!--
 
- Modified from the default spreadshet.
+ Modified from the default stylesheet.
  Changed so counts are relative to the TOTAL tests in the TCK
 
 -->
+
+<xsl:param name="markedFailing" />
+<xsl:param name="markedNonTckTest" />
+<xsl:param name="markedNotSupported" />
 <xsl:template match="testsuites">
-	<xsl:variable name="testCount" select="258"/>
-    <!-- 
-      testCount from
-      jar -xf jsr303-tck-1.0.3.GA-sources.jar 
+
+	<xsl:variable name="rawTestCount" select="258"/>
+    <!--
+      rawTestCount from
+      jar -xf jsr303-tck-1.0.3.GA-sources.jar
       grep -r \@Test org/hibernate/jsr303/tck/tests/| grep -v "enabled = false"  | wc -l
     -->
+    <xsl:variable name="testCount" select="($rawTestCount - $markedNotSupported)"/>
     <xsl:variable name="testExecutedCount" select="sum(testsuite/@tests)"/>
     <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
     <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
     <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
     <xsl:variable name="passedCount" select="($testExecutedCount - $failureCount - $errorCount)"/>
     <xsl:variable name="successRate" select="($passedCount) div $testCount"/>
+    <xsl:if test="($failureCount + $errorCount) != ($markedFailing)">
+      <xsl:text>WARINING expected Failures + Errors to match the </xsl:text>
+      <xsl:value-of select="$markedFailing" />
+      <xsl:text> test marked @Failing
+</xsl:text>
+    </xsl:if>
     <xsl:value-of select="$passedCount" /> <xsl:text> of </xsl:text>
     <xsl:value-of select="$testCount"/> <xsl:text> (</xsl:text>
     <xsl:call-template name="display-percent">
          <xsl:with-param name="value" select="$successRate"/>
-    </xsl:call-template> 
+    </xsl:call-template>
     <xsl:text>) Pass with </xsl:text>
     <xsl:value-of select="$failureCount"/> <xsl:text> Failures and </xsl:text>
     <xsl:value-of select="$errorCount" /> <xsl:text> Errors.</xsl:text>
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ConstraintApplicationGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ConstraintApplicationGwtSuite.java
index 54a4693..9b9c80e 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ConstraintApplicationGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ConstraintApplicationGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.constraints.application;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ConstraintApplicationGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, constraints application package");
     suite.addTestSuite(ValidationRequirementTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ValidationRequirementTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ValidationRequirementTest.java
index ff14511..cdb04e2 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ValidationRequirementTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/application/ValidationRequirementTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.validationtck.constraints.application;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Wraps
@@ -38,10 +39,12 @@
     return "com.google.gwt.sample.validationtck.constraints.application.TckTest";
   }
 
+  @Failing(issue = 5798)
   public void testClassLevelConstraints() {
     delegate.testClassLevelConstraints();
   }
 
+  @Failing(issue = 5798)
   public void testConstraintAppliedOnFieldAndProperty() {
     delegate.testConstraintAppliedOnFieldAndProperty();
   }
@@ -50,6 +53,7 @@
     delegate.testFieldAccess();
   }
 
+  @Failing(issue = 5798)
   public void testFieldAndPropertyVisibilityIsNotConstrained() {
     delegate.testFieldAndPropertyVisibilityIsNotConstrained();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionGwtSuite.java
index ed6a4ab..2ee2d19 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.constraints.constraintcomposition;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ConstraintCompositionGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, constraints composition package");
     suite.addTestSuite(ConstraintCompositionTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionTest.java
index 98e7ada..7da5a5d 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/constraintcomposition/ConstraintCompositionTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.validationtck.constraints.constraintcomposition;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Wraps
@@ -31,22 +32,27 @@
     return "com.google.gwt.sample.validationtck.constraints.constraintcomposition.TckTest";
   }
 
+  @Failing(issue = 5799)
   public void testAllComposingConstraintsMustBeApplicableToAnnotatedType() {
     delegate.testAllComposingConstraintsMustBeApplicableToAnnotatedType();
   }
 
+  @Failing(issue = 5799)
   public void testAttributesDefinedOnComposingConstraints() {
     delegate.testAttributesDefinedOnComposingConstraints();
   }
 
+  @Failing(issue = 5799)
   public void testComposedConstraints() {
     delegate.testComposedConstraints();
   }
 
+  @Failing(issue = 5799)
   public void testComposedConstraintsAreRecursive() {
     delegate.testComposedConstraintsAreRecursive();
   }
 
+  @Failing(issue = 5799)
   public void testEachFailingConstraintCreatesConstraintViolation() {
     delegate.testEachFailingConstraintCreatesConstraintViolation();
   }
@@ -55,10 +61,12 @@
     delegate.testGroupsDefinedOnMainAnnotationAreInherited();
   }
 
+  @Failing(issue = 5799)
   public void testOnlySingleConstraintViolation() {
     delegate.testOnlySingleConstraintViolation();
   }
 
+  @Failing(issue = 5799)
   public void testOverriddenAttributesMustMatchInType() {
     delegate.testOverriddenAttributesMustMatchInType();
   }
@@ -67,6 +75,7 @@
     delegate.testPayloadPropagationInComposedConstraints();
   }
 
+  @Failing(issue = 5799)
   public void testValidationOfMainAnnotationIsAlsoApplied() {
     delegate.testValidationOfMainAnnotationIsAlsoApplied();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintGwtSuite.java
index aca3b7e..73cff0b 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.constraints.customconstraint;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class CustomConstraintGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, constraints customconstraint package");
     suite.addTestSuite(CustomConstraintValidatorGwtTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintValidatorGwtTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
index a20570a..8c221b8 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.validationtck.constraints.customconstraint;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 import org.hibernate.jsr303.tck.tests.constraints.customconstraint.CustomConstraintValidatorTest;
 
@@ -30,10 +31,12 @@
     return "com.google.gwt.sample.validationtck.constraints.customconstraint.TckTest";
   }
 
+  @Failing(issue = 5800)
   public void testDefaultPropertyPath() {
     delegate.testDefaultPropertyPath();
   }
 
+  @Failing(issue = 5800)
   public void testIsValidIsCalledForEachValidation() {
     delegate.testIsValidIsCalledForEachValidation();
   }
@@ -46,6 +49,7 @@
     delegate.testOneConstraintViolationPerFailingConstraint();
   }
 
+  @Failing(issue = 5800)
   public void testRightValidatorIsSelectedAndInitializedCalled() {
     delegate.testRightValidatorIsSelectedAndInitializedCalled();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/ConstraintsGroupsGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/ConstraintsGroupsGwtSuite.java
index 7f55804..a617542 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/ConstraintsGroupsGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/ConstraintsGroupsGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.constraints.groups;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ConstraintsGroupsGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, constraints groups package");
     suite.addTestSuite(GroupTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/GroupTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/GroupTest.java
index c40ceeb..a242128 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/GroupTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/groups/GroupTest.java
@@ -16,13 +16,14 @@
 package com.google.gwt.sample.validationtck.constraints.groups;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Test wrapper for
  * {@link org.hibernate.jsr303.tck.tests.constraints.groups.GroupTest}.
  */
 public class GroupTest extends GWTTestCase {
-  private final org.hibernate.jsr303.tck.tests.constraints.groups.GroupTest delegate = 
+  private final org.hibernate.jsr303.tck.tests.constraints.groups.GroupTest delegate =
       new org.hibernate.jsr303.tck.tests.constraints.groups.GroupTest();
 
   @Override
@@ -42,22 +43,27 @@
     delegate.testCyclicGroupSequence();
   }
 
+  @Failing(issue = 5801)
   public void testGroups() {
     delegate.testGroups();
   }
 
+  @Failing(issue = 5801)
   public void testGroupSequence() {
     delegate.testGroupSequence();
   }
 
+  @Failing(issue = 5801)
   public void testGroupSequenceFollowedByGroup() {
     delegate.testGroupSequenceFollowedByGroup();
   }
 
+  @Failing(issue = 5801)
   public void testImplicitGrouping() {
     delegate.testImplicitGrouping();
   }
 
+  @Failing(issue = 5801)
   public void testValidateAgainstDifferentGroups() {
     delegate.testValidateAgainstDifferentGroups();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/inheritance/ConstraintsInheritanceGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/inheritance/ConstraintsInheritanceGwtSuite.java
index 42a38e4..f584741 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/inheritance/ConstraintsInheritanceGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/constraints/inheritance/ConstraintsInheritanceGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.constraints.inheritance;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ConstraintsInheritanceGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, constraints inheritance package");
     suite.addTestSuite(ConstraintInheritanceTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationGwtSuite.java
index fc97db1..84620b0 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.messageinterpolation;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class MessageInterpolationGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, messageinterpolation package");
     suite.addTestSuite(MessageInterpolationTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationTest.java
index 284cf03..7122962 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/MessageInterpolationTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.validationtck.messageinterpolation;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Wraps
@@ -47,6 +48,7 @@
     delegate.testLiteralCurlyBraces();
   }
 
+  @Failing(issue = 5763)
   public void testMessageInterpolationWithLocale() {
     delegate.testMessageInterpolationWithLocale();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/ValidationMessages.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/ValidationMessages.java
index 9506013..e8a76c2 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/ValidationMessages.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/messageinterpolation/ValidationMessages.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 package com.google.gwt.sample.validationtck.messageinterpolation;
 
 /**
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/BeanDescriptorTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/BeanDescriptorTest.java
index e08b65f..520541b 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/BeanDescriptorTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/BeanDescriptorTest.java
@@ -16,13 +16,14 @@
 package com.google.gwt.sample.validationtck.metadata;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Test wrapper for
  * {@link org.hibernate.jsr303.tck.tests.constraints.groups.GroupTest}.
  */
 public class BeanDescriptorTest extends GWTTestCase {
-  private final org.hibernate.jsr303.tck.tests.metadata.BeanDescriptorTest delegate = 
+  private final org.hibernate.jsr303.tck.tests.metadata.BeanDescriptorTest delegate =
       new org.hibernate.jsr303.tck.tests.metadata.BeanDescriptorTest();
 
   @Override
@@ -54,6 +55,7 @@
     delegate.testGetConstraintsForNullProperty();
   }
 
+  @Failing(issue = 5802)
   public void testIsBeanConstrainedDueToConstraintOnEntity() {
     delegate.testIsBeanConstrainedDueToConstraintOnEntity();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/MetadataGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/MetadataGwtSuite.java
index 22298c2..8980163 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/MetadataGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/metadata/MetadataGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.metadata;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class MetadataGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, metadata package");
     suite.addTestSuite(BeanDescriptorTest.class);
     return suite;
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/Failing.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/Failing.java
new file mode 100644
index 0000000..7c7e885
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/Failing.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a testMethod as Failing to prevent it from running in the standard TCK
+ * tests. Used by the {@link TckTestSuiteWrapper}.
+ */
+@Target({METHOD})
+@Retention(RUNTIME)
+@Documented
+public @interface Failing {
+  /**
+   * The JVM property name checked by {@link TckTestSuiteWrapper}. If the JVM
+   * property {@value} is set to true the {@link TckTestSuiteWrapper} will run
+   * tests annotated {@link Failing}.
+   */
+  String INCLUDE = "com.google.gwt.sample.validationtck.util.Failing.include";
+
+  /**
+   * The GWT issue for fixing this failing test.
+   * <p>
+   * The issue is at
+   * http://code.google.com/p/google-web-toolkit/issues/detail?id={@code <issue>}
+   */
+  int issue();
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NonTckTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NonTckTest.java
new file mode 100644
index 0000000..d15ae9f
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NonTckTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a testMethod as not part of the TCK. The test is run by default but it
+ * is excluded from TCK reports. Used by the {@link TckTestSuiteWrapper}.
+ */
+@Target({METHOD})
+@Retention(RUNTIME)
+@Documented
+public @interface NonTckTest {
+  /**
+   * The JVM property name checked by {@link TckTestSuiteWrapper}. If the JVM
+   * property {@value} is set to true the {@link TckTestSuiteWrapper} will not
+   * run the tests annotated {@link Failing}.
+   */
+  String EXCLUDE = "com.google.gwt.sample.validationtck.util.NotTckTest.exclude";
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NotSupported.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NotSupported.java
new file mode 100644
index 0000000..b57d0bf
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/NotSupported.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a testMethod as not supported to prevent it from running in the
+ * standard tests. Use this when the behavior being tested is not supported by
+ * GWT Validation. Used by the {@link TckTestSuiteWrapper}.
+ */
+@Target({METHOD})
+@Retention(RUNTIME)
+@Documented
+public @interface NotSupported {
+  /**
+   * Constants for why a test is not supported.
+   */
+  public enum Reason {
+    XML, IO, CALENDAR
+  }
+
+  /**
+   * The JVM property name checked by {@link TckTestSuiteWrapper}. If the JVM
+   * property {@value} is set to true the {@link TckTestSuiteWrapper} will run
+   * tests annotated {@link NotSupported}.
+   */
+  String INCLUDE = "com.google.gwt.sample.validationtck.util.NotSupported.include";
+
+  Reason reason();
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapper.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapper.java
new file mode 100644
index 0000000..1756d12
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapper.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import static com.google.gwt.thirdparty.guava.common.base.Predicates.and;
+import static com.google.gwt.thirdparty.guava.common.base.Predicates.not;
+import static com.google.gwt.thirdparty.guava.common.base.Predicates.or;
+import static com.google.gwt.thirdparty.guava.common.collect.ImmutableList.copyOf;
+import static com.google.gwt.thirdparty.guava.common.collect.Iterables.filter;
+
+import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.thirdparty.guava.common.base.Predicate;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Vector;
+
+/**
+ * Wrapper for {@link GWTTestSuite} to prevent selected methods from running.
+ *
+ * Copied code from {@link junit.framework.TestSuite} and modified to exclude
+ * test methods with select annotations.
+ */
+public class TckTestSuiteWrapper extends GWTTestSuite {
+
+  private static final Predicate<Method> HAS_FAILING = createHasAnnotationPredicate(Failing.class);
+  private static final Predicate<Method> HAS_NON_TCK_TEST = createHasAnnotationPredicate(NonTckTest.class);
+  private static final Predicate<Method> HAS_NOT_SUPPORTED = createHasAnnotationPredicate(NotSupported.class);
+
+  private static final Predicate<Method> INCLUDE_FAILING = createHasProperty(Failing.INCLUDE);
+  private static final Predicate<Method> INCLUDE_NOT_SUPPORTED = createHasProperty(NotSupported.INCLUDE);
+  private static final Predicate<Method> EXCLUDE_NON_TCK_TEST = createHasProperty(NonTckTest.EXCLUDE);
+
+  @SuppressWarnings("unchecked")
+  private static final Predicate<Method> METHOD_FILTER = and(
+      or(INCLUDE_NOT_SUPPORTED, not(HAS_NOT_SUPPORTED)),
+      not(and(EXCLUDE_NON_TCK_TEST, HAS_NON_TCK_TEST)),
+      or(INCLUDE_FAILING, not(HAS_FAILING))
+      );
+
+  public static Predicate<Method> createHasAnnotationPredicate(
+      final Class<? extends Annotation> annotationClass) {
+    return new Predicate<Method>() {
+
+      public boolean apply(Method method) {
+        return method.getAnnotation(annotationClass) != null;
+      }
+    };
+  }
+
+  private static <T> Predicate<T> createHasProperty(final String property) {
+    return new Predicate<T>() {
+      public boolean apply(T arg0) {
+        String include = System.getProperty(property);
+        return Boolean.parseBoolean(include);
+      }
+    };
+  }
+
+  /**
+   * Returns a test which will fail and log a warning message.
+   */
+  private static Test warning(final String message) {
+    return new TestCase("warning") {
+      protected void runTest() {
+        fail(message);
+      }
+    };
+  }
+
+  public TckTestSuiteWrapper(String name) {
+    super(name);
+  }
+
+  /**
+   * Adds the tests from the given class to the suite.
+   */
+  @Override
+  public void addTestSuite(Class theClass) {
+
+    String fName = theClass.getName();
+    try {
+      getTestConstructor(theClass); // Avoid generating multiple error messages
+    } catch (NoSuchMethodException e) {
+      addTest(warning("Class " + theClass.getName()
+          + " has no public constructor TestCase(String name) or TestCase()"));
+      return;
+    }
+
+    if (!Modifier.isPublic(theClass.getModifiers())) {
+      addTest(warning("Class " + theClass.getName() + " is not public"));
+      return;
+    }
+
+    Class superClass = theClass;
+    Vector names = new Vector();
+    while (Test.class.isAssignableFrom(superClass)) {
+      for (Method method : filter(copyOf(superClass.getDeclaredMethods()),
+          METHOD_FILTER)) {
+        addTestMethod(method, names, theClass);
+      }
+      superClass = superClass.getSuperclass();
+    }
+    if (testCount() == 0)
+      addTest(warning("No tests found in " + theClass.getName()));
+  }
+
+  private void addTestMethod(Method m, Vector names, Class theClass) {
+    String name = m.getName();
+    if (names.contains(name))
+      return;
+    if (!isPublicTestMethod(m)) {
+      if (isTestMethod(m))
+        addTest(warning("Test method isn't public: " + m.getName()));
+      return;
+    }
+    names.addElement(name);
+    addTest(createTest(theClass, name));
+  }
+
+  private boolean ingoreMethod(Method m) {
+    return HAS_FAILING.apply(m);
+  }
+
+  private boolean isPublicTestMethod(Method m) {
+    return isTestMethod(m) && Modifier.isPublic(m.getModifiers());
+  }
+
+  private boolean isTestMethod(Method m) {
+    String name = m.getName();
+    Class[] parameters = m.getParameterTypes();
+    Class returnType = m.getReturnType();
+    return parameters.length == 0 && name.startsWith("test")
+        && returnType.equals(Void.TYPE);
+  }
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapperTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapperTest.java
new file mode 100644
index 0000000..887630f
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/TckTestSuiteWrapperTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.NotSupported.Reason;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link TckTestSuiteWrapper}.
+ */
+public class TckTestSuiteWrapperTest extends TestCase {
+
+  /**
+   * Sample test with a method annotated as {@link Failing}.
+   */
+  public static class Fail extends Base {
+
+    public Fail() {
+    }
+
+    @Failing(issue = 123)
+    public void testFailing() {
+    }
+
+    public void testOne() {
+    }
+
+    public void testTwo() {
+    }
+  }
+
+  /**
+   * Sample test with a method annotated as {@link NonTckTest}.
+   */
+  public static class Non extends Base {
+
+    public Non() {
+    }
+
+    @NonTckTest
+    public void testNon() {
+    }
+
+    public void testOne() {
+    }
+
+    public void testTwo() {
+    }
+  }
+
+  /**
+   * Sample test without annotated test messages.
+   */
+  public static class Normal extends Base {
+
+    public Normal() {
+    }
+
+    public void testOne() {
+    }
+
+    public void testTwo() {
+    }
+  }
+
+  /**
+   * Sample test with a method annotated as {@link NotSupported}.
+   */
+  public static class Not extends Base {
+
+    public Not() {
+    }
+
+    @NotSupported(reason = Reason.IO)
+    public void testFailing() {
+    }
+
+    public void testOne() {
+    }
+
+    public void testTwo() {
+    }
+  }
+
+  private abstract static class Base extends GWTTestCase {
+
+    public Base() {
+    }
+
+    @Override
+    public final String getModuleName() {
+      return "com.google.gwt.sample.validationtck.metadata.TckTest";
+    }
+  }
+
+  private TckTestSuiteWrapper suite;
+
+  public void checkAddTest(Class<? extends GWTTestCase> clazz, int expected) {
+    suite.addTestSuite(clazz);
+    assertEquals(expected, suite.testAt(0).countTestCases());
+  }
+
+  public void testAddTestMarkedFailing() throws Exception {
+    checkAddTest(Fail.class, 2);
+  }
+
+  public void testAddTestMarkedNotSupported() throws Exception {
+    checkAddTest(Not.class, 2);
+  }
+
+  public void testAddTestNon() throws Exception {
+    checkAddTest(Non.class, 3);
+  }
+
+  public void testAddTestNormal() throws Exception {
+    checkAddTest(Normal.class, 2);
+  }
+
+  @Override
+  protected void setUp() throws Exception {
+    super.setUp();
+    suite = new TckTestSuiteWrapper("Test");
+  }
+
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/util/UtilJreSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/UtilJreSuite.java
new file mode 100644
index 0000000..c22f04f
--- /dev/null
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/util/UtilJreSuite.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.sample.validationtck.util;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test Suite for non GWT tests.
+ */
+public class UtilJreSuite {
+
+  public static Test suite() {
+    TestSuite suite = new TestSuite("Test suite for tck utility classes");
+    suite.addTestSuite(TckTestSuiteWrapperTest.class);
+    return suite;
+  }
+
+}
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/PropertyPathTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/PropertyPathTest.java
index 5ac7db1..8af4bed 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/PropertyPathTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/PropertyPathTest.java
@@ -15,6 +15,9 @@
  */
 package com.google.gwt.sample.validationtck.validation;
 
+import com.google.gwt.sample.validationtck.util.Failing;
+import com.google.gwt.sample.validationtck.util.NonTckTest;
+
 /**
  * Test wrapper for
  * {@link org.hibernate.jsr303.tck.tests.validation.PropertyPathTest}.
@@ -24,26 +27,36 @@
   org.hibernate.jsr303.tck.tests.validation.PropertyPathTest delegate =
     new org.hibernate.jsr303.tck.tests.validation.PropertyPathTest();
 
+  @NonTckTest
+  public void testPlaceHolder() {
+  }
+
+  @Failing(issue = 5803)
   public void testPropertyPathSet() {
     delegate.testPropertyPathSet();
   }
 
+  @Failing(issue = 5803)
   public void testPropertyPathTraversedObject() {
     delegate.testPropertyPathTraversedObject();
   }
 
+  @Failing(issue = 5803)
   public void testPropertyPathWithArray() {
     delegate.testPropertyPathWithArray();
   }
 
+  @Failing(issue = 5803)
   public void testPropertyPathWithConstraintViolationForRootObject() {
     delegate.testPropertyPathWithConstraintViolationForRootObject();
   }
 
+  @Failing(issue = 5803)
   public void testPropertyPathWithList() {
     delegate.testPropertyPathWithList();
   }
 
+  @Failing(issue = 5803)
   public void testPropertyPathWithMap() {
     delegate.testPropertyPathWithMap();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidatePropertyTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidatePropertyTest.java
index 0d7bd2f..e2006ae 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidatePropertyTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidatePropertyTest.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.sample.validationtck.validation;
 
+import com.google.gwt.sample.validationtck.util.Failing;
+
 import javax.validation.ValidationException;
 
 /**
@@ -34,6 +36,7 @@
     delegate.testPassingNullAsGroup();
   }
 
+  @Failing(issue = 5804)
   public void testUnexpectedExceptionsInValidatePropertyGetWrappedInValidationExceptions() {
     // Wrap the test to catch the @Test expected exception.
     try {
@@ -43,6 +46,7 @@
     }
   }
 
+  @Failing(issue = 5804)
   public void testValidateProperty() {
     delegate.testValidateProperty();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidateValueTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidateValueTest.java
index 12f6344..0edc976 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidateValueTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidateValueTest.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.sample.validationtck.validation;
 
+import com.google.gwt.sample.validationtck.util.Failing;
+
 
 /**
  * Test wrapper for
@@ -22,17 +24,20 @@
  */
 public class ValidateValueTest extends AbstractValidationTest {
 
-  private final org.hibernate.jsr303.tck.tests.validation.ValidateValueTest delegate = 
+  private final org.hibernate.jsr303.tck.tests.validation.ValidateValueTest delegate =
       new org.hibernate.jsr303.tck.tests.validation.ValidateValueTest();
 
+  @Failing(issue = 5804)
   public void testExistingPropertyWoConstraintsNorCascaded() {
     delegate.testExistingPropertyWoConstraintsNorCascaded();
   }
 
+  @Failing(issue = 5804)
   public void testValidateValue() {
     delegate.testValidateValue();
   }
 
+  @Failing(issue = 5804)
   public void testValidateValueFailure() {
     delegate.testValidateValueFailure();
   }
@@ -61,6 +66,7 @@
     delegate.testValidateValueWithNullPropertyName();
   }
 
+  @Failing(issue = 5804)
   public void testValidIsNotHonoredValidateValue() {
     delegate.testValidIsNotHonoredValidateValue();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidationGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidationGwtSuite.java
index 96968ad..f3d80d8 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidationGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validation/ValidationGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.validation;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ValidationGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, validation package");
     suite.addTestSuite(PropertyPathTest.class);
     suite.addTestSuite(ValidatePropertyTest.class);
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/CustomConstraintValidatorTest.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/CustomConstraintValidatorTest.java
index 6bbc4b6..2994ad2 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/CustomConstraintValidatorTest.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/CustomConstraintValidatorTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.validationtck.validatorfactory;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Wraps
@@ -30,6 +31,7 @@
     return "com.google.gwt.sample.validationtck.validatorfactory.TckTest";
   }
 
+  @Failing(issue = 5805)
   public void testDefaultConstructorInValidatorCalled() {
     delegate.testDefaultConstructorInValidatorCalled();
   }
diff --git a/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/ValidatorFactoryGwtSuite.java b/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/ValidatorFactoryGwtSuite.java
index ddb8abf..d905968 100644
--- a/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/ValidatorFactoryGwtSuite.java
+++ b/samples/validationtck/test/com/google/gwt/sample/validationtck/validatorfactory/ValidatorFactoryGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.sample.validationtck.validatorfactory;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ValidatorFactoryGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, validatorfactory package");
     suite.addTestSuite(CustomConstraintValidatorTest.class);
     return suite;
diff --git a/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtSuite.java b/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtSuite.java
index 4d9eb22..a08071c 100644
--- a/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtSuite.java
+++ b/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtSuite.java
@@ -15,7 +15,7 @@
  */
 package org.hibernate.jsr303.tck.tests.constraints.validatorresolution;
 
-import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.sample.validationtck.util.TckTestSuiteWrapper;
 
 import junit.framework.Test;
 
@@ -24,7 +24,7 @@
  */
 public class ValidatorResolutionGwtSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
+    TckTestSuiteWrapper suite = new TckTestSuiteWrapper(
         "TCK for GWT Validation, validator resolution package");
     suite.addTestSuite(ValidatorResolutionGwtTest.class);
     return suite;
diff --git a/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java b/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
index 229ca07..9808674 100644
--- a/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
+++ b/samples/validationtck/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
@@ -16,6 +16,7 @@
 package org.hibernate.jsr303.tck.tests.constraints.validatorresolution;
 
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.sample.validationtck.util.Failing;
 
 /**
  * Wraps {@link ValidatorResolutionTest} .
@@ -27,22 +28,27 @@
     return "org.hibernate.jsr303.tck.tests.constraints.validatorresolution.TckTest";
   }
 
+  @Failing(issue = 5806)
   public void testAmbiguousValidatorResolution() {
     delegate.testAmbiguousValidatorResolution();
   }
 
+  @Failing(issue = 5806)
   public void testResolutionOfMinMaxForDifferentTypes() {
     delegate.testResolutionOfMinMaxForDifferentTypes();
   }
 
+  @Failing(issue = 5806)
   public void testResolutionOfMultipleSizeValidators() {
     delegate.testResolutionOfMultipleSizeValidators();
   }
 
+  @Failing(issue = 5806)
   public void testTargetedTypeIsField() {
     delegate.testTargetedTypeIsField();
   }
 
+  @Failing(issue = 5806)
   public void testTargetedTypeIsGetter() {
     delegate.testTargetedTypeIsGetter();
   }
@@ -51,13 +57,13 @@
     delegate.testTargetTypeIsClass();
   }
 
+  @Failing(issue = 5806)
   public void testTargetTypeIsInterface() {
     delegate.testTargetTypeIsInterface();
   }
 
+  @Failing(issue = 5806)
   public void testUnexpectedTypeInValidatorResolution() {
     delegate.testUnexpectedTypeInValidatorResolution();
   }
-
-
 }