Merge "Snap for 6373446 from e48cdc49d1ab5e26ac07138f0db7b685d8e41c84 to android10-tests-release" into android10-tests-release
diff --git a/src/com/android/tradefed/device/contentprovider/ContentProviderHandler.java b/src/com/android/tradefed/device/contentprovider/ContentProviderHandler.java
index b6babf9..33420fc 100644
--- a/src/com/android/tradefed/device/contentprovider/ContentProviderHandler.java
+++ b/src/com/android/tradefed/device/contentprovider/ContentProviderHandler.java
@@ -312,12 +312,17 @@
return true;
}
+ CLog.d("Received from content provider:\n%s", listCommandResult);
String[] listResult = listCommandResult.split("[\\r\\n]+");
for (String row : listResult) {
HashMap<String, String> columnValues = parseQueryResultRow(row);
boolean isDirectory = Boolean.valueOf(columnValues.get(COLUMN_DIRECTORY));
String name = columnValues.get(COLUMN_NAME);
+ if (name == null) {
+ CLog.w("Output from the content provider doesn't seem well formatted:\n%s", row);
+ return false;
+ }
String path = columnValues.get(COLUMN_ABSOLUTE_PATH);
File localChild = new File(localDir, name);
diff --git a/tests/src/com/android/tradefed/device/contentprovider/ContentProviderHandlerTest.java b/tests/src/com/android/tradefed/device/contentprovider/ContentProviderHandlerTest.java
index 88b0d45..1ab0c71 100644
--- a/tests/src/com/android/tradefed/device/contentprovider/ContentProviderHandlerTest.java
+++ b/tests/src/com/android/tradefed/device/contentprovider/ContentProviderHandlerTest.java
@@ -239,6 +239,19 @@
}
}
+ @Test
+ public void testPullDir_failedDevice() throws Exception {
+ File pullTo = FileUtil.createTempDir("content-provider-test");
+
+ doReturn("Something crashed").when(mMockDevice).executeShellCommand(anyString());
+
+ try {
+ assertFalse(mProvider.pullDir("path/somewhere", pullTo));
+ } finally {
+ FileUtil.recursiveDelete(pullTo);
+ }
+ }
+
/**
* Test {@link ContentProviderHandler#pullDir(String, File)} to pull a directory that contains
* one text file.