Add a test for "adb pull" error reporting.
Bug: http://b/6205106
Change-Id: I2093c3d451361d48056b85c8017acb032a3ff478
diff --git a/python-packages/adb/test_device.py b/python-packages/adb/test_device.py
index 5d11ddc..ed3467c 100644
--- a/python-packages/adb/test_device.py
+++ b/python-packages/adb/test_device.py
@@ -54,6 +54,23 @@
return wrapper
+def requires_non_root(func):
+ def wrapper(self, *args):
+ was_root = self.device.shell(['id', '-un'])[0].strip() == 'root'
+ if was_root:
+ self.device.unroot()
+ self.device.wait()
+
+ try:
+ func(self, *args)
+ finally:
+ if was_root:
+ self.device.root()
+ self.device.wait()
+
+ return wrapper
+
+
class GetDeviceTest(unittest.TestCase):
def setUp(self):
self.android_serial = os.getenv('ANDROID_SERIAL')
@@ -496,6 +513,20 @@
self.assertEqual(checksum, host_md5)
os.remove(tmp_write.name)
+ @requires_non_root
+ def test_pull_error_reporting(self):
+ self.device.shell(['touch', self.DEVICE_TEMP_FILE])
+ self.device.shell(['chmod', 'a-rwx', self.DEVICE_TEMP_FILE])
+
+ try:
+ output = self.device.pull(remote=self.DEVICE_TEMP_FILE, local='x')
+ except subprocess.CalledProcessError as e:
+ output = e.output
+
+ self.assertIn('Permission denied', output)
+
+ self.device.shell(['rm', '-f', self.DEVICE_TEMP_FILE])
+
def test_pull(self):
"""Pull a randomly generated file from specified device."""
kbytes = 512