aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Lepiller <julien@lepiller.eu>2017-10-25 23:05:10 +0200
committerJulien Lepiller <julien@lepiller.eu>2017-11-02 13:07:17 +0100
commit8d6a48150aab886c24c3c05849c04d71fc2f8087 (patch)
treee4de16bf63002091b400deab8c7581a9853f040a
parent5619556b24eb4c10db467435b64c0c25fc900f0e (diff)
downloadguix-8d6a48150aab886c24c3c05849c04d71fc2f8087.tar
guix-8d6a48150aab886c24c3c05849c04d71fc2f8087.tar.gz
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.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/java.scm38
-rw-r--r--gnu/packages/patches/java-powermock-fix-java-files.patch178
3 files changed, 217 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 90dc7aec1b..8e562c0180 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 208baf9f15..80603dc37f 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 0000000000..6b95818138
--- /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 <julien@lepiller.eu>
+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
+