| Index: build/android/pylib/device/device_utils_test.py
|
| diff --git a/build/android/pylib/device/device_utils_test.py b/build/android/pylib/device/device_utils_test.py
|
| index 16699adba1b6e39a531ef4454e70f45ec8639676..5f35a356da08d863a415b81382f323d8bf0e6136 100755
|
| --- a/build/android/pylib/device/device_utils_test.py
|
| +++ b/build/android/pylib/device/device_utils_test.py
|
| @@ -103,85 +103,6 @@ class _PatchedFunction(object):
|
| self.mocked = mocked
|
|
|
|
|
| -class MockFileSystem(object):
|
| -
|
| - @staticmethod
|
| - def osStatResult(
|
| - st_mode=None, st_ino=None, st_dev=None, st_nlink=None, st_uid=None,
|
| - st_gid=None, st_size=None, st_atime=None, st_mtime=None, st_ctime=None):
|
| - MockOSStatResult = collections.namedtuple('MockOSStatResult', [
|
| - 'st_mode', 'st_ino', 'st_dev', 'st_nlink', 'st_uid', 'st_gid',
|
| - 'st_size', 'st_atime', 'st_mtime', 'st_ctime'])
|
| - return MockOSStatResult(st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid,
|
| - st_size, st_atime, st_mtime, st_ctime)
|
| -
|
| - MOCKED_FUNCTIONS = [
|
| - ('os.listdir', []),
|
| - ('os.path.abspath', ''),
|
| - ('os.path.dirname', ''),
|
| - ('os.path.exists', False),
|
| - ('os.path.getsize', 0),
|
| - ('os.path.isdir', False),
|
| - ('os.stat', osStatResult.__func__()),
|
| - ('os.walk', []),
|
| - ]
|
| -
|
| - def _get(self, mocked, path, default_val):
|
| - if self._verbose:
|
| - logging.debug('%s(%s)' % (mocked, path))
|
| - return (self.mock_file_info[path][mocked]
|
| - if path in self.mock_file_info
|
| - else default_val)
|
| -
|
| - def _patched(self, target, default_val=None):
|
| - r = lambda f: self._get(target, f, default_val)
|
| - return _PatchedFunction(patched=mock.patch(target, side_effect=r))
|
| -
|
| - def __init__(self, verbose=False):
|
| - self.mock_file_info = {}
|
| - self._patched_functions = [
|
| - self._patched(m, d) for m, d in type(self).MOCKED_FUNCTIONS]
|
| - self._verbose = verbose
|
| -
|
| - def addMockFile(self, path, **kw):
|
| - self._addMockThing(path, False, **kw)
|
| -
|
| - def addMockDirectory(self, path, **kw):
|
| - self._addMockThing(path, True, **kw)
|
| -
|
| - def _addMockThing(self, path, is_dir, listdir=None, size=0, stat=None,
|
| - walk=None):
|
| - if listdir is None:
|
| - listdir = []
|
| - if stat is None:
|
| - stat = self.osStatResult()
|
| - if walk is None:
|
| - walk = []
|
| -
|
| - dirname = os.sep.join(path.rstrip(os.sep).split(os.sep)[:-1])
|
| - if dirname and not dirname in self.mock_file_info:
|
| - self._addMockThing(dirname, True)
|
| -
|
| - self.mock_file_info[path] = {
|
| - 'os.listdir': listdir,
|
| - 'os.path.abspath': path,
|
| - 'os.path.dirname': dirname,
|
| - 'os.path.exists': True,
|
| - 'os.path.isdir': is_dir,
|
| - 'os.path.getsize': size,
|
| - 'os.stat': stat,
|
| - 'os.walk': walk,
|
| - }
|
| -
|
| - def __enter__(self):
|
| - for p in self._patched_functions:
|
| - p.mocked = p.patched.__enter__()
|
| -
|
| - def __exit__(self, exc_type, exc_val, exc_tb):
|
| - for p in self._patched_functions:
|
| - p.patched.__exit__()
|
| -
|
| -
|
| class DeviceUtilsOldImplTest(unittest.TestCase):
|
|
|
| class AndroidCommandsCalls(object):
|
| @@ -737,13 +658,13 @@ class DeviceUtilsKillAllTest(DeviceUtilsNewImplTest):
|
| self.device.KillAll('some.process', signum=signal.SIGTERM))
|
|
|
|
|
| -class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| +class DeviceUtilsStartActivityTest(DeviceUtilsNewImplTest):
|
|
|
| def testStartActivity_actionOnly(self):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -751,10 +672,10 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -762,10 +683,10 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Error: Failed to start test activity'):
|
| with self.assertRaises(device_errors.CommandFailedError):
|
| self.device.StartActivity(test_intent)
|
| @@ -774,11 +695,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-W "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-W '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent, blocking=True)
|
|
|
| @@ -787,27 +708,26 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| category='android.intent.category.HOME')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-c android.intent.category.HOME "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-c android.intent.category.HOME '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| def testStartActivity_withMultipleCategories(self):
|
| - # The new implementation will start the activity with all provided
|
| - # categories. The old one only uses the first category.
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| category=['android.intent.category.HOME',
|
| 'android.intent.category.BROWSABLE'])
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-c android.intent.category.HOME "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-c android.intent.category.HOME '
|
| + '-c android.intent.category.BROWSABLE '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -816,11 +736,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| data='http://www.google.com/')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "-d \"http://www.google.com/\"'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-d http://www.google.com/ '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -829,11 +749,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| extras={'foo': 'test'})
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "--es foo test'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main '
|
| + '--es foo test'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -842,11 +762,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| extras={'foo': True})
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "--ez foo True'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main '
|
| + '--ez foo True'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -855,11 +775,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| extras={'foo': 123})
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "--ei foo 123'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main '
|
| + '--ei foo 123'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -867,11 +787,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "--start-profiler test_trace_file.out'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '--start-profiler test_trace_file.out '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent,
|
| trace_file_name='test_trace_file.out')
|
| @@ -880,11 +800,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| test_intent = intent.Intent(action='android.intent.action.VIEW',
|
| package='this.is.a.test.package',
|
| activity='.Main')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-S "
|
| - "-n this.is.a.test.package/.Main'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-S '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent, force_stop=True)
|
|
|
| @@ -893,11 +813,11 @@ class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest):
|
| package='this.is.a.test.package',
|
| activity='.Main',
|
| flags='0x10000000')
|
| - with self.assertCalls(
|
| - "adb -s 0123456789abcdef shell 'am start "
|
| - "-a android.intent.action.VIEW "
|
| - "-n this.is.a.test.package/.Main "
|
| - "-f 0x10000000'",
|
| + with self.assertCall(
|
| + self.call.adb.Shell('am start '
|
| + '-a android.intent.action.VIEW '
|
| + '-n this.is.a.test.package/.Main '
|
| + '-f 0x10000000'),
|
| 'Starting: Intent { act=android.intent.action.VIEW }'):
|
| self.device.StartActivity(test_intent)
|
|
|
| @@ -958,7 +878,7 @@ class DeviceUtilsBroadcastIntentTest(DeviceUtilsNewImplTest):
|
| extras={'foo': 'bar value'})
|
| with self.assertCall(
|
| self.call.adb.Shell(
|
| - "am broadcast -a test.package.with.an.INTENT -e foo 'bar value'"),
|
| + "am broadcast -a test.package.with.an.INTENT --es foo 'bar value'"),
|
| 'Broadcasting: Intent { act=test.package.with.an.INTENT } '):
|
| self.device.BroadcastIntent(test_intent)
|
|
|
| @@ -967,7 +887,7 @@ class DeviceUtilsBroadcastIntentTest(DeviceUtilsNewImplTest):
|
| extras={'foo': None})
|
| with self.assertCall(
|
| self.call.adb.Shell(
|
| - 'am broadcast -a test.package.with.an.INTENT -e foo'),
|
| + 'am broadcast -a test.package.with.an.INTENT --esn foo'),
|
| 'Broadcasting: Intent { act=test.package.with.an.INTENT } '):
|
| self.device.BroadcastIntent(test_intent)
|
|
|
| @@ -1445,28 +1365,18 @@ class DeviceUtilsGetPidsTest(DeviceUtilsNewImplTest):
|
| self.device.GetPids('exact.match'))
|
|
|
|
|
| -class DeviceUtilsTakeScreenshotTest(DeviceUtilsOldImplTest):
|
| +class DeviceUtilsTakeScreenshotTest(DeviceUtilsNewImplTest):
|
|
|
| def testTakeScreenshot_fileNameProvided(self):
|
| - mock_fs = MockFileSystem()
|
| - mock_fs.addMockDirectory('/test/host')
|
| - mock_fs.addMockFile('/test/host/screenshot.png')
|
| -
|
| - with mock_fs:
|
| - with self.assertCallsSequence(
|
| - cmd_ret=[
|
| - (r"adb -s 0123456789abcdef shell 'echo \$EXTERNAL_STORAGE'",
|
| - '/test/external/storage\r\n'),
|
| - (r"adb -s 0123456789abcdef shell '/system/bin/screencap -p \S+'",
|
| - ''),
|
| - (r"adb -s 0123456789abcdef shell ls \S+",
|
| - '/test/external/storage/screenshot.png\r\n'),
|
| - (r'adb -s 0123456789abcdef pull \S+ /test/host/screenshot.png',
|
| - '100 B/s (100 B in 1.000s)\r\n'),
|
| - (r"adb -s 0123456789abcdef shell 'rm -f \S+'", '')
|
| - ],
|
| - comp=re.match):
|
| - self.device.TakeScreenshot('/test/host/screenshot.png')
|
| + with self.assertCalls(
|
| + (mock.call.pylib.utils.device_temp_file.DeviceTempFile(
|
| + self.adb, suffix='.png'),
|
| + MockTempFile('/tmp/path/temp-123.png')),
|
| + (self.call.adb.Shell('/system/bin/screencap -p /tmp/path/temp-123.png'),
|
| + ''),
|
| + self.call.device.PullFile('/tmp/path/temp-123.png',
|
| + '/test/host/screenshot.png')):
|
| + self.device.TakeScreenshot('/test/host/screenshot.png')
|
|
|
|
|
| class DeviceUtilsGetIOStatsTest(DeviceUtilsOldImplTest):
|
|
|