Skip to content

Commit

Permalink
[ci maven-central-release] PowerMock 2.0 Release without ByteBuddy (#948
Browse files Browse the repository at this point in the history
)

Preparing PowerMock 2.0 Release without ByteBuddy 

* Remove all ByteBuddy Classloader code (#727)
* Fix tests
* Update Libraries
  • Loading branch information
thekingn0thing committed Oct 24, 2018
1 parent 5a89275 commit 0ef7538
Show file tree
Hide file tree
Showing 53 changed files with 43 additions and 1,951 deletions.
14 changes: 7 additions & 7 deletions build.gradle
Expand Up @@ -11,31 +11,31 @@ buildscript {
} }
dependencies { dependencies {
classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7' classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'net.researchgate:gradle-release:2.4.0' classpath 'net.researchgate:gradle-release:2.4.0'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
classpath 'org.shipkit:shipkit:0.9.45' classpath 'org.shipkit:shipkit:2.0.31'
classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.4.1' classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.4.1'
} }
} }


ext{ ext{
gradleScriptDir = "${rootProject.projectDir}/gradle" gradleScriptDir = "${rootProject.projectDir}/gradle"


byteBuddy = "1.8.3" byteBuddy = "1.9.2"
easymockVersion = "3.5.1" easymockVersion = "3.5.1"
hamcrestVersion = "1.3" hamcrestVersion = "1.3"
assertjVersion = "2.6.0" assertjVersion = "2.6.0"
cglibVersion = "3.2.5" cglibVersion = "3.2.5"
objenesisVersion = "2.6" objenesisVersion = "3.0"
//javassistVersion = "3.23.0-GA" need java-9
javassistVersion = "3.22.0-GA" javassistVersion = "3.22.0-GA"
junitVersion = "4.12" junitVersion = "4.12"
junitRulesVersion = "4.8.2" junitRulesVersion = "4.8.2"
testngVersion = "6.9.10" testngVersion = "6.9.10"
xstreamVersion = "1.4.10" xstreamVersion = "1.4.10"
mockitoVersion = "2.10.0" mockitoVersion = "2.23.0"
servletVersion = "2.5" servletVersion = "2.5"
systemRulesVersion = "1.16.0"
jacocoVersion = "0.7.7.201606060606" jacocoVersion = "0.7.7.201606060606"
eclipseJdt = "3.3.0-v_771" eclipseJdt = "3.3.0-v_771"
checkstyleVersion= "7.6.1" checkstyleVersion= "7.6.1"
Expand Down Expand Up @@ -65,5 +65,5 @@ jar{
} }


task wrapper(type: Wrapper) { task wrapper(type: Wrapper) {
gradleVersion = '4.7' gradleVersion = '4.10.2'
} }
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip
Expand Up @@ -24,6 +24,7 @@ public class InvocationControlAssertionError {
private static final String AT = "at"; private static final String AT = "at";
private static final String ERROR_LOCATION_MARKER = "->"; private static final String ERROR_LOCATION_MARKER = "->";
private static final String COLON_NEWLINE = ":\n"; private static final String COLON_NEWLINE = ":\n";
private static final String NEWLINE_POINT = "\n.";
private static final String HERE_TEXT = "here:\n"; private static final String HERE_TEXT = "here:\n";
private static final String UNDESIRED_INVOCATION_TEXT = " Undesired invocation:"; private static final String UNDESIRED_INVOCATION_TEXT = " Undesired invocation:";
private static final String POWER_MOCKITO_CLASS_NAME = "org.powermock.api.mockito.PowerMockito"; private static final String POWER_MOCKITO_CLASS_NAME = "org.powermock.api.mockito.PowerMockito";
Expand Down Expand Up @@ -106,8 +107,8 @@ private static String changeMessageContent(String message) {
removeAndReplaceText(builder, HERE_TEXT, ' '); removeAndReplaceText(builder, HERE_TEXT, ' ');


removeAndReplaceText(builder, COLON_NEWLINE, ' '); removeAndReplaceText(builder, COLON_NEWLINE, ' ');
final String finalMessage = builder.toString().trim();
return finalMessage; return builder.toString().trim();
} }


private static StringBuilder removeFailureLocations(String message) { private static StringBuilder removeFailureLocations(String message) {
Expand All @@ -124,17 +125,25 @@ private static StringBuilder removeFailureLocations(String message) {


private static void removeAndReplaceText(StringBuilder builder, String text, char appender) { private static void removeAndReplaceText(StringBuilder builder, String text, char appender) {
int currentTextIndex = builder.indexOf(text); int currentTextIndex = builder.indexOf(text);
int previousTextIndex = 0; int previousTextIndex;
boolean isSingleConcat = true; boolean isSingleConcat = true;

while (currentTextIndex > 0) { while (currentTextIndex > 0) {
previousTextIndex = currentTextIndex; previousTextIndex = currentTextIndex;
builder.delete(currentTextIndex, currentTextIndex + text.length()); builder.delete(currentTextIndex, currentTextIndex + text.length());
currentTextIndex = builder.indexOf(text); currentTextIndex = builder.indexOf(text);

final int length = builder.length();

if (isLastFinding(currentTextIndex) && !isSingleConcat) { if (isLastFinding(currentTextIndex) && !isSingleConcat) {
builder.replace(builder.length(), builder.length(), "."); final int start = builder.charAt(length - 1) == '\n' ? length - 1 : length;
builder.replace(start, length, ".");
} else { } else {
builder.replace(previousTextIndex, previousTextIndex + 1, String.valueOf( final int end = previousTextIndex < length ? previousTextIndex + 1 : length;
builder.charAt(previousTextIndex)).toLowerCase()); builder.replace(
previousTextIndex, end,
String.valueOf(builder.charAt(previousTextIndex)).toLowerCase()
);
builder.insert(previousTextIndex, String.valueOf(appender)); builder.insert(previousTextIndex, String.valueOf(appender));
currentTextIndex++; currentTextIndex++;
isSingleConcat = false; isSingleConcat = false;
Expand Down
Expand Up @@ -60,7 +60,7 @@ public <T> Class<T> createClassReplica(Class<T> clazz) {
code, newClass); code, newClass);
} }


return newClass.toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain()); return (Class<T>) newClass.toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Expand Down Expand Up @@ -105,7 +105,7 @@ public <T> Class<T> createInstanceReplica(T delegator) {
CtConstructor copy = CtNewConstructor.copy(ctConstructor, newClass, null); CtConstructor copy = CtNewConstructor.copy(ctConstructor, newClass, null);
newClass.addConstructor(copy); newClass.addConstructor(copy);
} }
return newClass.toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain()); return (Class<T>) newClass.toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Expand Down
Expand Up @@ -6,10 +6,8 @@
import org.powermock.core.classloader.annotations.PrepareOnlyThisForTest; import org.powermock.core.classloader.annotations.PrepareOnlyThisForTest;
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
import org.powermock.core.classloader.annotations.UseClassPathAdjuster; import org.powermock.core.classloader.annotations.UseClassPathAdjuster;
import org.powermock.core.classloader.bytebuddy.ByteBuddyMockClassLoader;
import org.powermock.core.classloader.javassist.JavassistMockClassLoader; import org.powermock.core.classloader.javassist.JavassistMockClassLoader;
import org.powermock.core.transformers.MockTransformerChainFactory; import org.powermock.core.transformers.MockTransformerChainFactory;
import org.powermock.core.transformers.bytebuddy.ByteBuddyMockTransformerChainFactory;
import org.powermock.core.transformers.javassist.JavassistMockTransformerChainFactory; import org.powermock.core.transformers.javassist.JavassistMockTransformerChainFactory;


import java.lang.reflect.AnnotatedElement; import java.lang.reflect.AnnotatedElement;
Expand All @@ -27,18 +25,6 @@ MockClassLoader createClassloader(final MockClassLoaderConfiguration configurati
MockTransformerChainFactory createTransformerChainFactory() { MockTransformerChainFactory createTransformerChainFactory() {
return new JavassistMockTransformerChainFactory(); return new JavassistMockTransformerChainFactory();
} }
},
ByteBuddy {
@Override
MockClassLoader createClassloader(final MockClassLoaderConfiguration configuration,
final UseClassPathAdjuster useClassPathAdjuster) {
return new ByteBuddyMockClassLoader(configuration);
}

@Override
MockTransformerChainFactory createTransformerChainFactory() {
return new ByteBuddyMockTransformerChainFactory();
}
}; };


public static ByteCodeFramework getByteCodeFrameworkForMethod(final Class<?> testClass, final Method method) { public static ByteCodeFramework getByteCodeFrameworkForMethod(final Class<?> testClass, final Method method) {
Expand Down

This file was deleted.

@@ -1,10 +1,7 @@
package org.powermock.core.transformers; package org.powermock.core.transformers;


import javassist.CtMethod; import javassist.CtMethod;
import net.bytebuddy.description.method.MethodDescription;
import org.powermock.core.classloader.ByteCodeFramework; import org.powermock.core.classloader.ByteCodeFramework;
import org.powermock.core.transformers.bytebuddy.testclass.ForMethodsByteBuddyTestClassTransformer;
import org.powermock.core.transformers.bytebuddy.testclass.FromAllMethodsExceptByteBuddyTestClassTransformer;
import org.powermock.core.transformers.javassist.testclass.ForMethodsJavaAssistTestClassTransformer; import org.powermock.core.transformers.javassist.testclass.ForMethodsJavaAssistTestClassTransformer;
import org.powermock.core.transformers.javassist.testclass.FromAllMethodsExceptJavaAssistTestClassTransformer; import org.powermock.core.transformers.javassist.testclass.FromAllMethodsExceptJavaAssistTestClassTransformer;


Expand Down Expand Up @@ -65,10 +62,6 @@ public TestClassTransformer fromMethods(final Collection<Method> testMethodsThat
return new ForMethodsJavaAssistTestClassTransformer( return new ForMethodsJavaAssistTestClassTransformer(
testClass, testMethodAnnotation, MethodSignatures.Javassist.<CtMethod>methodSignatureWriter(), testMethodsThatRunOnOtherClassLoaders testClass, testMethodAnnotation, MethodSignatures.Javassist.<CtMethod>methodSignatureWriter(), testMethodsThatRunOnOtherClassLoaders
); );
case ByteBuddy:
return new ForMethodsByteBuddyTestClassTransformer(
testClass, testMethodAnnotation, MethodSignatures.ByteBuddy.<MethodDescription>methodSignatureWriter(), testMethodsThatRunOnOtherClassLoaders
);
default: default:
throw new IllegalArgumentException(String.format("Unknown bytecode framework `%s`", byteCodeFramework)); throw new IllegalArgumentException(String.format("Unknown bytecode framework `%s`", byteCodeFramework));
} }
Expand All @@ -80,10 +73,6 @@ public TestClassTransformer fromAllMethodsExcept(Method singleMethodToRunOnTarge
return new FromAllMethodsExceptJavaAssistTestClassTransformer( return new FromAllMethodsExceptJavaAssistTestClassTransformer(
testClass, testMethodAnnotation, MethodSignatures.Javassist.<CtMethod>methodSignatureWriter(), singleMethodToRunOnTargetClassLoader testClass, testMethodAnnotation, MethodSignatures.Javassist.<CtMethod>methodSignatureWriter(), singleMethodToRunOnTargetClassLoader
); );
case ByteBuddy:
return new FromAllMethodsExceptByteBuddyTestClassTransformer(
testClass, testMethodAnnotation, MethodSignatures.ByteBuddy.<MethodDescription>methodSignatureWriter(), singleMethodToRunOnTargetClassLoader
);
default: default:
throw new IllegalArgumentException(String.format("Unknown bytecode framework `%s`", byteCodeFramework)); throw new IllegalArgumentException(String.format("Unknown bytecode framework `%s`", byteCodeFramework));
} }
Expand Down

This file was deleted.

0 comments on commit 0ef7538

Please sign in to comment.