[easymock3] Update to latest upstream version 3.2

Michal Srb msrb at fedoraproject.org
Fri Aug 9 11:56:13 UTC 2013


commit f3e5d55fb28c942ea750e1fc3750650ffbc27e2c
Author: Michal Srb <msrb at redhat.com>
Date:   Fri Aug 9 13:15:58 2013 +0200

    Update to latest upstream version 3.2
    
    - Enable tests

 .gitignore                                |    2 +
 easymock3-3.1-classextension-tests2.patch |   20 -
 easymock3-backport-of-easymock-101.patch  |  559 -----------------------------
 easymock3-fix-cglib-aid-and-gid.patch     |   30 --
 easymock3-remove-android-support.patch    |  222 ++++++++++++
 easymock3-remove-failing-tests.patch      |   26 --
 easymock3.spec                            |   50 ++--
 sources                                   |    2 +-
 8 files changed, 248 insertions(+), 663 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 8929d9b..6813f28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
 /easymock3-3.1.tar.xz
+easymock-easymock-3.2
+/easymock-3.2.tar.gz
diff --git a/easymock3-remove-android-support.patch b/easymock3-remove-android-support.patch
new file mode 100644
index 0000000..53e101a
--- /dev/null
+++ b/easymock3-remove-android-support.patch
@@ -0,0 +1,222 @@
+From 210c8bae09fb9309519c8266b71635ef308872b3 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Fri, 9 Aug 2013 12:44:48 +0200
+Subject: [PATCH] Remove android support
+
+---
+ .../internal/AndroidClassProxyFactory.java         | 101 ---------------------
+ .../java/org/easymock/internal/AndroidSupport.java |  37 --------
+ .../java/org/easymock/internal/MocksControl.java   |   6 --
+ .../easymock/tests2/ClassExtensionHelperTest.java  |  12 +--
+ 4 files changed, 3 insertions(+), 153 deletions(-)
+ delete mode 100644 easymock/src/main/java/org/easymock/internal/AndroidClassProxyFactory.java
+ delete mode 100644 easymock/src/main/java/org/easymock/internal/AndroidSupport.java
+
+diff --git a/easymock/src/main/java/org/easymock/internal/AndroidClassProxyFactory.java b/easymock/src/main/java/org/easymock/internal/AndroidClassProxyFactory.java
+deleted file mode 100644
+index da04042..0000000
+--- a/easymock/src/main/java/org/easymock/internal/AndroidClassProxyFactory.java
++++ /dev/null
+@@ -1,101 +0,0 @@
+-/**
+- * Copyright 2001-2013 the original author or authors.
+- *
+- * Licensed under the Apache License, Version 2.0 (the "License");
+- * you may not use this file except in compliance with the License.
+- * You may obtain a copy of the License at
+- *
+- *     http://www.apache.org/licenses/LICENSE-2.0
+- *
+- * Unless required by applicable law or agreed to in writing, software
+- * distributed under the License is distributed on an "AS IS" BASIS,
+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+- * See the License for the specific language governing permissions and
+- * limitations under the License.
+- */
+-package org.easymock.internal;
+-
+-import java.io.IOException;
+-import java.lang.reflect.Constructor;
+-import java.lang.reflect.InvocationHandler;
+-import java.lang.reflect.Method;
+-import java.lang.reflect.Modifier;
+-import java.util.Arrays;
+-import java.util.HashSet;
+-import java.util.Set;
+-
+-import org.easymock.ConstructorArgs;
+-
+-import com.google.dexmaker.stock.ProxyBuilder;
+-
+-// ///CLOVER:OFF (sadly not possible to test android with clover)
+-/**
+- * Mocks concrete classes for Android's runtime by generating dex files.
+- */
+-public final class AndroidClassProxyFactory implements IProxyFactory {
+-    public <T> T createProxy(Class<T> toMock, InvocationHandler handler,
+-            Method[] mockedMethods, ConstructorArgs constructorArgs) {
+-        final MockHandler interceptor = new MockHandler(handler, mockedMethods);
+-        try {
+-            ProxyBuilder<T> builder = ProxyBuilder.forClass(toMock)
+-                    .handler(interceptor);
+-            if (constructorArgs != null) {
+-                builder.constructorArgTypes(constructorArgs.getConstructor().getParameterTypes())
+-                        .constructorArgValues(constructorArgs.getInitArgs());
+-            } else {
+-                try {
+-                    DefaultClassInstantiator instantiator = new DefaultClassInstantiator();
+-                    Constructor<?> constructor = instantiator.getConstructorToUse(toMock);
+-                    Object[] params = instantiator.getArgsForTypes(constructor.getParameterTypes());
+-                    builder.constructorArgTypes(constructor.getParameterTypes())
+-                            .constructorArgValues(params);
+-                } catch (InstantiationException e) {
+-                    throw new RuntimeException("Fail to instantiate mock for " + toMock);
+-                }
+-            }
+-            return builder.build();
+-        } catch (IOException e) {
+-            throw new RuntimeException("Failed to mock " + toMock, e);
+-        }
+-    }
+-
+-    public InvocationHandler getInvocationHandler(Object mock) {
+-        MockHandler mockHandler = (MockHandler) ProxyBuilder.getInvocationHandler(mock);
+-        return mockHandler.delegate;
+-    }
+-
+-    private static class MockHandler implements InvocationHandler {
+-        private final InvocationHandler delegate;
+-        private final Set<Method> mockedMethods;
+-
+-        public MockHandler(InvocationHandler delegate, Method... mockedMethods) {
+-            this.delegate = delegate;
+-            this.mockedMethods = (mockedMethods != null)
+-                    ? new HashSet<Method>(Arrays.asList(mockedMethods))
+-                    : null;
+-        }
+-
+-        public Object invoke(Object obj, Method method, Object[] args) throws Throwable {
+-            if (method.isBridge()) {
+-                method = BridgeMethodResolver.findBridgedMethod(method);
+-            }
+-
+-            // Never intercept EasyMock's own calls to fillInStackTrace
+-            boolean internalFillInStackTraceCall = obj instanceof Throwable
+-                    && method.getName().equals("fillInStackTrace")
+-                    && ClassProxyFactory.isCallerMockInvocationHandlerInvoke(new Throwable());
+-
+-            if (internalFillInStackTraceCall
+-                    || isMocked(method) && !Modifier.isAbstract(method.getModifiers())) {
+-                return ProxyBuilder.callSuper(obj, method, args);
+-            }
+-
+-            return delegate.invoke(obj, method, args);
+-        }
+-
+-        private boolean isMocked(Method method) {
+-            return mockedMethods != null && !mockedMethods.contains(method);
+-        }
+-    }
+-}
+-// ///CLOVER:ON
+\ No newline at end of file
+diff --git a/easymock/src/main/java/org/easymock/internal/AndroidSupport.java b/easymock/src/main/java/org/easymock/internal/AndroidSupport.java
+deleted file mode 100644
+index 43c683e..0000000
+--- a/easymock/src/main/java/org/easymock/internal/AndroidSupport.java
++++ /dev/null
+@@ -1,37 +0,0 @@
+-/**
+- * Copyright 2001-2013 the original author or authors.
+- *
+- * Licensed under the Apache License, Version 2.0 (the "License");
+- * you may not use this file except in compliance with the License.
+- * You may obtain a copy of the License at
+- *
+- *     http://www.apache.org/licenses/LICENSE-2.0
+- *
+- * Unless required by applicable law or agreed to in writing, software
+- * distributed under the License is distributed on an "AS IS" BASIS,
+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+- * See the License for the specific language governing permissions and
+- * limitations under the License.
+- */
+-package org.easymock.internal;
+-
+-/**
+- * Android-specific support.
+- */
+-public final class AndroidSupport {
+-    // ///CLOVER:OFF
+-    private static boolean isAndroid;
+-    static {
+-        try {
+-            Class.forName("dalvik.system.PathClassLoader");
+-            isAndroid = true;
+-        } catch (final ClassNotFoundException e) {
+-            isAndroid = false;
+-        }
+-    }
+-
+-    public static boolean isAndroid() {
+-        return isAndroid;
+-    }
+-    // ///CLOVER:ON    
+-}
+diff --git a/easymock/src/main/java/org/easymock/internal/MocksControl.java b/easymock/src/main/java/org/easymock/internal/MocksControl.java
+index e709dc4..cd9d5a9 100644
+--- a/easymock/src/main/java/org/easymock/internal/MocksControl.java
++++ b/easymock/src/main/java/org/easymock/internal/MocksControl.java
+@@ -137,12 +137,6 @@ public class MocksControl implements IMocksControl, IExpectationSetters<Object>,
+             return cached;
+         }
+ 
+-        // ///CLOVER:OFF
+-        if (AndroidSupport.isAndroid()) {
+-            return classProxyFactory = new AndroidClassProxyFactory();
+-        }
+-        // ///CLOVER:ON
+-
+         try {
+             return classProxyFactory = new ClassProxyFactory();
+         } catch (final NoClassDefFoundError e) {
+diff --git a/easymock/src/test/java/org/easymock/tests2/ClassExtensionHelperTest.java b/easymock/src/test/java/org/easymock/tests2/ClassExtensionHelperTest.java
+index b40466c..b0a7c69 100644
+--- a/easymock/src/test/java/org/easymock/tests2/ClassExtensionHelperTest.java
++++ b/easymock/src/test/java/org/easymock/tests2/ClassExtensionHelperTest.java
+@@ -15,7 +15,6 @@
+  */
+ package org.easymock.tests2;
+ 
+-import com.google.dexmaker.stock.ProxyBuilder;
+ import java.lang.reflect.InvocationHandler;
+ import java.lang.reflect.Method;
+ import java.lang.reflect.Proxy;
+@@ -25,7 +24,6 @@ import net.sf.cglib.proxy.Enhancer;
+ import net.sf.cglib.proxy.NoOp;
+ import org.easymock.EasyMock;
+ import static org.easymock.EasyMock.createMock;
+-import org.easymock.internal.AndroidSupport;
+ import static org.easymock.internal.MocksControl.getControl;
+ import static org.easymock.internal.MocksControl.getMockedType;
+ import org.easymock.internal.MocksControl;
+@@ -61,13 +59,9 @@ public class ClassExtensionHelperTest {
+     @Test
+     public void testGetControl_EnhancedButNotAMock() throws Exception {
+         final Object o;
+-        if (AndroidSupport.isAndroid()) {
+-            o = ProxyBuilder.forClass(ArrayList.class)
+-                    .handler(NOOP_INVOCATION_HANDLER)
+-                    .build();
+-        } else {
+-            o = Enhancer.create(ArrayList.class, NoOp.INSTANCE);
+-        }
++
++        o = Enhancer.create(ArrayList.class, NoOp.INSTANCE);
++
+         try {
+             getControl(o);
+             fail();
+-- 
+1.8.1.4
+
diff --git a/easymock3.spec b/easymock3.spec
index af6579f..52e77b8 100644
--- a/easymock3.spec
+++ b/easymock3.spec
@@ -1,32 +1,20 @@
 Name:           easymock3
-Version:        3.1
-Release:        14%{?dist}
+Version:        3.2
+Release:        1%{?dist}
 Summary:        Easy mock objects
 License:        ASL 2.0
 URL:            http://www.easymock.org
 
-# svn export https://easymock.svn.sourceforge.net/svnroot/easymock/tags/easymock-3.1 easymock3-3.1
-# tar cfJ easymock3-3.1.tar.xz easymock3-3.1
-Source0:        %{name}-%{version}.tar.xz
+Source0:        https://github.com/easymock/easymock/archive/easymock-%{version}.tar.gz
 
-# Fix the artifiact id and object id of cglib, it should be net.sf.cglib:cglib
-# instead of cglib:cglib-nodep:
-Patch0:         %{name}-fix-cglib-aid-and-gid.patch
-
-# Build the core only (no class extension or OSGi support):
-Patch1:         %{name}-build-the-core-only.patch
-
-# Backport upstream fixes for Java 7:
-Patch2:         %{name}-backport-of-easymock-101.patch
-
-# Remove tests that fail (please add them again when 3.1.1 is released):
-Patch3:         %{name}-remove-failing-tests.patch
-Patch4:         %{name}-%{version}-classextension-tests2.patch
+Patch5:         %{name}-remove-android-support.patch
 
 BuildArch:      noarch
 
 BuildRequires:  maven-local
 BuildRequires:  mvn(com.keyboardsamurais.maven:maven-timestamp-plugin)
+BuildRequires:  mvn(com.mycila.maven-license-plugin:maven-license-plugin)
+BuildRequires:  mvn(junit:junit)
 BuildRequires:  mvn(net.sf.cglib:cglib)
 BuildRequires:  mvn(org.apache.maven.plugins:maven-compiler-plugin)
 BuildRequires:  mvn(org.apache.maven.plugins:maven-jar-plugin)
@@ -36,7 +24,6 @@ BuildRequires:  mvn(org.objenesis:objenesis)
 BuildRequires:  mvn(org.codehaus.mojo:build-helper-maven-plugin)
 
 
-
 %description
 EasyMock provides Mock Objects for interfaces in JUnit tests by generating
 them on the fly using Java's proxy mechanism. Due to EasyMock's unique style
@@ -47,33 +34,38 @@ So EasyMock is a perfect fit for Test-Driven Development.
 %package javadoc
 Summary:        Javadoc for %{name}
 
-
 %description javadoc
 Javadoc for %{name}.
 
 
 %prep
-
 # Unpack the sources:
-%setup -q
+%setup -q -n easymock-easymock-%{version}
+
+find . -name "*.zip" -delete
+
+# remove android support
+%patch5 -p1
+%pom_xpath_remove "pom:profile[pom:id[text()='android']]"
+%pom_remove_dep :dexmaker easymock
+
+# fix cglib aId and gId
+%pom_remove_dep :cglib-nodep easymock
+%pom_add_dep net.sf.cglib:cglib easymock
 
-# Apply the patches:
-%patch0 -p1
 # remove some warning caused by unavailable plugin
 %pom_remove_plugin com.atlassian.maven.plugins:maven-clover2-plugin
 %pom_remove_plugin org.codehaus.mojo:versions-maven-plugin
 %pom_xpath_remove pom:profiles easymock-classextension
 
 %pom_disable_module easymock-integration
-%patch2 -p1
-%patch3 -p1
 
 # For compatibility reasons
 %mvn_file ":easymock{*}" easymock3 at 1
 
 
 %build
-%mvn_build -f
+%mvn_build
 
 %install
 %mvn_install
@@ -87,6 +79,10 @@ Javadoc for %{name}.
 
 
 %changelog
+* Fri Aug 09 2013 Michal Srb <msrb at redhat.com> - 3.2-1
+- Update to latest upstream version 3.2
+- Enable tests
+
 * Mon Aug 05 2013 Michal Srb <msrb at redhat.com> - 3.1-14
 - Add BR: maven-plugin-build-helper
 
diff --git a/sources b/sources
index 68cb0a5..db0d7d3 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-a4eba97a126484e2fab041de9c46b3c7  easymock3-3.1.tar.xz
+2907bf4fbc5ed3cf0ef751e31c67a38e  easymock-3.2.tar.gz


More information about the scm-commits mailing list