Bläddra i källkod

tests: umiemy testować javax.annotation.processing.Processor ! :)

Ranides Atterwim 10 år sedan
förälder
incheckning
637fee30a9

+ 29 - 191
assira/pom.xml

@@ -26,197 +26,29 @@
 						<artifactId>jacoco-maven-plugin</artifactId>
 						<version>0.7.5.201505241946</version>
 						<configuration>
-							<excludes>
-								<exclude>net/ranides/assira/test/**</exclude>
-								
-								<!--  klasy dostatecznie przetestowane -->
-								
-								<exclude>net/ranides/assira/collection/ACollection.class</exclude>
-								<exclude>net/ranides/assira/collection/AIntCollection.class</exclude>
-								<exclude>net/ranides/assira/collection/HashComparator$*</exclude>
-								<exclude>net/ranides/assira/collection/HashComparator.class</exclude>
-								<exclude>net/ranides/assira/collection/HashIntComparator$*</exclude>
-								<exclude>net/ranides/assira/collection/HashIntComparator.class</exclude>
-								<exclude>net/ranides/assira/collection/IntComparator.class</exclude>
-                                
-								<exclude>net/ranides/assira/collection/arrays/ArrayAllocator.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/ArraySort.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/IntArraySort.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/NativeArray$*</exclude>
-								<exclude>net/ranides/assira/collection/arrays/NativeArray.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/NativeArrayAllocator.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/NativeArraySort$*</exclude>
-								<exclude>net/ranides/assira/collection/arrays/NativeArraySort.class</exclude>
-                                
-<!--								
-								<exclude>net/ranides/assira/collection/lists/AIntList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/AIntList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntArrayList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntArrayList.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntList.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntListUtils$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntListUtils.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntRange$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntRange.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/JoinList.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/JoinList$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/ListUtils$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/ListUtils.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntRTList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/NativeArrayList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/NativeArrayList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/RTList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/VirtualList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/VirtualList.class</exclude>
--->
-								<exclude>net/ranides/assira/collection/lists/*</exclude>
-                                
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ALookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ALookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ASortedLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ASortedLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/CustomLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/HashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/IdentLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/Lookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/Lookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup.class</exclude>
-                                
-								<exclude>net/ranides/assira/collection/maps/AHashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AHashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntHashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntHashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntSortedMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntSortedMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/ASortedMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/ASortedMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AVLTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AVLTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/Cache$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/Cache.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/CustomMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMultiMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMultiMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IdentMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMultiMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMultiMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntMultiMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/MultiMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/RandomAccessMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/RandomAccessMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/RBTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/RBTreeMap.class</exclude>
-                                
-								<exclude>net/ranides/assira/collection/rmq/*</exclude>
-<!--								
-								<exclude>net/ranides/assira/collection/rmq/AIntRMQList.class</exclude>
-								<exclude>net/ranides/assira/collection/rmq/ARMQList.class</exclude>
-								<exclude>net/ranides/assira/collection/rmq/IntRMQTable.class</exclude>
-								<exclude>net/ranides/assira/collection/rmq/IntRMQTree$*</exclude>
-								<exclude>net/ranides/assira/collection/rmq/IntRMQTree.class</exclude>
-								<exclude>net/ranides/assira/collection/rmq/RMQTable.class</exclude>
-								<exclude>net/ranides/assira/collection/rmq/RMQTree$*</exclude>
-								<exclude>net/ranides/assira/collection/rmq/RMQTree.class</exclude>
--->                                
-								<exclude>net/ranides/assira/collection/sets/AHashSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/AHashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIdentSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSortedSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSortedSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/ASet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/ASortedSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/ASortedSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AVLTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/AVLTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/CustomSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/HashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IdentSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntHashSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntHashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/RBTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/RBTreeSet.class</exclude>
-
-<!--                                
-								<exclude>net/ranides/assira/events/Events$*</exclude>
-								<exclude>net/ranides/assira/events/Events.class</exclude>
-								<exclude>net/ranides/assira/events/EventBinding$*</exclude>
-								<exclude>net/ranides/assira/events/EventBinding.class</exclude>
-								<exclude>net/ranides/assira/events/EventDispatcher.class</exclude>
-								<exclude>net/ranides/assira/events/EventLock$*</exclude>
-								<exclude>net/ranides/assira/events/EventLock.class</exclude>
-								<exclude>net/ranides/assira/events/EventProactor$*</exclude>
-								<exclude>net/ranides/assira/events/EventProactor.class</exclude>
-								<exclude>net/ranides/assira/events/EventReactor$*</exclude>
-								<exclude>net/ranides/assira/events/EventReactor.class</exclude>
--->
-								<exclude>net/ranides/assira/events/*</exclude>
-								
-                                <exclude>net/ranides/assira/io/DataAdapter$*</exclude>
-                                <exclude>net/ranides/assira/io/DataAdapter.class</exclude>
-                                <exclude>net/ranides/assira/io/BufferAdapter$*</exclude>
-                                <exclude>net/ranides/assira/io/BufferAdapter.class</exclude>
-                                <exclude>net/ranides/assira/io/ChannelAdapter$*</exclude>
-                                <exclude>net/ranides/assira/io/ChannelAdapter.class</exclude>
-                                <exclude>net/ranides/assira/io/FileUtils.class</exclude>
-                                <exclude>net/ranides/assira/io/IOUtils.class</exclude>
-                                <exclude>net/ranides/assira/io/ResourceUtils.class</exclude>
-                                
-								<exclude>net/ranides/assira/reflection/util/PackageScanner$*</exclude>
-								<exclude>net/ranides/assira/reflection/util/PackageScanner.class</exclude>
-								<exclude>net/ranides/assira/reflection/util/ClassTraits.class</exclude>
-								<exclude>net/ranides/assira/reflection/util/ClassUtils$*</exclude>
-								<exclude>net/ranides/assira/reflection/util/ClassUtils.class</exclude>
-                                
-								<exclude>net/ranides/assira/text/Charsets.class</exclude>
-								<exclude>net/ranides/assira/text/FormatHex.class</exclude>
-								<exclude>net/ranides/assira/text/FormatNumber$*</exclude>
-								<exclude>net/ranides/assira/text/FormatNumber.class</exclude>
-								<exclude>net/ranides/assira/text/MazoviaCharset$*</exclude>
-								<exclude>net/ranides/assira/text/MazoviaCharset.class</exclude>
-								<exclude>net/ranides/assira/text/StrBuilder.class</exclude>
-								<exclude>net/ranides/assira/text/StrBuilder$*</exclude>
-								<exclude>net/ranides/assira/text/StrBuilderOptions.class</exclude>
-								<exclude>net/ranides/assira/text/StringIO.class</exclude>
-								<exclude>net/ranides/assira/text/StringUtils.class</exclude>
-								<exclude>net/ranides/assira/text/StringUtils$*</exclude>
-								<exclude>net/ranides/assira/text/Wildcard.class</exclude>
-                                
-								<exclude>net/ranides/assira/trace/ExceptionUtils$*</exclude>
-								<exclude>net/ranides/assira/trace/ExceptionUtils.class</exclude>
-								<exclude>net/ranides/assira/trace/LoggerLevel$*</exclude>
-								<exclude>net/ranides/assira/trace/LoggerLevel.class</exclude>
-								<exclude>net/ranides/assira/trace/LoggerUtils.class</exclude>
-								<exclude>net/ranides/assira/trace/TraceUtils$*</exclude>
-								<exclude>net/ranides/assira/trace/TraceUtils.class</exclude>
-								<exclude>net/ranides/assira/trace/ThreadUtils$*</exclude>
-								<exclude>net/ranides/assira/trace/ThreadUtils.class</exclude>
-							</excludes>
+                            <includes>
+                                <include>net/ranides/assira/annotations/**</include>
+                                <include>net/ranides/assira/awt/**</include>
+                                <include>net/ranides/assira/collection/*</include>
+                                <include>net/ranides/assira/collection/arrays/*</include>
+                                <include>net/ranides/assira/collection/iterators/*</include>
+                                <include>net/ranides/assira/collection/lists/*</include>
+                                <include>net/ranides/assira/collection/lookups/*</include>
+                                <include>net/ranides/assira/collection/maps/*</include>
+                                <include>net/ranides/assira/collection/rmq/*</include>
+                                <include>net/ranides/assira/collection/sets/*</include>
+                                <include>net/ranides/assira/collection/utils/*</include>
+                                <include>net/ranides/assira/events/*</include>
+                                <include>net/ranides/assira/functional/*</include>
+                                <include>net/ranides/assira/generic/*</include>
+                                <include>net/ranides/assira/io/*</include>
+                                <include>net/ranides/assira/lexer/*</include>
+                                <include>net/ranides/assira/math/*</include>
+                                <include>net/ranides/assira/reflection/*</include>
+                                <include>net/ranides/assira/system/*</include>
+                                <include>net/ranides/assira/text/*</include>
+                                <include>net/ranides/assira/trace/*</include>
+                            </includes>
 						</configuration>
 					</plugin>
 					<plugin>
@@ -281,5 +113,11 @@
 			<groupId>com.google.code.findbugs</groupId>
 			<artifactId>annotations</artifactId>
 		</dependency>
+        <dependency>
+            <groupId>com.google.testing.compile</groupId>
+            <artifactId>compile-testing</artifactId>
+            <version>0.8</version>
+            <scope>test</scope>
+        </dependency>
 	</dependencies>
 </project>

+ 10 - 2
assira/src/main/java/net/ranides/assira/annotations/JavaServiceProcessor.java

@@ -91,6 +91,7 @@ public class JavaServiceProcessor extends AbstractProcessor {
                 processingEnv.getMessager().printMessage(Kind.NOTE, "Writing META-INF/services/"+contract);
                 for (String value : services.getAll(contract)) {
                     writer.println(value);
+                    System.out.printf("ss = %s%n", value);
                 }
             } catch (IOException x) {
                 processingEnv.getMessager().printMessage(Kind.ERROR, "Failed to write service definition files: "+x);
@@ -104,11 +105,18 @@ public class JavaServiceProcessor extends AbstractProcessor {
     }
     
     private BufferedReader reader(String contract) throws IOException {
-        return new BufferedReader(new InputStreamReader(fo(contract).openInputStream(), "UTF-8"));
+        return new BufferedReader(new InputStreamReader(fi(contract).openInputStream(), "UTF-8"));
     }
     
     private FileObject fo(String contract) throws IOException {
-        return processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", "META-INF/services/" +contract);
+        System.out.printf("oo == %s%n", contract);
+        FileObject fo = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", "META-INF/services/" +contract);
+        return fo;
+    }
+    
+    private FileObject fi(String contract) throws IOException {
+        FileObject fi = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", "META-INF/services/" +contract);
+        return fi;
     }
     
     private TypeElement getContract(TypeElement type, Meta.JavaService annotation) {

+ 40 - 0
assira/src/test/java/net/ranides/assira/annotations/JavaServiceProcessorTest.java

@@ -0,0 +1,40 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.annotations;
+
+import com.google.common.io.ByteSource;
+import com.google.common.truth.Truth;
+import com.google.testing.compile.JavaFileObjects;
+import com.google.testing.compile.JavaSourceSubjectFactory;
+import javax.tools.StandardLocation;
+import net.ranides.assira.text.Charsets;
+import org.junit.Test;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+@net.ranides.assira.annotations.Meta.JavaService
+public class JavaServiceProcessorTest {
+
+    @Test
+    public void testJSP() {
+        Truth.assertAbout(JavaSourceSubjectFactory.javaSource())
+            .that(JavaFileObjects.forSourceString("net.ranides.at.HelloWorld", 
+                    "package net.ranides.at; \n"+
+                    "@net.ranides.assira.annotations.Meta.JavaService \n" +
+                    "public class HelloWorld implements net.ranides.assira.events.Event { }"
+            ))
+            .processedWith(new JavaServiceProcessor())
+            .compilesWithoutError()
+            .and()
+            .generatesFileNamed(StandardLocation.CLASS_OUTPUT, "", "META-INF/services/net.ranides.assira.events.Event")
+                .withContents(ByteSource.wrap("net.ranides.at.HelloWorld\r\n".getBytes(Charsets.UTF8)));
+
+    }
+    
+}