Simplify how the accessorTest is built and run

This commit is contained in:
Ben Gruver 2015-03-01 21:56:40 -08:00
parent 57bd527d43
commit 3279a8cd4b
2 changed files with 26 additions and 46 deletions

View File

@ -46,37 +46,6 @@ dependencies {
ext.testAccessorOutputDir = file("${buildDir}/generated-accessor-test-sources")
ext.testAccessorOutputFile = file("${buildDir}/generated-accessor-test-sources/org/jf/dexlib2/AccessorTypes.java")
sourceSets {
// The sources for building the test dex file for the accessor test
accessorTestDex {
java {
srcDir testAccessorOutputDir
}
}
// The sources for the accessor test itself
accessorTest {
java {
compileClasspath += main.output
runtimeClasspath += main.output
}
}
}
configurations {
accessorTestDexCompile.extendsFrom compile
accessorTestDexRuntime.extendsFrom runtime
accessorTestCompile.extendsFrom testCompile
accessorTestRuntime.extendsFrom testRuntime
}
idea {
module {
testSourceDirs += sourceSets.accessorTest.java.srcDirs
}
}
// You must manually execute this task to regenerate SyntheticAccessorFSM.java, after modifying the ragel file
// e.g. ./gradlew ragel
task ragel(type:Exec) {
@ -87,36 +56,47 @@ task ragel(type:Exec) {
}
task generateAccessorTestSource(type: JavaExec) {
outputs.dir file(testAccessorOutputDir)
doFirst {
file(testAccessorOutputFile.parent).mkdirs()
}
mkdir(file(testAccessorOutputFile).parent)
outputs.dir file(testAccessorOutputDir)
sourceSets['test'].java.srcDir file(testAccessorOutputDir)
classpath = configurations.accessorTestGenerator
main = 'org.jf.dexlib2.AccessorTestGenerator'
args testAccessorOutputFile
}
compileAccessorTestDexJava.dependsOn(generateAccessorTestSource)
compileTestJava.dependsOn generateAccessorTestSource
task generateAccessorTestDex(type: Exec, dependsOn: compileAccessorTestDexJava) {
def outputDex = file("${sourceSets.accessorTest.output.resourcesDir}/accessorTest.dex")
mkdir(outputDex.parent)
task generateAccessorTestDex(type: Exec, dependsOn: compileTestJava) {
def outputDex = file(new File(sourceSets.test.output.resourcesDir, 'accessorTest.dex'))
inputs.dir project.sourceSets.accessorTestDex.output.classesDir
doFirst {
file(outputDex.parent).mkdirs()
}
inputs.dir(project.sourceSets.test.output.classesDir)
outputs.file outputDex
sourceSets.accessorTest.resources
workingDir project.sourceSets.accessorTestDex.output.classesDir
workingDir project.sourceSets.test.output.classesDir
executable 'dx'
args '--dex'
args '--no-strict'
args "--output=${outputDex}"
args '.'
}
task accessorTest(type: Test, dependsOn: generateAccessorTestDex) {
testClassesDir = project.sourceSets.accessorTest.output.classesDir
classpath = project.sourceSets.accessorTest.runtimeClasspath
doFirst {
// this has to be done in doFirst, so that the generated classes will be available.
// otherwise, it the tree will be populated while the build is being configured,
// which is before the compileTestJava has run
fileTree(project.sourceSets.test.output.classesDir) {
include 'org/jf/dexlib2/AccessorTypes*.class'
}.each { File file ->
args file
}
}
}
test.dependsOn generateAccessorTestDex
uploadArchives {
repositories.mavenDeployer {