From 3279a8cd4b30a220693385b802e59948f967ebc3 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sun, 1 Mar 2015 21:56:40 -0800 Subject: [PATCH] Simplify how the accessorTest is built and run --- dexlib2/build.gradle | 72 +++++++------------ .../java/org/jf/dexlib2/AccessorTest.java | 0 2 files changed, 26 insertions(+), 46 deletions(-) rename dexlib2/src/{accessorTest => test}/java/org/jf/dexlib2/AccessorTest.java (100%) diff --git a/dexlib2/build.gradle b/dexlib2/build.gradle index d39c5db9..9027132e 100644 --- a/dexlib2/build.gradle +++ b/dexlib2/build.gradle @@ -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 { diff --git a/dexlib2/src/accessorTest/java/org/jf/dexlib2/AccessorTest.java b/dexlib2/src/test/java/org/jf/dexlib2/AccessorTest.java similarity index 100% rename from dexlib2/src/accessorTest/java/org/jf/dexlib2/AccessorTest.java rename to dexlib2/src/test/java/org/jf/dexlib2/AccessorTest.java