[atunit commit] r32 - in trunk: . lib/core/junit src/atunit src/atunit/guice test/atunit/core test/atunit/easymoc...

0 views
Skip to first unread message

codesite...@google.com

unread,
Dec 18, 2007, 10:19:29 PM12/18/07
to atunit...@googlegroups.com
Author: logan.johnson
Date: Tue Dec 18 19:18:40 2007
New Revision: 32

Added:
trunk/lib/core/junit/junit-4.4-src.jar (contents, props changed)
trunk/lib/core/junit/junit-4.4.jar (contents, props changed)
Removed:
trunk/lib/core/junit/junit.jar
Modified:
trunk/.classpath
trunk/build.xml
trunk/src/atunit/AtUnit.java
trunk/src/atunit/guice/GuiceContainer.java
trunk/test/atunit/core/AtUnitTests.java
trunk/test/atunit/easymock/EasyMockFrameworkTests.java
trunk/test/atunit/guice/GuiceContainerTests.java
trunk/test/atunit/jmock/JMockFrameworkTests.java
trunk/test/atunit/spring/SpringContainerTests.java

Log:
- fixed issue 1-- AtUnit sees inherited fields now.
- added source and javadoc jars
- rolled in junit 4.4
- bumped version to 1.0


Modified: trunk/.classpath
==============================================================================
--- trunk/.classpath (original)
+++ trunk/.classpath Tue Dec 18 19:18:40 2007
@@ -4,7 +4,6 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="src" path="example"/>
- <classpathentry kind="lib" path="lib/core/junit/junit.jar"/>
<classpathentry kind="lib" path="lib/guice/guice/aopalliance.jar"/>
<classpathentry kind="lib" path="lib/guice/guice/guice.jar"/>
<classpathentry kind="lib" path="lib/easymock/easymock.jar"/>
@@ -22,7 +21,6 @@
<attribute name="javadoc_location" value="jar:platform:/resource/atunit/lib/core/google-collections/javadoc-snapshot-20071022.zip!/"/>
</attributes>
</classpathentry>
- <classpathentry kind="lib" path="lib/build/jarjar/jarjar-1.0rc6.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+ <classpathentry kind="lib" path="lib/core/junit/junit-4.4.jar" sourcepath="lib/core/junit/junit-4.4-src.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Modified: trunk/build.xml
==============================================================================
--- trunk/build.xml (original)
+++ trunk/build.xml Tue Dec 18 19:18:40 2007
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="atunit" default="dist">

- <property name="version" value="0.8"/>
+ <property name="version" value="1.0"/>

<property name="ant.build.javac.source" value="1.5"/>
@@ -83,12 +83,22 @@
addLineAnchors="true"/>
</target>

- <target name="jar" depends="compile,test" description="package into jars">
+ <target name="jar" depends="compile,test,docs" description="package
into jars">
<taskdef name="jarjar"
classname="com.tonicsystems.jarjar.JarJarTask" classpathref="build.classpath"/>
<jarjar destfile="${build.dir}/${ant.project.name}-${version}.jar" basedir="${build.dir}/classes">
<zipfileset src="${lib.dir}/core/google-collections/google-collect-snapshot-20071022.jar"/>
<rule pattern="com.google.common.**" result="atunit.lib.@0"/>
+ <keep pattern="atunit.**"/>
</jarjar>
+
+ <jar destfile="${build.dir}/${ant.project.name}-${version}.src.jar">
+ <fileset dir="${src.dir}"/>
+ <fileset dir="${example.dir}"/>
+ </jar>
+
+ <jar destfile="${build.dir}/${ant.project.name}-${version}.javadoc.jar">
+ <fileset dir="${doc.dir}/api"/>
+ </jar>
</target>

<target name="dist" depends="clean,jar,docs"/>

Added: trunk/lib/core/junit/junit-4.4-src.jar
==============================================================================
Binary file. No diff available.

Added: trunk/lib/core/junit/junit-4.4.jar
==============================================================================
Binary file. No diff available.

Modified: trunk/src/atunit/AtUnit.java
==============================================================================
--- trunk/src/atunit/AtUnit.java (original)
+++ trunk/src/atunit/AtUnit.java Tue Dec 18 19:18:40 2007
@@ -18,11 +18,16 @@

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;

