From a7aa6e2b1d39340ad60cb66e22ec1db3f0951953 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 23 Oct 2015 21:55:31 -0700 Subject: [PATCH] Add a test for "adb pull" error reporting. Bug: http://b/6205106 Change-Id: I2093c3d451361d48056b85c8017acb032a3ff478 --- python-packages/adb/test_device.py | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/python-packages/adb/test_device.py b/python-packages/adb/test_device.py index 5d11ddc20..ed3467c7c 100644 --- a/python-packages/adb/test_device.py +++ b/python-packages/adb/test_device.py @@ -54,6 +54,23 @@ def requires_root(func): 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 @@ class FileOperationsTest(DeviceTest): 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