Patches for 2191102 and 2196462

"Amanda Robinson" <[email protected]> Wed, 17 Dec 2008 14:08:33 -0500
Newsgroups gmane.comp.java.junit.devel
Message-ID <[email protected]>
See attachments:

DataPointPatch.txt:
fixes: AllMembersSupplier should only add @DataPoint fields - ID: 2191102
Includes one added unit test to AnnotationTest.java
Includes update to AllMembersSupplier.addFields(ParameterSignature,
List<PotentialAssignment>)
Includes addition of @DataPoint annotation to every unit test that
appeared to require it, as some had used only 'public static'

TheoriesPatch.txt:
fixes: @Theory annotation optional when running with Theories - ID: 2196462
Includes three additional unit tests to AnnotationTest.java
Includes update to Theories.validateTestMethods(List<Throwable>)

I couldn't find a way to put these files directly on SourceForge--I'm
assuming this has to do with various permissions, but if there's
somewhere to do this that I'm just not aware of and it would be
easier, please do point me in that direction.

Thank you,
~Amanda

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/

_______________________________________________
Junit-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/junit-devel
DataPointPatch.txt (text/plain, 11.4 KB)
### Eclipse Workspace Patch 1.0
#P junit
Index: src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java,v
retrieving revision 1.6
diff -u -r1.6 WithDataPointMethod.java
--- src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java	18 Aug 2008 14:54:26 -0000	1.6
+++ src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java	17 Dec 2008 18:33:56 -0000
@@ -75,8 +75,10 @@
 			return new ArrayList<Object>();
 		}
 
+		@DataPoint
 		public static int ONE= 1;
 
+		@DataPoint
 		public static int TWO= 2;
 
 		@Theory
@@ -98,6 +100,7 @@
 			return 100;
 		}
 
+		@DataPoint
 		public Date notADataPoint() {
 			return new Date();
 		}
Index: src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java,v
retrieving revision 1.9
diff -u -r1.9 WhenNoParametersMatch.java
--- src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java	26 Jun 2008 13:55:24 -0000	1.9
+++ src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java	17 Dec 2008 18:33:56 -0000
@@ -7,6 +7,7 @@
 import static org.junit.experimental.results.PrintableResult.testResult;
 import static org.junit.internal.matchers.StringContains.containsString;
 import org.hamcrest.Matcher;
+import org.junit.experimental.theories.DataPoint;
 import org.junit.experimental.theories.DataPoints;
 import org.junit.experimental.theories.Theories;
 import org.junit.experimental.theories.Theory;