import org.junit.internal.runners.InitializationError;
import org.junit.internal.runners.JUnit4ClassRunner;

+import com.google.common.collect.Sets;
+
import atunit.core.Container;
import atunit.core.IncompatibleAnnotationException;
import atunit.core.MockFramework;
@@ -53,17 +58,18 @@
@Override
protected Object createTest() throws Exception {
Class<?> c = getTestClass().getJavaClass();
+ Set<Field> testFields = getFields(c);

Container container = getContainerFor(c);
MockFramework mockFramework = getMockFrameworkFor(c);

// make sure we have one (and only one) @Unit field
- Field unitField = getUnitField(c);
+ Field unitField = getUnitField(testFields);
if ( unitField.getAnnotation(Mock.class) != null ) {
throw new IncompatibleAnnotationException(Unit.class, Mock.class);
}

- final Map<Field,Object> fieldValues = mockFramework.getValues(c.getDeclaredFields());
+ final Map<Field,Object> fieldValues =
mockFramework.getValues(testFields.toArray(new Field[0]));
if ( fieldValues.containsKey(unitField)) {
throw new IncompatibleAnnotationException(Unit.class, unitField.getType());
}
@@ -81,9 +87,27 @@
return test;
}

- protected Field getUnitField(Class<?> testClass) throws
NoUnitException, TooManyUnitsException {
+
+ /**
+ * Gets all declared fields and all inherited fields.
+ */
+ protected Set<Field> getFields(Class<?> c) {
+ Set<Field> fields = Sets.newHashSet(c.getDeclaredFields());
+ while ( (c = c.getSuperclass()) != null ) {
+ for ( Field f : c.getDeclaredFields() ) {
+ if ( !Modifier.isStatic(f.getModifiers())
+ && !Modifier.isPrivate(f.getModifiers())
+ ) {
+ fields.add(f);
+ }
+ }
+ }
+ return fields;
+ }
+
+ protected Field getUnitField(Set<Field> fields) throws
NoUnitException, TooManyUnitsException {
Field unitField = null;
- for ( Field field : testClass.getDeclaredFields() ) {
+ for ( Field field : fields ) {
for ( Annotation anno : field.getAnnotations() ) {
if ( Unit.class.isAssignableFrom(anno.annotationType())) {
if ( unitField != null ) throw new TooManyUnitsException("Already
had field " + unitField + " when I found field " + field);

Modified: trunk/src/atunit/guice/GuiceContainer.java
==============================================================================
--- trunk/src/atunit/guice/GuiceContainer.java (original)
+++ trunk/src/atunit/guice/GuiceContainer.java Tue Dec 18 19:18:40 2007
@@ -16,23 +16,17 @@

package atunit.guice;

-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
-import java.util.Set;

import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
-import com.google.common.collect.Sets;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
-import com.google.inject.binder.AnnotatedBindingBuilder;
-import com.google.inject.binder.LinkedBindingBuilder;

import atunit.core.Container;


Modified: trunk/test/atunit/core/AtUnitTests.java
==============================================================================
--- trunk/test/atunit/core/AtUnitTests.java (original)
+++ trunk/test/atunit/core/AtUnitTests.java Tue Dec 18 19:18:40 2007
@@ -69,6 +69,13 @@
assertTrue(result.getFailures().get(0).getException() instanceof TooManyUnitsException);
}

+ @Test
+ public void tInheritedUnit() {
+ Result result = junit.run(TestClasses.InheritedUnit.class);
+ assertTrue(result.wasSuccessful());
+ }
+
+
protected static class TestClasses {

@RunWith(AtUnit.class)
@@ -99,6 +106,17 @@
public static class TooManyUnits extends AbstractAtUnitTest {
@Unit String firstUnit;
@Unit String secondUnit;
+ }
+
+ public static class InheritedUnit extends HappyTest {
+
+ @Before
+ public void setUp() {
+ unit = getClass().getName();
+ }
+ public void tUnitInheritance() {
+ assertEquals(getClass().getName(), unit);
+ }
}

}

Modified: trunk/test/atunit/easymock/EasyMockFrameworkTests.java
==============================================================================
--- trunk/test/atunit/easymock/EasyMockFrameworkTests.java (original)
+++ trunk/test/atunit/easymock/EasyMockFrameworkTests.java Tue Dec 18
19:18:40 2007
@@ -53,6 +53,14 @@
assertEquals(1, result.getRunCount());
}

+
+ @Test
+ public void tInheritance() {
+ Result result = junit.run(TestClasses.Inheritance.class);
+ assertTrue(result.wasSuccessful());
+ assertEquals(1, result.getRunCount());
+ }
+
protected static class TestClasses {

@RunWith(AtUnit.class)
@@ -74,6 +82,10 @@
public static interface StringFactory {
public String getString();
}
+ }
+
+ public static class Inheritance extends OptionMocks {
+
}

@RunWith(AtUnit.class)

Modified: trunk/test/atunit/guice/GuiceContainerTests.java
==============================================================================
--- trunk/test/atunit/guice/GuiceContainerTests.java (original)
+++ trunk/test/atunit/guice/GuiceContainerTests.java Tue Dec 18
19:18:40 2007
@@ -1,8 +1,6 @@
package atunit.guice;

import static org.junit.Assert.*;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;

import java.lang.reflect.Field;
import java.util.Map;
@@ -11,14 +9,10 @@
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
-import org.junit.runner.RunWith;

import com.google.common.collect.Maps;
import com.google.inject.Inject;
-import com.google.inject.name.Named;

-import atunit.AtUnit;
-import atunit.Container;
import atunit.example.ExampleGuiceTest;

public class GuiceContainerTests {
@@ -38,6 +32,12 @@
assertEquals(2, result.getRunCount());
}

+ @Test
+ public void tInheritance() {
+ Result result = junit.run(Inheritance.class);
+ assertTrue(result.wasSuccessful());
+ assertEquals(2, result.getRunCount());
+ }

@Test
public void tDuplicateFields() throws Exception {
@@ -58,6 +58,9 @@
// this should have our value
assertEquals(3, df.field3.intValue());
}
+
+ public static class Inheritance extends ExampleGuiceTest {}
+
protected static class DuplicateFields {
@Inject public String field1;
@Inject public String field2;

Modified: trunk/test/atunit/jmock/JMockFrameworkTests.java
==============================================================================
--- trunk/test/atunit/jmock/JMockFrameworkTests.java (original)
+++ trunk/test/atunit/jmock/JMockFrameworkTests.java Tue Dec 18
19:18:40 2007
@@ -51,6 +51,13 @@
}

@Test
+ public void tInheritance() {
+ Result result = junit.run(TestClasses.Inheritance.class);
+ assertTrue(result.wasSuccessful());
+ assertEquals(2, result.getRunCount());
+ }
+
+ @Test
public void tMockWithoutMockery() {
Result result = junit.run(TestClasses.MockWithoutMockery.class);
assertFalse(result.wasSuccessful());
@@ -104,6 +111,10 @@

assertTrue(myMock.isAwesome());
}
+ }
+
+ public static class Inheritance extends WithMockery {
+
}

public static class MockWithoutMockery extends AbstractJMockTest {

Modified: trunk/test/atunit/spring/SpringContainerTests.java
==============================================================================
--- trunk/test/atunit/spring/SpringContainerTests.java (original)
+++ trunk/test/atunit/spring/SpringContainerTests.java Tue Dec 18
19:18:40 2007
@@ -66,6 +66,13 @@
}

@Test
+ public void tInheritance() {
+ Result result = junit.run(TestClasses.Inheritance.class);
+ assertEquals(1, result.getRunCount());
+ assertTrue(result.wasSuccessful());
+ }
+
+ @Test
public void tNameBindings() {
Result result = junit.run(TestClasses.MockIntegration.class);
assertEquals(1, result.getRunCount());
@@ -149,6 +156,9 @@
EasyMock.replay(stringSet);
assertTrue(stringSet.contains("mystring"));
}
+ }
+
+ public static class Inheritance extends MockIntegration {
}

@MockFramework(MockFramework.Option.EASYMOCK)

codesite...@google.com

unread,
Dec 18, 2007, 10:19:29 PM12/18/07
to atunit...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages