guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

17/23: gnu: Add java-powermock-reflect.


From: julien lepiller
Subject: 17/23: gnu: Add java-powermock-reflect.
Date: Thu, 2 Nov 2017 08:03:27 -0400 (EDT)

roptat pushed a commit to branch master
in repository guix.

commit 8d6a48150aab886c24c3c05849c04d71fc2f8087
Author: Julien Lepiller <address@hidden>
Date:   Wed Oct 25 23:05:10 2017 +0200

    gnu: Add java-powermock-reflect.
    
    * gnu/packages/java.scm (java-powermock-reflect): New variable.
    * gnu/packages/patches/java-powermock-fix-java-files.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/java.scm                              |  38 +++++
 .../patches/java-powermock-fix-java-files.patch    | 178 +++++++++++++++++++++
 3 files changed, 217 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 90dc7ae..8e562c0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -744,6 +744,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/intltool-perl-compatibility.patch       \
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch        \
   %D%/packages/patches/jacal-fix-texinfo.patch                 \
+  %D%/packages/patches/java-powermock-fix-java-files.patch             \
   %D%/packages/patches/jbig2dec-ignore-testtest.patch          \
   %D%/packages/patches/jbig2dec-CVE-2016-9601.patch            \
   %D%/packages/patches/jbig2dec-CVE-2017-7885.patch            \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 208baf9..80603dc 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6787,3 +6787,41 @@ programming language.  The ulitimate goal of the Xerial 
project is to manage
 everything as database, including class objects, text format data, data
 streams, etc.")
     (license license:asl2.0)))
