OSDN Git Service

Use 'dalvikvm' only to test dx.
authorJesse Wilson <jessewilson@google.com>
Fri, 18 Mar 2011 21:04:20 +0000 (14:04 -0700)
committerJesse Wilson <jessewilson@google.com>
Fri, 18 Mar 2011 21:04:20 +0000 (14:04 -0700)
Change-Id: I1fca7ce23e9b3706d75580c06956d49d79614fe6
http://b/4090053

dx/tests/115-merge/com/android/dx/merge/DexMergeTest.java
dx/tests/115-merge/run
dx/tests/116-leb128/run
dx/tests/117-modified-utf8/run
dx/tests/119-merge-conflict/run

index b256dd2..c6ffbdc 100644 (file)
@@ -17,7 +17,6 @@
 package com.android.dx.merge;
 
 import com.android.dx.io.DexBuffer;
-import dalvik.system.PathClassLoader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -156,14 +155,17 @@ public final class DexMergeTest extends TestCase {
         assertTrue(maxLength + " < " + maxExpectedLength, maxLength < maxExpectedLength);
     }
 
-    public ClassLoader mergeAndLoad(String dexAResource, String dexBResource) throws IOException {
+    public ClassLoader mergeAndLoad(String dexAResource, String dexBResource) throws Exception {
         DexBuffer dexA = resourceToDexBuffer(dexAResource);
         DexBuffer dexB = resourceToDexBuffer(dexBResource);
         DexBuffer merged = new DexMerger(dexA, dexB, CollisionPolicy.KEEP_FIRST).merge();
         File mergedDex = File.createTempFile("DexMergeTest", ".classes.dex");
         merged.writeTo(mergedDex);
         File mergedJar = dexToJar(mergedDex);
-        return new PathClassLoader(mergedJar.getPath(), getClass().getClassLoader());
+        // simplify the javac classpath by not depending directly on 'dalvik.system' classes
+        return (ClassLoader) Class.forName("dalvik.system.PathClassLoader")
+                .getConstructor(String.class, ClassLoader.class)
+                .newInstance(mergedJar.getPath(), getClass().getClassLoader());
     }
 
     private DexBuffer resourceToDexBuffer(String resource) throws IOException {
index d3d34e8..83e5b3d 100644 (file)
 # Find dx.jar from dx in the android dev tree
 prog=`which dx`
 progdir=`dirname "${prog}"`
+dxjar=$progdir/../framework/dx.jar
 
-javac testdata/*.java
+javac -cp $dxjar `find . -name "*.java"`
+dx --dex --output=test.jar com/android/dx/merge/* $dxjar
+
+# Build a resource .jar containing the .dex files to merge
 dx --dex --output=testdata/Annotated.dex testdata/Annotated*
 dx --dex --output=testdata/Basic.dex testdata/Basic*
 dx --dex --output=testdata/FillArrayData.dex testdata/FillArrayData*
@@ -26,9 +30,8 @@ dx --dex --output=testdata/StaticValues.dex testdata/StaticValues*
 dx --dex --output=testdata/TryCatchFinally.dex testdata/TryCatchFinally*
 jar cfM resources.jar testdata/*.dex
 
-vogar --classpath resources.jar \
-  --classpath $progdir/../framework/dx.jar \
-  com/android/dx/merge/DexMergeTest.java > unit-out.txt
+dalvik -classpath test.jar:resources.jar \
+  junit.textui.TestRunner com.android.dx.merge.DexMergeTest > unit-out.txt
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
index 1e729ed..5f36cd9 100644 (file)
 # Find dx.jar from dx in the android dev tree
 prog=`which dx`
 progdir=`dirname "${prog}"`
+dxjar=$progdir/../framework/dx.jar
 
-vogar --classpath $progdir/../framework/dx.jar \
-  com/android/dx/util/Leb128UtilsTest.java > unit-out.txt
+javac -cp $dxjar `find . -name "*.java"`
+java -classpath $dxjar:. junit.textui.TestRunner com.android.dx.util.Leb128UtilsTest > unit-out.txt
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
index a689991..a4c202e 100644 (file)
 # Find dx.jar from dx in the android dev tree
 prog=`which dx`
 progdir=`dirname "${prog}"`
+dxjar=$progdir/../framework/dx.jar
 
-vogar --classpath $progdir/../framework/dx.jar \
-  com/android/dx/util/Mutf8Test.java > unit-out.txt
+javac -cp $dxjar `find . -name "*.java"`
+java -classpath $dxjar:. junit.textui.TestRunner com.android.dx.util.Mutf8Test > unit-out.txt
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
index af5087d..28c152d 100644 (file)
 # Find dx.jar from dx in the android dev tree
 prog=`which dx`
 progdir=`dirname "${prog}"`
+dxjar=$progdir/../framework/dx.jar
 
-# Find dx.jar from dx in the android dev tree
-prog=`which dx`
-progdir=`dirname "${prog}"`
+javac -cp $dxjar `find . -name "*.java"`
+dx --dex --output=test.jar com/android/dx/merge/* $dxjar
 
-javac testdata/*.java
+# Build a resource .jar containing the .dex files to merge
 dx --dex --output=testdata/A.dex testdata/A.class
 dx --dex --output=testdata/B.dex testdata/B.class
 jar cfM resources.jar testdata/*.dex
 
-vogar --classpath resources.jar \
-  --classpath $progdir/../framework/dx.jar \
-  com/android/dx/merge/MergeConflictTest.java > unit-out.txt
+dalvik -classpath test.jar:resources.jar \
+  junit.textui.TestRunner com.android.dx.merge.MergeConflictTest > unit-out.txt
 
 if [ "$?" = "0" ]; then
     echo "Yay!"