summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2019-01-17 16:16:35 +0100
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2019-01-17 18:51:51 +0100
commit33072ee08071970ba27dd4fd2ba6a0bb4e3dd087 (patch)
treee00c06ffd6fa880fbab41f5892645e477bfef5b5
parentdd3027c9b851e92b872caaccfaf3e4e602f14516 (diff)
downloadqtlocation-mapboxgl-33072ee08071970ba27dd4fd2ba6a0bb4e3dd087.tar.gz
[android] bring back static code block removal for unit testsupstream/lp-remove-static-code-blocks
-rw-r--r--platform/android/MapboxGLAndroidSDK/build.gradle1
-rw-r--r--platform/android/gradle/gradle-tests-staticblockremover.gradle64
2 files changed, 65 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle
index 25008de919..ae81203fc3 100644
--- a/platform/android/MapboxGLAndroidSDK/build.gradle
+++ b/platform/android/MapboxGLAndroidSDK/build.gradle
@@ -164,4 +164,5 @@ configurations {
apply from: "${rootDir}/gradle/gradle-javadoc.gradle"
apply from: "${rootDir}/gradle/gradle-publish.gradle"
apply from: "${rootDir}/gradle/gradle-checkstyle.gradle"
+apply from: "${rootDir}/gradle/gradle-tests-staticblockremover.gradle"
apply from: "${rootDir}/gradle/gradle-dependencies-graph.gradle" \ No newline at end of file
diff --git a/platform/android/gradle/gradle-tests-staticblockremover.gradle b/platform/android/gradle/gradle-tests-staticblockremover.gradle
new file mode 100644
index 0000000000..050a3b784c
--- /dev/null
+++ b/platform/android/gradle/gradle-tests-staticblockremover.gradle
@@ -0,0 +1,64 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ }
+
+ dependencies {
+ classpath 'com.darylteo.gradle:javassist-plugin:0.4.1'
+ }
+}
+
+import com.darylteo.gradle.javassist.tasks.TransformationTask
+import com.darylteo.gradle.javassist.transformers.ClassTransformer
+import javassist.CtClass
+import javassist.CtConstructor
+
+class StaticBlockRemover extends ClassTransformer {
+
+ private static final SOURCE = "com.mapbox.mapboxsdk.style.sources.Source";
+ private static final LAYER = "com.mapbox.mapboxsdk.style.layers.Layer";
+ private static
+ final NATIVE_CONNECTIVITY_LISTENER = "com.mapbox.mapboxsdk.net.NativeConnectivityListener";
+ private static final OFFLINE_MANAGER = "com.mapbox.mapboxsdk.offline.OfflineManager";
+ private static final OFFLINE_REGION = "com.mapbox.mapboxsdk.offline.OfflineRegion";
+ private static final List<String> excludes = new ArrayList<>();
+
+ static {
+ excludes.add(SOURCE)
+ excludes.add(LAYER)
+ excludes.add(NATIVE_CONNECTIVITY_LISTENER)
+ excludes.add(OFFLINE_MANAGER)
+ excludes.add(OFFLINE_REGION)
+ }
+
+ public void applyTransformations(CtClass clazz) throws Exception {
+ if (shouldFilter(clazz)) {
+ CtConstructor constructor = clazz.getClassInitializer()
+ if (constructor != null) {
+ clazz.removeConstructor(constructor)
+ }
+ }
+ }
+
+ public boolean shouldFilter(CtClass clazz) {
+ return hasAStaticBlock(clazz);
+ }
+
+ private boolean hasAStaticBlock(CtClass clazz) {
+ String name = clazz.getName();
+ return excludes.contains(name);
+ }
+}
+
+task removeStatic(type: TransformationTask) {
+ // TODO Find a better way to get output classes path
+ String fromToDirPath = buildDir.getAbsolutePath() + "/intermediates/classes/debug"
+ from fromToDirPath
+ transformation = new StaticBlockRemover()
+ into fromToDirPath
+}
+
+afterEvaluate {
+ compileDebugUnitTestSources.dependsOn(removeStatic)
+} \ No newline at end of file