+
+(define-public java-powermock-reflect
+  (package
+    (name "java-powermock-reflect")
+    (version "1.7.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/powermock/powermock/";
+                                  "archive/powermock-" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0sbgi5vqq7k72wzcdjb20s370vyd4hsbnx71pzb8ishml3gy7fwy"))
+              (patches
+                (search-patches "java-powermock-fix-java-files.patch"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "java-powermock-reflect.jar"
+       #:jdk ,icedtea-8
+       #:source-dir "powermock-reflect/src/main/java"
+       #:test-dir "powermock-reflect/src/test"))
+    (inputs
+     `(("java-objenesis" ,java-objenesis)))
+    (native-inputs
+     `(("junit" ,java-junit)
+       ("cglib" ,java-cglib)
+       ("asm" ,java-asm)
+       ("hamcrest" ,java-hamcrest-core)
+       ("assertj" ,java-assertj)))
+    (home-page "https://github.com/powermock/powermock";)
+    (synopsis "Mock library extension framework")
+    (description "PowerMock is a framework that extends other mock libraries
+such as EasyMock with more powerful capabilities.  PowerMock uses a custom
+classloader and bytecode manipulation to enable mocking of static methods,
+constructors, final classes and methods, private methods, removal of static
+initializers and more.  By using a custom classloader no changes need to be
+done to the IDE or continuous integration servers which simplifies adoption.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/java-powermock-fix-java-files.patch 
b/gnu/packages/patches/java-powermock-fix-java-files.patch
new file mode 100644
index 0000000..6b95818
--- /dev/null
+++ b/gnu/packages/patches/java-powermock-fix-java-files.patch
@@ -0,0 +1,178 @@
+This patch fixes build issues caused by the java compiler not finding the
+correct types on some statements.
+
+From 1ac84b58b4383fa118d98c35956d722d11cf449e Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <address@hidden>
+Date: Tue, 22 Aug 2017 20:40:27 +0200
+Subject: [PATCH] Fix java files.
+
+---
+ .../internal/impl/DelegatingPowerMockRunner.java   | 13 +++++++---
+ .../java/org/powermock/reflect/WhiteBoxTest.java   | 30 +++++++++++-----------
+ .../reflect/internal/proxy/ClassFactory.java       |  6 ++---
+ 3 files changed, 27 insertions(+), 22 deletions(-)
+
+diff --git 
a/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
 
b/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
+index 301f854..caecbbd 100644
+--- 
a/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
++++ 
b/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
+@@ -98,12 +98,17 @@ implements PowerMockJUnitRunnerDelegate, Filterable {
+             @Override
+             public Runner call() throws Exception {
+                 try {
+-                    return Whitebox.invokeConstructor(
+-                            
testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)
+-                            ? 
testClass.getAnnotation(PowerMockRunnerDelegate.class).value()
+-                            : 
PowerMockRunnerDelegate.DefaultJUnitRunner.class,
++                    
if(testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)) {
++                        return Whitebox.invokeConstructor(
++                            
testClass.getAnnotation(PowerMockRunnerDelegate.class).value(),
+                             new Class[] {Class.class},
+                             new Object[] {testClass});
++                    } else {
++                        return Whitebox.invokeConstructor(
++                            PowerMockRunnerDelegate.DefaultJUnitRunner.class,
++                            new Class[] {Class.class},
++                            new Object[] {testClass});
++                    }
+                 } catch (ConstructorNotFoundException rootProblem) {
+                     if 
(testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)
+                             && JUnitVersion.isGreaterThanOrEqualTo("4.5")) {
+diff --git 
a/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java 
b/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
+index bf1e2e3..0d60487 100644
+--- a/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
++++ b/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
+@@ -248,7 +248,7 @@ public class WhiteBoxTest {
+ 
+     @Test
+     public void testMethodWithPrimitiveAndWrappedInt_primtive_wrapped() 
throws Exception {
+-        assertEquals(17, Whitebox.invokeMethod(new ClassWithPrivateMethods(), 
"methodWithPrimitiveAndWrappedInt",
++        assertEquals((Integer)17, Whitebox.invokeMethod(new 
ClassWithPrivateMethods(), "methodWithPrimitiveAndWrappedInt",
+                                                new Class[]{int.class, 
Integer.class}, 9, Integer.valueOf(8)));
+     }
+ 
+@@ -257,7 +257,7 @@ public class WhiteBoxTest {
+         int expected = 123;
+         Whitebox.setInternalState(ClassWithInternalState.class, 
"staticState", expected);
+         assertEquals(expected, ClassWithInternalState.getStaticState());
+-        assertEquals(expected, 
Whitebox.getInternalState(ClassWithInternalState.class, "staticState"));
++        assertEquals(expected, 
(int)Whitebox.getInternalState(ClassWithInternalState.class, "staticState"));
+     }
+ 
+       @Test
+@@ -334,25 +334,25 @@ public class WhiteBoxTest {
+     @Test
+     public void testInvokeVarArgsMethod_multipleValues() throws Exception {
+         ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+-        assertEquals(6, Whitebox.invokeMethod(tested, "varArgsMethod", 1, 2, 
3));
++        assertEquals(6, (int)Whitebox.invokeMethod(tested, "varArgsMethod", 
1, 2, 3));
+     }
+ 
+     @Test
+     public void testInvokeVarArgsMethod_noArguments() throws Exception {
+         ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+-        assertEquals(0, Whitebox.invokeMethod(tested, "varArgsMethod"));
++        assertEquals(0, (int)Whitebox.invokeMethod(tested, "varArgsMethod"));
+     }
+ 
+     @Test
+     public void testInvokeVarArgsMethod_oneArgument() throws Exception {
+         ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+-        assertEquals(4, Whitebox.invokeMethod(tested, "varArgsMethod", 2));
++        assertEquals(4, (int)Whitebox.invokeMethod(tested, "varArgsMethod", 
2));
+     }
+ 
+     @Test
+     public void testInvokeVarArgsMethod_invokeVarArgsWithOneArgument() throws 
Exception {
+         ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+-        assertEquals(1, Whitebox.invokeMethod(tested, "varArgsMethod", new 
Class<?>[]{int[].class}, 1));
++        assertEquals(1, (int)Whitebox.invokeMethod(tested, "varArgsMethod", 
new Class<?>[]{int[].class}, 1));
+     }
+ 
+     @Test
+@@ -376,7 +376,7 @@ public class WhiteBoxTest {
+         ClassWithChildThatHasInternalState tested = new 
ClassWithChildThatHasInternalState() {
+         };
+         Whitebox.setInternalState(tested, fieldName, value);
+-        assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
fieldName));
+     }
+ 
+     @Test
+@@ -387,8 +387,8 @@ public class WhiteBoxTest {
+         ClassWithChildThatHasInternalState tested = new 
ClassWithChildThatHasInternalState() {
+         };
+         Whitebox.setInternalState(tested, fieldName, value);
+-        assertEquals(value, Whitebox.getInternalState(tested, fieldName));
+-        assertEquals(-1, Whitebox.getInternalState(tested, fieldName, 
ClassWithInternalState.class));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
fieldName));
++        assertEquals(-1, (int)Whitebox.getInternalState(tested, fieldName, 
ClassWithInternalState.class));
+     }
+ 
+     @Test(expected = IllegalArgumentException.class)
+@@ -398,7 +398,7 @@ public class WhiteBoxTest {
+         ClassWithChildThatHasInternalState tested = new 
ClassWithChildThatHasInternalState() {
+         };
+         Whitebox.setInternalState(tested, fieldName, new Object());
+-        assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
fieldName));
+     }
+ 
+     @Test(expected = IllegalArgumentException.class)
+@@ -408,7 +408,7 @@ public class WhiteBoxTest {
+         ClassWithChildThatHasInternalState tested = new 
ClassWithChildThatHasInternalState() {
+         };
+         Whitebox.setInternalState(tested, fieldName, (Object) null);
+-        assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
fieldName));
+     }
+ 
+     @Test
+@@ -417,8 +417,8 @@ public class WhiteBoxTest {
+         ClassWithChildThatHasInternalState tested = new 
ClassWithChildThatHasInternalState();
+         Whitebox.setInternalState(tested, int.class, value);
+         assertEquals(value, (int) Whitebox.getInternalState(tested, 
int.class));
+-        assertEquals(value, Whitebox.getInternalState(tested, 
"anotherInternalState"));
+-        assertEquals(value, Whitebox.getInternalState(tested, 
"anotherInternalState",
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
"anotherInternalState"));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
"anotherInternalState",
+                                                       
ClassWithChildThatHasInternalState.class));
+     }
+ 
+@@ -429,7 +429,7 @@ public class WhiteBoxTest {
+         Whitebox.setInternalState(tested, int.class, value, 
ClassWithInternalState.class);
+         assertEquals(42, (int) Whitebox.getInternalState(tested, int.class));
+         assertEquals(value, (int) Whitebox.getInternalState(tested, 
int.class, ClassWithInternalState.class));
+-        assertEquals(value, Whitebox.getInternalState(tested, "staticState", 
ClassWithInternalState.class));
++        assertEquals(value, (int)Whitebox.getInternalState(tested, 
"staticState", ClassWithInternalState.class));
+     }
+ 
+     @Test
+@@ -619,7 +619,7 @@ public class WhiteBoxTest {
+     @Test
+     public void testInvokeMethodWithBothNormalAndVarArgsParameter() throws 
Exception {
+         ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+-        assertEquals(4, Whitebox.invokeMethod(tested, "varArgsMethod2", 1, 2, 
3));
++        assertEquals(4, (int)Whitebox.invokeMethod(tested, "varArgsMethod2", 
1, 2, 3));
+     }
+ 
+     @Test
+diff --git 
a/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
 
b/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
+index a5e5fda..14b8bbe 100644
+--- 
a/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
++++ 
b/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
+@@ -1,8 +1,8 @@
+ package org.powermock.reflect.internal.proxy;
+ 
+-import net.sf.cglib.asm.ClassWriter;
+-import net.sf.cglib.asm.MethodVisitor;
+-import net.sf.cglib.asm.Opcodes;
++import org.objectweb.asm.ClassWriter;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
+ 
+ class ClassFactory implements Opcodes {
+     
+-- 
+2.14.1
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]