Repository: incubator-weex
Updated Branches:
  refs/heads/0.16-dev ff13f51d5 -> 3f32c552d


* [android] add jacoco 4 gradle config


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fcc7eec2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fcc7eec2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fcc7eec2

Branch: refs/heads/0.16-dev
Commit: fcc7eec2ca8766d53a61f45430d7f0235ac2551c
Parents: 781296f
Author: atomtong <tong_huab...@qq.com>
Authored: Mon Aug 28 16:22:45 2017 +0800
Committer: atomtong <tong_huab...@qq.com>
Committed: Mon Aug 28 16:22:45 2017 +0800

----------------------------------------------------------------------
 android/build.gradle                            |   4 +-
 .../gradle/wrapper/gradle-wrapper.properties    |   2 +-
 android/jacoco.gradle                           |  45 ++++++++
 android/jacoco/android-jacoco-the-missing.jar   | Bin 0 -> 2214869 bytes
 android/jacoco/coverage.ec                      | Bin 0 -> 63 bytes
 android/playground/app/build.gradle             |  11 +-
 .../playground/app/src/main/AndroidManifest.xml |   8 ++
 .../java/com/alibaba/weex/WXPageActivity.java   |   4 +
 .../alibaba/weex/util/CoverageDataDumper.java   |  36 ++++++
 .../alibaba/weex/util/JacocoCodeCoverage.java   | 109 +++++++++++++++++++
 android/sdk/build.gradle                        |  13 ++-
 android/sdk/coverage.ec                         | Bin 0 -> 63 bytes
 android/weex_debug/build.gradle                 |   2 +-
 13 files changed, 226 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/build.gradle
