diff options
author | Narayan Kamath <narayan@google.com> | 2012-08-14 06:13:05 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-14 06:13:05 -0700 |
commit | 8d9c64411f1fa44cdcb3c1fe0f424039c6f270ad (patch) | |
tree | 7e9f3eb700d8ed61381e658fdf68dfcfd2a0f2a6 | |
parent | 2f09bba3e848852d5167ab867ba71eb0f6e015dc (diff) | |
parent | e028ec166b5a270d0c330800d12a270494176fdf (diff) | |
download | littlemock-8d9c64411f1fa44cdcb3c1fe0f424039c6f270ad.tar.gz |
am e028ec16: Fix app cache dir guessing.
* commit 'e028ec166b5a270d0c330800d12a270494176fdf':
Fix app cache dir guessing.
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | src/com/google/testing/littlemock/AppDataDirGuesser.java | 19 | ||||
-rw-r--r-- | tests/com/google/testing/littlemock/AppDataDirGuesserTest.java | 9 |
3 files changed, 28 insertions, 3 deletions
@@ -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); |