@@ -22,6 +23,7 @@
 
 	@RunWith(Theories.class)
 	public static class AssumptionsFail {
+		@DataPoint
 		public static int DATA= 0;
 
 		public static Matcher<Integer> MATCHER= null;
Index: src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java,v
retrieving revision 1.4
diff -u -r1.4 UnsuccessfulWithDataPointFields.java
--- src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java	31 Jul 2008 14:28:18 -0000	1.4
+++ src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java	17 Dec 2008 18:33:56 -0000
@@ -17,6 +17,7 @@
 public class UnsuccessfulWithDataPointFields {
 	@RunWith(Theories.class)
 	public static class HasATheory {
+		@DataPoint
 		public static int ONE= 1;
 
 		@Theory
@@ -45,6 +46,7 @@
 
 	@RunWith(Theories.class)
 	public static class DoesntUseParams {
+		@DataPoint
 		public static int ONE= 1;
 
 		@Theory
@@ -61,8 +63,10 @@
 
 	@RunWith(Theories.class)
 	public static class NullsOK {
+		@DataPoint
 		public static String NULL= null;
 
+		@DataPoint
 		public static String A= "A";
 
 		@Theory
Index: src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java,v
retrieving revision 1.3
diff -u -r1.3 SuccessfulWithDataPointFields.java
--- src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java	13 May 2008 18:03:58 -0000	1.3
+++ src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java	17 Dec 2008 18:33:56 -0000
@@ -23,6 +23,7 @@
 public class SuccessfulWithDataPointFields {
 	@RunWith(Theories.class)
 	public static class HasATwoParameterTheory {
+		@DataPoint
 		public static int ONE= 1;
 
 		@Theory
Index: src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java
===================================================================
RCS file: /cvsroot/junit/junit/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java,v
retrieving revision 1.12
diff -u -r1.12 AllMembersSupplier.java
--- src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java	18 Aug 2008 14:54:28 -0000	1.12
+++ src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java	17 Dec 2008 18:33:56 -0000
@@ -7,6 +7,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.junit.experimental.theories.DataPoint;
@@ -92,7 +93,8 @@
 				if (sig.canAcceptArrayType(type)
 						&& field.getAnnotation(DataPoints.class) != null) {
 					addArrayValues(field.getName(), list, getStaticFieldValue(field));
-				} else if (sig.canAcceptType(type)) {
+				} else if (sig.canAcceptType(type)
+						&& field.getAnnotation(DataPoint.class) != null) {
 					list.add(PotentialAssignment
 							.forValue(field.getName(), getStaticFieldValue(field)));
 				}
Index: src/test/java/org/junit/tests/running/methods/AnnotationTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/running/methods/AnnotationTest.java,v
retrieving revision 1.2
diff -u -r1.2 AnnotationTest.java
--- src/test/java/org/junit/tests/running/methods/AnnotationTest.java	6 Aug 2008 13:29:14 -0000	1.2
+++ src/test/java/org/junit/tests/running/methods/AnnotationTest.java	17 Dec 2008 18:33:56 -0000
@@ -3,6 +3,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.matchers.JUnitMatchers.both;
 import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.junit.Assume.assumeTrue;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -14,6 +15,9 @@
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
 import org.junit.runner.Description;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Result;
@@ -518,4 +522,25 @@
 		assertEquals(2, result.getFailureCount());
 	}
 
+	@RunWith(Theories.class)
+	static public class StaticPublicNonDataPoints {
+		// DataPoints to be potential arguments for excludeTwo:
+		@DataPoint public static int ZERO = 0;
+		@DataPoint public static int TWO = 2;
+		
+		// Not annoted as a DataPoint and therefore should be ignored:
+		public static int ONE = 1;
+
+		@Theory
+		public void excludeTwo(int i) {
+			assumeTrue(i < 2);
+			assertTrue(i == 0);
+		}
+	}
+	
+	@Test public void testIgnoreStaticPublicNonDataPoints() {
+		JUnitCore core = new JUnitCore();
+		Result result = core.run(StaticPublicNonDataPoints.class);
+		assertEquals(0, result.getFailureCount());
+	}
 }
Index: src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java,v
retrieving revision 1.2
diff -u -r1.2 PrintableResultTest.java
--- src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java	7 Apr 2008 17:59:22 -0000	1.2
+++ src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java	17 Dec 2008 18:33:56 -0000
@@ -8,6 +8,7 @@
 import java.util.Arrays;
 
 import org.junit.experimental.results.PrintableResult;
+import org.junit.experimental.theories.DataPoint;
 import org.junit.experimental.theories.Theories;
 import org.junit.experimental.theories.Theory;
 import org.junit.runner.Description;
@@ -35,7 +36,7 @@
 				containsString(descriptionName), containsString(stackTraceClassName)));
 	}
 
-	public static String SHELL_POINT= "Shell Point";
+	@DataPoint public static String SHELL_POINT= "Shell Point";
 
 	@Theory
 	public void includeMultipleFailures(String secondExceptionName) {
Index: src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java,v
retrieving revision 1.4
diff -u -r1.4 AssumptionViolatedExceptionTest.java
--- src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java	6 May 2008 16:42:11 -0000	1.4
+++ src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java	17 Dec 2008 18:33:56 -0000
@@ -8,6 +8,7 @@
 import org.hamcrest.Matcher;
 import org.hamcrest.StringDescription;
 import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
 import org.junit.experimental.theories.Theories;
 import org.junit.experimental.theories.Theory;
 import org.junit.internal.AssumptionViolatedException;
@@ -15,11 +16,11 @@
 
 @RunWith(Theories.class)
 public class AssumptionViolatedExceptionTest {
-	public static Object TWO= 2;
+	@DataPoint public static Object TWO= 2;
 
-	public static Matcher<?> IS_THREE= is(3);
+	@DataPoint public static Matcher<?> IS_THREE= is(3);
 
-	public static Matcher<?> NULL= null;
+	@DataPoint public static Matcher<?> NULL= null;
 
 	@Theory
 	public void toStringReportsMatcher(Object actual, Matcher<?> matcher) {
Index: src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java,v
retrieving revision 1.4
diff -u -r1.4 ParameterizedAssertionErrorTest.java
--- src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java	7 Apr 2008 17:59:22 -0000	1.4
+++ src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java	17 Dec 2008 18:33:56 -0000
@@ -6,6 +6,7 @@
 import static org.junit.Assume.assumeThat;
 import static org.junit.internal.matchers.StringContains.containsString;
 import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
 import org.junit.experimental.theories.Theories;
 import org.junit.experimental.theories.Theory;
 import org.junit.experimental.theories.internal.ParameterizedAssertionError;
@@ -13,19 +14,19 @@
 
 @RunWith(Theories.class)
 public class ParameterizedAssertionErrorTest {
-	public static final String METHOD_NAME= "methodName";
+	@DataPoint public static final String METHOD_NAME= "methodName";
 
-	public static final NullPointerException NULL_POINTER_EXCEPTION= new NullPointerException();
+	@DataPoint public static final NullPointerException NULL_POINTER_EXCEPTION= new NullPointerException();
 
-	public static Object[] NO_OBJECTS= new Object[0];
+	@DataPoint public static Object[] NO_OBJECTS= new Object[0];
 
-	public static ParameterizedAssertionError A= new ParameterizedAssertionError(
+	@DataPoint public static ParameterizedAssertionError A= new ParameterizedAssertionError(
 			NULL_POINTER_EXCEPTION, METHOD_NAME);
 
-	public static ParameterizedAssertionError B= new ParameterizedAssertionError(
+	@DataPoint public static ParameterizedAssertionError B= new ParameterizedAssertionError(
 			NULL_POINTER_EXCEPTION, METHOD_NAME);
 
-	public static ParameterizedAssertionError B2= new ParameterizedAssertionError(
+	@DataPoint public static ParameterizedAssertionError B2= new ParameterizedAssertionError(
 			NULL_POINTER_EXCEPTION, "methodName2");
 
 	@Theory
TheoriesPatch.txt (text/plain, 4.2 KB)
### Eclipse Workspace Patch 1.0
#P junit
Index: src/main/java/org/junit/experimental/theories/Theories.java
===================================================================
RCS file: /cvsroot/junit/junit/src/main/java/org/junit/experimental/theories/Theories.java,v
retrieving revision 1.25
diff -u -r1.25 Theories.java
--- src/main/java/org/junit/experimental/theories/Theories.java	31 Jul 2008 14:28:18 -0000	1.25
+++ src/main/java/org/junit/experimental/theories/Theories.java	17 Dec 2008 17:13:56 -0000
@@ -7,9 +7,11 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.junit.Assert;
+import org.junit.Test;
 import org.junit.experimental.theories.PotentialAssignment.CouldNotGenerateValueException;
 import org.junit.experimental.theories.internal.Assignments;
 import org.junit.experimental.theories.internal.ParameterizedAssertionError;
@@ -45,8 +47,14 @@
 	
 	@Override
 	protected void validateTestMethods(List<Throwable> errors) {
-		for (FrameworkMethod each : computeTestMethods())
-			each.validatePublicVoid(false, errors);
+		for (FrameworkMethod each : computeTestMethods()) {
+			// Theories are allowed to have parameters, but not non-Theory tests:
+			if(each.getAnnotation(Theory.class) != null) {
+				each.validatePublicVoid(false, errors);
+			} else {
+				each.validatePublicVoidNoArg(false, errors);
+			}
+		}
 	}
 	
 	@Override
Index: src/test/java/org/junit/tests/running/methods/AnnotationTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/running/methods/AnnotationTest.java,v
retrieving revision 1.2
diff -u -r1.2 AnnotationTest.java
--- src/test/java/org/junit/tests/running/methods/AnnotationTest.java	6 Aug 2008 13:29:14 -0000	1.2
+++ src/test/java/org/junit/tests/running/methods/AnnotationTest.java	17 Dec 2008 17:13:56 -0000
@@ -3,6 +3,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.matchers.JUnitMatchers.both;
 import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.junit.Assume.assumeTrue;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -14,6 +15,9 @@
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
 import org.junit.runner.Description;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Result;
@@ -517,5 +521,62 @@
 		assertTrue(log.contains("two"));
 		assertEquals(2, result.getFailureCount());
 	}
-
+	
+	static public class ErrorWhenTestHasParameters {
+		@Test public void empty(int i) {
+		}
+	}
+	
+	@Test public void testErrorWhenTestHasParameters() {
+		JUnitCore core = new JUnitCore();
+		Result result = core.run(ErrorWhenTestHasParameters.class);
+		assertEquals(1, result.getFailureCount());
+		String message = result.getFailures().get(0).getMessage();
+		assertThat(message, containsString("should have no parameters"));
+	}
+	
+	@RunWith(Theories.class)
+	static public class NoErrorWhenTheoryHasParameters {
+		@DataPoint
+		public static int ZERO = 0;
+		
+		@DataPoint
+		public static int ONE = 1;
+		
+		@Theory
+		public void theoryMethod(int i) {
+			assumeTrue(i < 1);
+			assertTrue(i < 1);
+		}
+	}
+	
+	@Test public void testNoErrorWhenTheoryHasParameters() {
+		JUnitCore core = new JUnitCore();
+		Result result = core.run(NoErrorWhenTheoryHasParameters.class);
+		assertEquals(0, result.getFailureCount());
+	}
+	
+	@RunWith(Theories.class)
+	static public class ErrorWhenTestHasParametersDespiteTheories {
+		@DataPoint
+		public static int ZERO = 0;
+		
+		@DataPoint
+		public static int ONE = 1;
+		
+		@Test
+		public void testMethod(int i) {
+			assumeTrue(i < 1);
+			assertTrue(i < 1);
+		}
+	}
+	
+	@Test public void testErrorWhenTestHasParametersDespiteTheories() {
+		JUnitCore core = new JUnitCore();
+		Result result = core.run(ErrorWhenTestHasParametersDespiteTheories.class);
+		assertEquals(1, result.getFailureCount());
+		String message = result.getFailures().get(0).getMessage();
+		assertThat(message, containsString("should have no parameters"));
+	}
 }