----------------------------------------------------------------------
diff --git a/android/build.gradle b/android/build.gradle
index 28cf76e..04cbb67 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.1.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -29,7 +29,7 @@ subprojects {
             jcenter()
         }
         dependencies {
-            classpath 'com.android.tools.build:gradle:2.1.3'
+            classpath 'com.android.tools.build:gradle:2.3.3'
         }
     }
     ext {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/android/gradle/wrapper/gradle-wrapper.properties 
b/android/gradle/wrapper/gradle-wrapper.properties
index d795868..2af1c24 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/jacoco.gradle
----------------------------------------------------------------------
diff --git a/android/jacoco.gradle b/android/jacoco.gradle
new file mode 100644
index 0000000..e8ea251
--- /dev/null
+++ b/android/jacoco.gradle
@@ -0,0 +1,45 @@
+apply plugin: 'jacoco'
+
+jacoco {
+    toolVersion = "0.7.9+"
+}
+
+//def sdk_path = '../../sdk'
+//println(sdk_path)
+
+def coverageSourceDirs = [
+        '../app/src/main/java',
+        '../../../android/sdk/src/main/java'
+
+]
+
+task jacocoTestReport(type: JacocoReport) {
+    group = "Reporting"
+    description = "Generate Jacoco coverage reports after running tests."
+    reports {
+        xml.enabled = true
+        html.enabled = true
+    }
+    classDirectories = fileTree(//"enter code here"
+            dir: '../../sdk/build/intermediates/classes',
+            excludes: ['**/R*.class',
+                       '**/*$InjectAdapter.class',
+                       '**/*$ModuleAdapter.class',
+                       '**/*$ViewInjector*.class'
+            ])
+    sourceDirectories = files(coverageSourceDirs)
+    File configFile = file('../../../android/sdk/src/main/java')
+    configFile = file(configFile.absolutePath)
+    println configFile.path
+
+
+
+    executionData = 
files("$buildDir/outputs/code-coverage/connected/coverage.exec")
+    doFirst {
+        new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
+            if (file.name.contains('$$')) {
+                file.renameTo(file.path.replace('$$', '$'))
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/jacoco/android-jacoco-the-missing.jar
----------------------------------------------------------------------
diff --git a/android/jacoco/android-jacoco-the-missing.jar 
b/android/jacoco/android-jacoco-the-missing.jar
new file mode 100644
index 0000000..59b821c
Binary files /dev/null and b/android/jacoco/android-jacoco-the-missing.jar 
differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/jacoco/coverage.ec
----------------------------------------------------------------------
diff --git a/android/jacoco/coverage.ec b/android/jacoco/coverage.ec
new file mode 100644
index 0000000..cc4c834
Binary files /dev/null and b/android/jacoco/coverage.ec differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/playground/app/build.gradle
----------------------------------------------------------------------
diff --git a/android/playground/app/build.gradle 
b/android/playground/app/build.gradle
index bc50f70..073ad4d 100755
--- a/android/playground/app/build.gradle
+++ b/android/playground/app/build.gradle
@@ -1,4 +1,11 @@
 apply plugin: 'com.android.application'
+apply from: '../../jacoco.gradle'
+
+//apply plugin: 'jacoco'
+//
+//jacoco {
+//    toolVersion = "0.7.9+"
+//}
 
 android {
     compileSdkVersion project.compileSdkVersion
@@ -35,7 +42,7 @@ android {
     }
     buildTypes {
         debug {
-            testCoverageEnabled false
+            testCoverageEnabled true
         }
     }
     sourceSets {
@@ -106,4 +113,6 @@ dependencies {
     compile 
'com.taobao.android.weex_inspection:urlconnection_interceptor:1.0.0'
     compile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
     compile 'com.taobao.android:weex_inspector:0.11.0'
+//    compile group: 'org.jruby', name: 'jruby', version: '1.4.1+'
+    compile 'org.jacoco:org.jacoco.agent:0.7.9'
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/playground/app/src/main/AndroidManifest.xml
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/AndroidManifest.xml 
b/android/playground/app/src/main/AndroidManifest.xml
index dcc0aac..2809e11 100755
--- a/android/playground/app/src/main/AndroidManifest.xml
+++ b/android/playground/app/src/main/AndroidManifest.xml
@@ -47,6 +47,14 @@ under the License.
             tools:overrideLibrary="com.taobao.android.dexposed">
         <uses-library android:name="android.test.runner"/>
 
+        <receiver
+            android:name=".util.CoverageDataDumper"
+            tools:ignore="ExportedReceiver">
+            <intent-filter>
+                <action android:name="com.taobao.weex.DUMP_COVERAGE_DATA"/>
+            </intent-filter>
+        </receiver>
+
         <activity
                 android:name=".SplashActivity"
                 android:configChanges="orientation|keyboardHidden|screenSize"

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java 
b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
index fe5994d..dd303b5 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
@@ -53,6 +53,7 @@ import com.alibaba.weex.https.HotRefreshManager;
 import com.alibaba.weex.https.WXHttpManager;
 import com.alibaba.weex.https.WXHttpTask;
 import com.alibaba.weex.https.WXRequestListener;
+import com.alibaba.weex.util.JacocoCodeCoverage;
 import com.taobao.weex.IWXRenderListener;
 import com.taobao.weex.RenderContainer;
 import com.taobao.weex.WXSDKEngine;
@@ -319,6 +320,9 @@ public class WXPageActivity extends WXBaseActivity 
implements IWXRenderListener,
   @Override
   protected void onDestroy() {
     super.onDestroy();
+       //jacoco code coverage
+       JacocoCodeCoverage.dumpCodeCoverageByJacoco(getApplicationContext());
+
     if (mInstance != null) {
       mInstance.onActivityDestroy();
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java
 
b/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java
new file mode 100644
index 0000000..adc0476
--- /dev/null
+++ 
b/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.alibaba.weex.util;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.taobao.weex.utils.WXLogUtils;
+
+import java.io.File;
+
+public class CoverageDataDumper extends BroadcastReceiver {
+  @Override
+  public void onReceive(Context context, Intent intent) {
+//     JacocoCodeCoverage.dumpCodeCoverage(context);
+       JacocoCodeCoverage.dumpCodeCoverageByJacoco(context);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java
 
b/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java
new file mode 100644
index 0000000..faef7bb
--- /dev/null
+++ 
b/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.alibaba.weex.util;
+
+import android.content.Context;
+import com.taobao.weex.utils.WXLogUtils;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+
+public class JacocoCodeCoverage {
+  public static final String TAG = "CoverageDataDumper";
+
+  public static void dumpCodeCoverage(Context context){
+
+       WXLogUtils.d( TAG, "CoverageDataDumper BroadcastReceiver " );
+
+       try {
+         Class
+                         .forName( "com.vladium.emma.rt.RT" )
+                         .getMethod( "dumpCoverageData", File.class, 
boolean.class, boolean.class )
+                         .invoke( null,
+                                         new File(context.getExternalFilesDir( 
null ) + "/coverage.ec" ),
+                                         true, // merge
+                                         false // stopDataCollection
+                         );
+         WXLogUtils.d( TAG, "generateCoverageReport: ok! " +
+                         "file in [Android/data/com.alibaba.weex/files]" );
+       }
+
+       catch ( Exception e ) {
+         WXLogUtils.e( TAG, e );
+       }
+  }
+
+  public static void dumpCodeCoverageByJacoco(Context context){
+
+       WXLogUtils.d(TAG, "generateCoverageReport()");
+
+       java.io.File coverageFile = new File(context.getExternalFilesDir( null 
) + "/coverage.ec");
+       OutputStream out = null;
+       // We may use this if we want to avoid refecltion and we include
+       // emma.jar
+       //RT.dumpCoverageData(coverageFile, false, false);
+       // Use reflection to call emma dump coverage method, to avoid
+       // always statically compiling against emma jar
+       try {
+         Object agent = Class.forName("org.jacoco.agent.rt.RT")
+                         .getMethod("getAgent")
+                         .invoke(null);
+         out = new FileOutputStream(coverageFile,false);
+         out.write((byte[]) agent.getClass().getMethod("getExecutionData", 
boolean.class)
+                         .invoke(agent, false));
+         WXLogUtils.d( TAG, "generateCoverageReport: ok! " +
+                         "file in [Android/data/com.alibaba.weex/files]" );
+
+       } catch (ClassNotFoundException e) {
+         reportJacocoError(e);
+       } catch (SecurityException e) {
+         reportJacocoError(e);
+       } catch (NoSuchMethodException e) {
+         reportJacocoError(e);
+       } catch (IllegalArgumentException e) {
+         reportJacocoError(e);
+       } catch (IllegalAccessException e) {
+         reportJacocoError(e);
+       } catch (InvocationTargetException e) {
+         reportJacocoError(e);
+       } catch (FileNotFoundException e){
+         reportJacocoError(e);
+       } catch (IOException e) {
+         reportJacocoError(e);
+       } finally {
+         if (out != null) {
+               try {
+                 out.close();
+               } catch (IOException e) {
+                 reportJacocoError(e);
+               }
+         }
+       }
+  }
+
+  private static void reportJacocoError(Exception e) {
+       WXLogUtils.e(TAG, e.toString());
+  }
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/sdk/build.gradle
----------------------------------------------------------------------
diff --git a/android/sdk/build.gradle b/android/sdk/build.gradle
index 0be69fb..a586241 100755
--- a/android/sdk/build.gradle
+++ b/android/sdk/build.gradle
@@ -4,7 +4,7 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.7.3'
+//        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.7.3'
         classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.5.0'
     }
 }
@@ -15,9 +15,16 @@ plugins {
 
 apply plugin: 'com.android.library'
 apply plugin: 'checkstyle'
-apply plugin: 'com.getkeepsafe.dexcount'
+apply from: '../jacoco.gradle'
 
-ext.disableCov = project.hasProperty('disableCov') ? 
project.getProperty('disableCov') : 'false'
+//apply plugin: 'com.getkeepsafe.dexcount'
+//apply plugin: 'jacoco'
+//
+//jacoco {
+//    toolVersion = "0.7.9+"
+//}
+
+ext.disableCov = project.hasProperty('disableCov') ? 
project.getProperty('disableCov') : 'true'
 if(!disableCov.toBoolean()){
     apply plugin: 'com.vanniktech.android.junit.jacoco'
     junitJacoco {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/sdk/coverage.ec
----------------------------------------------------------------------
diff --git a/android/sdk/coverage.ec b/android/sdk/coverage.ec
new file mode 100644
index 0000000..cc4c834
Binary files /dev/null and b/android/sdk/coverage.ec differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fcc7eec2/android/weex_debug/build.gradle
----------------------------------------------------------------------
diff --git a/android/weex_debug/build.gradle b/android/weex_debug/build.gradle
index 32b59ab..2db7371 100644
--- a/android/weex_debug/build.gradle
+++ b/android/weex_debug/build.gradle
@@ -21,7 +21,7 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
         }
         debug {
-            testCoverageEnabled true
+            testCoverageEnabled false
         }
     }
 }

Reply via email to