aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk17
-rw-r--r--AndroidManifest.xml12
-rw-r--r--dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java13
-rw-r--r--dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java4
4 files changed, 44 insertions, 2 deletions
diff --git a/Android.mk b/Android.mk
index 15aaf40..76d69b2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -36,7 +36,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE := dexmaker-tests
LOCAL_SDK_VERSION := 10
LOCAL_SRC_FILES := $(call all-java-files-under, dexmaker/src/test/java)
-LOCAL_STATIC_JAVA_LIBRARIES := dexmaker
+LOCAL_STATIC_JAVA_LIBRARIES := dexmaker android-support-test
include $(BUILD_STATIC_JAVA_LIBRARY)
# Build Dexmaker's MockMaker, a plugin to Mockito
@@ -47,3 +47,18 @@ LOCAL_SRC_FILES := $(call all-java-files-under, mockito/src/main/java)
LOCAL_JAVA_RESOURCE_DIRS := mockito/src/main/resources
LOCAL_JAVA_LIBRARIES := dexmaker mockito-api
include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# Build a test APK
+#
+# Run the tests as follows:
+# m -j32 DexmakerTests && \
+ am install -r -g $OUT/data/app/DexmakerTests/DexmakerTests.apk \
+ adb shell am instrument -w com.google.dexmaker.tests
+#
+include $(CLEAR_VARS)
+LOCAL_MODULE_TAGS := tests
+LOCAL_PACKAGE_NAME := DexmakerTests
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ dexmaker-tests
+
+include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..2c88308
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,12 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.google.dexmaker.tests" >
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.google.dexmaker.tests"
+ android:label="Dexmaker Tests"/>
+
+</manifest>
diff --git a/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java b/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java
index 2b7a27b..36e6c00 100644
--- a/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java
+++ b/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java
@@ -16,6 +16,7 @@
package com.google.dexmaker;
+import android.support.test.InstrumentationRegistry;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
@@ -2007,6 +2008,18 @@ public final class DexMakerTest extends TestCase {
}
public static File getDataDirectory() {
+ // Assume that this is being run as an APK by AndroidJUnitRunner and so get the directory
+ // where the APK can create files.
+ try {
+ // This will fail on Vogar as it will not register an Instrumentation.
+ return InstrumentationRegistry.getContext().getFilesDir();
+ } catch (IllegalStateException t) {
+ // Drop through to an alternate mechanism for getting a directory that works on Vogar.
+ if (!t.getMessage().contains("No instrumentation registered!")) {
+ // The exception wasn't expected.
+ throw t;
+ }
+ }
String envVariable = "ANDROID_DATA";
String defaultLoc = "/data";
String path = System.getenv(envVariable);
diff --git a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
index a959203..9c4cffe 100644
--- a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
+++ b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
@@ -37,7 +37,9 @@ public class ProxyBuilderTest extends TestCase {
public void setUp() throws Exception {
super.setUp();
- versionedDxDir.mkdirs();
+ if (!versionedDxDir.exists() && !versionedDxDir.mkdirs()) {
+ throw new IOException("Could not create " + versionedDxDir);
+ }
clearVersionedDxDir();
getGeneratedProxyClasses().clear();
}