Skip to content

Commit

Permalink
Issue #727: Migrate from Javassist to ByteBuddy.
Browse files Browse the repository at this point in the history
Refactoring MockClassLoader  - extract Javassist relative code to a new classes.
  • Loading branch information
Arthur Zagretdinov committed Jun 17, 2017
1 parent 28bb6ab commit 560101a
Show file tree
Hide file tree
Showing 35 changed files with 1,248 additions and 930 deletions.
1 change: 1 addition & 0 deletions build.gradle
Expand Up @@ -24,6 +24,7 @@ ext{
hamcrestVersion = "1.3"
assertjVersion = "2.6.0"
cglibVersion = "2.2.2"
byteBuddy = "1.6.9"
objenesisVersion = "2.4"
javassistVersion = "3.21.0-GA"
junitVersion = "4.12"
Expand Down
140 changes: 72 additions & 68 deletions gradle/modules.gradle
@@ -1,4 +1,4 @@
def publishableModules = allprojects - rootProject - project(":powermock-api") - project(":powermock-classloading") - project(":powermock-modules") - project(":tests") - project(":tests").subprojects - project(":powermock-release") - project(":powermock-release").subprojects
def publishableModules = allprojects - rootProject - project(":powermock-api") - project(":powermock-classloading") - project(":powermock-modules") - project(":tests") - project(":tests").subprojects - project(":powermock-release") - project(":powermock-release").subprojects

configure(publishableModules) { project ->
apply from: "${gradleScriptDir}/java-module.gradle"
Expand All @@ -21,8 +21,8 @@ project(":powermock-reflect") {

dependencies {
compile("org.objenesis:objenesis:${objenesisVersion}")
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
Expand All @@ -36,9 +36,11 @@ project(":powermock-core") {
dependencies {
compile(project(":powermock-reflect"))
compile("org.javassist:javassist:${javassistVersion}")
compile("net.bytebuddy:byte-buddy:${byteBuddy}")
compile("net.bytebuddy:byte-buddy-agent:${byteBuddy}")

testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
Expand All @@ -51,50 +53,50 @@ project(":powermock-core") {
check.dependsOn mockito2Test
}

project(":powermock-api"){
jar{
project(":powermock-api") {
jar {
enabled = false
}
}

project(":powermock-api:powermock-api-support"){
project(":powermock-api:powermock-api-support") {
description = "PowerMock API Utility classes."

dependencies {
compile(project(":powermock-reflect"))
compile(project(":powermock-core"))
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-api:powermock-api-easymock"){
project(":powermock-api:powermock-api-easymock") {
description = "PowerMock API for EasyMock."

dependencies {
compile(project(":powermock-api:powermock-api-support"))
compile("cglib:cglib-nodep:${cglibVersion}")
provided("org.easymock:easymock:${easymockVersion}")

testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-api:powermock-api-mockito-common"){
project(":powermock-api:powermock-api-mockito-common") {
description = "PowerMock API for Mockito. Common classes."

dependencies {
compile(project(":powermock-api:powermock-api-support"))

testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
Expand All @@ -106,53 +108,55 @@ project(":powermock-api:powermock-api-mockito-common"){
}
}

project(":powermock-api:powermock-api-mockito"){
project(":powermock-api:powermock-api-mockito") {
description = "PowerMock API for Mockito 1.+.."

sourceSets {
main {
compileClasspath = compileClasspath + configurations.provided;
runtimeClasspath = output + compileClasspath + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
}
test {
compileClasspath = compileClasspath + configurations.provided + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
}
}

dependencies {
compile(project(":powermock-api:powermock-api-mockito-common"))
compile("org.mockito:mockito-core:${mockito1Version}")
compile("org.mockito:mockito-core:${mockito1Version}") {
exclude group: 'net.bytebuddy', module: 'byte-buddy'
}

testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")

}
}

project(":powermock-api:powermock-api-mockito2"){
project(":powermock-api:powermock-api-mockito2") {
description = "PowerMock API for Mockito 2.+.."

sourceSets {
main {
compileClasspath = compileClasspath + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
}
test {
compileClasspath = compileClasspath + configurations.provided + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
runtimeClasspath = output + compileClasspath + configurations.provided
}
}

dependencies {
compile(project(":powermock-api:powermock-api-mockito-common"))
compile("org.mockito:mockito-core:${mockito2Version}")

testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
Expand All @@ -161,67 +165,67 @@ project(":powermock-api:powermock-api-mockito2"){
}
}

project(":powermock-classloading"){
jar{
project(":powermock-classloading") {
jar {
enabled = false
}
}

project(":powermock-classloading:powermock-classloading-base"){
project(":powermock-classloading:powermock-classloading-base") {
description = "Utilities for loading and executing classes."

dependencies {
compile(project(":powermock-api:powermock-api-support"))
compile(project(":powermock-reflect"))
compile(project(":powermock-core"))
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-classloading:powermock-classloading-objenesis"){
project(":powermock-classloading:powermock-classloading-objenesis") {
description = "Performs classloader deep-cloning using Objenesis."

dependencies {
compile(project(":powermock-classloading:powermock-classloading-base"))
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-classloading:powermock-classloading-xstream"){
project(":powermock-classloading:powermock-classloading-xstream") {
description = "Performs classloader deep-cloning using X-Stream."

dependencies {
compile(project(":powermock-classloading:powermock-classloading-base"))
compile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-modules"){
jar{
project(":powermock-modules") {
jar {
enabled = false
}
}

project(":powermock-modules:powermock-module-javaagent"){
project(":powermock-modules:powermock-module-javaagent") {
description = "PowerMock Java agent support."

dependencies {
compile(project(":powermock-core"))
testCompile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
testCompile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
Expand All @@ -240,66 +244,66 @@ project(":powermock-modules:powermock-module-javaagent"){
}
}

project(":powermock-modules:powermock-module-junit3"){
project(":powermock-modules:powermock-module-junit3") {
description = "PowerMock support module for JUnit 3.x."

dependencies {
compile(project(":powermock-core")){
exclude group:'junit', module:'junit'
compile(project(":powermock-core")) {
exclude group: 'junit', module: 'junit'
}
compile("junit:junit:3.8.2"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:3.8.2") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-modules:powermock-module-junit4-common"){
project(":powermock-modules:powermock-module-junit4-common") {
description = "PowerMock support module for all versions of JUnit 4.x."

dependencies {
compile(project(":powermock-reflect"))
compile(project(":powermock-core"))
compile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
compile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-modules:powermock-module-junit4"){
project(":powermock-modules:powermock-module-junit4") {
description = "PowerMock support module for JUnit 4.x."

dependencies {
compile(project(":powermock-modules:powermock-module-junit4-common"))
compile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
compile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
testCompile("org.easymock:easymock:${easymockVersion}")
}
}

project(":powermock-modules:powermock-module-junit4-legacy"){
project(":powermock-modules:powermock-module-junit4-legacy") {
description = "PowerMock support module for JUnit 4.0-4.3."

dependencies {
compile(project(":powermock-modules:powermock-module-junit4-common")){
exclude group:'junit', module:'junit'
compile(project(":powermock-modules:powermock-module-junit4-common")) {
exclude group: 'junit', module: 'junit'
}
compile("junit:junit:4.3"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:4.3") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
compile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}


project(":powermock-modules:powermock-module-junit4-rule"){
project(":powermock-modules:powermock-module-junit4-rule") {
description = "PowerMock support module for JUnit 4.x rules."

dependencies {
Expand All @@ -308,31 +312,31 @@ project(":powermock-modules:powermock-module-junit4-rule"){

provided(project(":powermock-classloading:powermock-classloading-base"))

compile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
compile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}


project(":powermock-modules:powermock-module-junit4-rule-agent"){
project(":powermock-modules:powermock-module-junit4-rule-agent") {
description = "PowerMock support module for JUnit 4.x rules with Java agent"

dependencies {
compile(project(":powermock-core"))
compile(project(":powermock-modules:powermock-module-javaagent"))

compile("junit:junit:${junitVersion}"){
exclude group:'org.hamcrest', module:'hamcrest-core'
compile("junit:junit:${junitVersion}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
compile("org.hamcrest:hamcrest-core:${hamcrestVersion}")
testCompile("org.assertj:assertj-core:${assertjVersion}")
}
}

project(":powermock-modules:powermock-module-testng-common"){
project(":powermock-modules:powermock-module-testng-common") {
description = "PowerMock module for TestNG. Common classes"

dependencies {
Expand All @@ -344,7 +348,7 @@ project(":powermock-modules:powermock-module-testng-common"){
}
}

project(":powermock-modules:powermock-module-testng"){
project(":powermock-modules:powermock-module-testng") {
description = "PowerMock module for TestNG."

dependencies {
Expand All @@ -356,7 +360,7 @@ project(":powermock-modules:powermock-module-testng"){
}
}

project(":powermock-modules:powermock-module-testng-agent"){
project(":powermock-modules:powermock-module-testng-agent") {
description = "PowerMock module for TestNG with using Javaagent."

dependencies {
Expand Down

0 comments on commit 560101a

Please sign in to comment.