summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2012-08-14 06:13:05 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-08-14 06:13:05 -0700
commit8d9c64411f1fa44cdcb3c1fe0f424039c6f270ad (patch)
tree7e9f3eb700d8ed61381e658fdf68dfcfd2a0f2a6
parent2f09bba3e848852d5167ab867ba71eb0f6e015dc (diff)
parente028ec166b5a270d0c330800d12a270494176fdf (diff)
downloadlittlemock-8d9c64411f1fa44cdcb3c1fe0f424039c6f270ad.tar.gz
am e028ec16: Fix app cache dir guessing.
* commit 'e028ec166b5a270d0c330800d12a270494176fdf': Fix app cache dir guessing.
-rw-r--r--README3
-rw-r--r--src/com/google/testing/littlemock/AppDataDirGuesser.java19
-rw-r--r--tests/com/google/testing/littlemock/AppDataDirGuesserTest.java9
3 files changed, 28 insertions, 3 deletions
diff --git a/README b/README
index 6ca0de4..86b8be6 100644
--- a/README
+++ b/README
@@ -12,5 +12,6 @@ Has a number of restrictions.
Can mock concrete classes, requires dexmaker.jar on classpath.
Local Modifications:
-No modifications.
+- Change to AppDataDirGuesser to handle the new class loader toString
+ format introduced in JB.
diff --git a/src/com/google/testing/littlemock/AppDataDirGuesser.java b/src/com/google/testing/littlemock/AppDataDirGuesser.java
index e661ed6..254ed7e 100644
--- a/src/com/google/testing/littlemock/AppDataDirGuesser.java
+++ b/src/com/google/testing/littlemock/AppDataDirGuesser.java
@@ -75,7 +75,7 @@ public class AppDataDirGuesser {
}
// Parsing toString() method: yuck. But no other way to get the path.
- // Strip out the bit between angle brackets, that's our path.
+ // Strip out the bit between square brackets, that's our path.
String result = classLoader.toString();
int index = result.lastIndexOf('[');
result = (index == -1) ? result : result.substring(index + 1);
@@ -86,7 +86,7 @@ public class AppDataDirGuesser {
// @VisibleForTesting
File[] guessPath(String input) {
List<File> results = new ArrayList<File>();
- for (String potential : input.split(":")) {
+ for (String potential : splitPathList(input)) {
if (!potential.startsWith("/data/app/")) {
continue;
}
@@ -110,10 +110,25 @@ public class AppDataDirGuesser {
}
}
}
+
return results.toArray(new File[results.size()]);
}
// @VisibleForTesting
+ static String[] splitPathList(String input) {
+ String trimmed = input;
+ if (input.startsWith("dexPath=")) {
+ int start = "dexPath=".length();
+ int end = input.indexOf(',');
+
+ trimmed = (end == -1) ? input.substring(start) :
+ input.substring(start, end);
+ }
+
+ return trimmed.split(":");
+ }
+
+ // @VisibleForTesting
boolean fileOrDirExists(File file) {
return file.exists();
}
diff --git a/tests/com/google/testing/littlemock/AppDataDirGuesserTest.java b/tests/com/google/testing/littlemock/AppDataDirGuesserTest.java
index 3ab38b2..191a608 100644
--- a/tests/com/google/testing/littlemock/AppDataDirGuesserTest.java
+++ b/tests/com/google/testing/littlemock/AppDataDirGuesserTest.java
@@ -67,6 +67,15 @@ public class AppDataDirGuesserTest extends TestCase {
.shouldGive("/data/data/com.google.android.voicesearch/cache");
}
+ public void testSplitPathList() {
+ final String[] expected = { "foo", "bar" };
+ assertTrue(Arrays.equals(expected, AppDataDirGuesser.splitPathList("foo:bar")));
+ assertTrue(Arrays.equals(expected,
+ AppDataDirGuesser.splitPathList("dexPath=foo:bar")));
+ assertTrue(Arrays.equals(expected,
+ AppDataDirGuesser.splitPathList("dexPath=foo:bar,bazPath=bar:bar2")));
+ }
+
private interface TestCondition {
TestCondition withNonWriteable(String... files);
void shouldGive(String... files);