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 |
old mode 100644 |
new mode 100755 |
index 802ab986568e63cdcfb426c26f79bec369a5b614..cb67d2faeee9f054f989dc6f8ff1557b55a17a51 |
--- a/build/android/pylib/device/device_utils_test.py |
+++ b/build/android/pylib/device/device_utils_test.py |
@@ -1,3 +1,4 @@ |
+#!/usr/bin/env python |
# Copyright 2014 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
@@ -26,9 +27,10 @@ from pylib.device import device_errors |
from pylib.device import device_utils |
from pylib.device import intent |
+# RunCommand from third_party/android_testrunner/run_command.py is mocked |
+# below, so its path needs to be in sys.path. |
sys.path.append(os.path.join( |
constants.DIR_SOURCE_ROOT, 'third_party', 'android_testrunner')) |
-import run_command as atr_run_command |
sys.path.append(os.path.join( |
constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) |
@@ -64,7 +66,12 @@ class DeviceUtilsTest(unittest.TestCase): |
self.assertIsNone(d.old_interface.GetDevice()) |
-# TODO(jbudorick) Split this into separate classes by DeviceUtils function. |
+class _PatchedFunction(object): |
+ def __init__(self, patched=None, mocked=None): |
+ self.patched = patched |
+ self.mocked = mocked |
+ |
+ |
class DeviceUtilsOldImplTest(unittest.TestCase): |
class AndroidCommandsCalls(object): |
@@ -72,12 +79,15 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def __init__(self, test_case, cmd_ret, comp): |
self._cmds = cmd_ret |
self._comp = comp |
+ self._run_command = _PatchedFunction() |
self._test_case = test_case |
self._total_received = 0 |
def __enter__(self): |
- atr_run_command.RunCommand = mock.Mock() |
- atr_run_command.RunCommand.side_effect = lambda c, **kw: self._ret(c) |
+ self._run_command.patched = mock.patch( |
+ 'run_command.RunCommand', |
+ side_effect=lambda c, **kw: self._ret(c)) |
+ self._run_command.mocked = self._run_command.patched.__enter__() |
def _ret(self, actual_cmd): |
if sys.exc_info()[0] is None: |
@@ -95,17 +105,18 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
return ret |
return '' |
- def __exit__(self, exc_type, _exc_val, exc_trace): |
+ def __exit__(self, exc_type, exc_val, exc_tb): |
+ self._run_command.patched.__exit__(exc_type, exc_val, exc_tb) |
if exc_type is None: |
on_failure = "adb commands don't match.\nExpected:%s\nActual:%s" % ( |
''.join('\n %s' % c for c, _ in self._cmds), |
''.join('\n %s' % a[0] |
- for _, a, kw in atr_run_command.RunCommand.mock_calls)) |
+ for _, a, kw in self._run_command.mocked.mock_calls)) |
self._test_case.assertEqual( |
- len(self._cmds), len(atr_run_command.RunCommand.mock_calls), |
+ len(self._cmds), len(self._run_command.mocked.mock_calls), |
msg=on_failure) |
for (expected_cmd, _r), (_n, actual_args, actual_kwargs) in zip( |
- self._cmds, atr_run_command.RunCommand.mock_calls): |
+ self._cmds, self._run_command.mocked.mock_calls): |
self._test_case.assertEqual(1, len(actual_args), msg=on_failure) |
self._test_case.assertTrue(self._comp(expected_cmd, actual_args[0]), |
msg=on_failure) |
@@ -117,37 +128,46 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def assertNoAdbCalls(self): |
return type(self).AndroidCommandsCalls(self, [], str.__eq__) |
- def assertOldImplCalls(self, cmd, ret, comp=str.__eq__): |
+ def assertCalls(self, cmd, ret, comp=str.__eq__): |
return type(self).AndroidCommandsCalls(self, [(cmd, ret)], comp) |
- def assertOldImplCallsSequence(self, cmd_ret, comp=str.__eq__): |
+ def assertCallsSequence(self, cmd_ret, comp=str.__eq__): |
return type(self).AndroidCommandsCalls(self, cmd_ret, comp) |
def setUp(self): |
self.device = device_utils.DeviceUtils( |
'0123456789abcdef', default_timeout=1, default_retries=0) |
+ |
+class DeviceUtilsIsOnlineTest(DeviceUtilsOldImplTest): |
+ |
def testIsOnline_true(self): |
- with self.assertOldImplCalls('adb -s 0123456789abcdef get-state', |
+ with self.assertCalls('adb -s 0123456789abcdef get-state', |
'device\r\n'): |
self.assertTrue(self.device.IsOnline()) |
def testIsOnline_false(self): |
- with self.assertOldImplCalls('adb -s 0123456789abcdef get-state', '\r\n'): |
+ with self.assertCalls('adb -s 0123456789abcdef get-state', '\r\n'): |
self.assertFalse(self.device.IsOnline()) |
+ |
+class DeviceUtilsHasRootTest(DeviceUtilsOldImplTest): |
+ |
def testHasRoot_true(self): |
- with self.assertOldImplCalls("adb -s 0123456789abcdef shell 'ls /root'", |
+ with self.assertCalls("adb -s 0123456789abcdef shell 'ls /root'", |
'foo\r\n'): |
self.assertTrue(self.device.HasRoot()) |
def testHasRoot_false(self): |
- with self.assertOldImplCalls("adb -s 0123456789abcdef shell 'ls /root'", |
+ with self.assertCalls("adb -s 0123456789abcdef shell 'ls /root'", |
'Permission denied\r\n'): |
self.assertFalse(self.device.HasRoot()) |
+ |
+class DeviceUtilsEnableRootTest(DeviceUtilsOldImplTest): |
+ |
def testEnableRoot_succeeds(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef shell getprop ro.build.type', |
'userdebug\r\n'), |
('adb -s 0123456789abcdef root', 'restarting adbd as root\r\n'), |
@@ -156,13 +176,13 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.EnableRoot() |
def testEnableRoot_userBuild(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef shell getprop ro.build.type', 'user\r\n')]): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.EnableRoot() |
def testEnableRoot_rootFails(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef shell getprop ro.build.type', |
'userdebug\r\n'), |
('adb -s 0123456789abcdef root', 'no\r\n'), |
@@ -170,22 +190,28 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.EnableRoot() |
+ |
+class DeviceUtilsGetExternalStoragePathTest(DeviceUtilsOldImplTest): |
+ |
def testGetExternalStoragePath_succeeds(self): |
fakeStoragePath = '/fake/storage/path' |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'echo $EXTERNAL_STORAGE'", |
'%s\r\n' % fakeStoragePath): |
self.assertEquals(fakeStoragePath, |
self.device.GetExternalStoragePath()) |
def testGetExternalStoragePath_fails(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'echo $EXTERNAL_STORAGE'", '\r\n'): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.GetExternalStoragePath() |
+ |
+class DeviceUtilsWaitUntilFullyBootedTest(DeviceUtilsOldImplTest): |
+ |
def testWaitUntilFullyBooted_succeedsNoWifi(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', '1\r\n'), |
@@ -202,7 +228,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.WaitUntilFullyBooted(wifi=False) |
def testWaitUntilFullyBooted_succeedsWithWifi(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', '1\r\n'), |
@@ -221,7 +247,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testWaitUntilFullyBooted_bootFails(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', |
@@ -231,7 +257,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testWaitUntilFullyBooted_devicePmFails(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', |
@@ -246,7 +272,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testWaitUntilFullyBooted_sdCardReadyFails_noPath(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', |
@@ -261,7 +287,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testWaitUntilFullyBooted_sdCardReadyFails_emptyPath(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
# AndroidCommands.WaitForSystemBootCompleted |
('adb -s 0123456789abcdef wait-for-device', ''), |
('adb -s 0123456789abcdef shell getprop sys.boot_completed', |
@@ -276,9 +302,12 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with self.assertRaises(device_errors.CommandTimeoutError): |
self.device.WaitUntilFullyBooted(wifi=False) |
+ |
+class DeviceUtilsRebootTest(DeviceUtilsOldImplTest): |
+ |
def testReboot_nonBlocking(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef reboot', ''), |
('adb -s 0123456789abcdef get-state', 'unknown\r\n'), |
('adb -s 0123456789abcdef wait-for-device', ''), |
@@ -292,7 +321,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testReboot_blocking(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef reboot', ''), |
('adb -s 0123456789abcdef get-state', 'unknown\r\n'), |
('adb -s 0123456789abcdef wait-for-device', ''), |
@@ -312,11 +341,14 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
'nothing\r\n')]): |
self.device.Reboot(block=True) |
+ |
+class DeviceUtilsInstallTest(DeviceUtilsOldImplTest): |
+ |
def testInstall_noPriorInstall(self): |
with mock.patch('os.path.isfile', return_value=True), ( |
mock.patch('pylib.utils.apk_helper.GetPackageName', |
return_value='this.is.a.test.package')): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.is.a.test.package'", |
''), |
("adb -s 0123456789abcdef install /fake/test/app.apk", |
@@ -339,7 +371,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
mock.patch('pylib.android_commands.AndroidCommands.GetFilesChanged', |
side_effect=mockGetFilesChanged)): |
# pylint: enable=C0322 |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.is.a.test.package'", |
'package:/fake/data/app/this.is.a.test.package.apk\r\n'), |
# GetFilesChanged is mocked, so its adb calls are omitted. |
@@ -364,7 +396,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
mock.patch('pylib.android_commands.AndroidCommands.GetFilesChanged', |
side_effect=mockGetFilesChanged)): |
# pylint: enable=C0322 |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.is.a.test.package'", |
'package:/fake/data/app/this.is.a.test.package.apk\r\n'), |
# GetFilesChanged is mocked, so its adb calls are omitted. |
@@ -380,7 +412,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
return_value='this.is.a.test.package'), ( |
mock.patch('pylib.android_commands.AndroidCommands.GetFilesChanged', |
side_effect=mockGetFilesChanged)): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.is.a.test.package'", |
'package:/fake/data/app/this.is.a.test.package.apk\r\n') |
# GetFilesChanged is mocked, so its adb calls are omitted. |
@@ -391,7 +423,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with mock.patch('os.path.isfile', return_value=True), ( |
mock.patch('pylib.utils.apk_helper.GetPackageName', |
return_value='this.is.a.test.package')): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.is.a.test.package'", |
''), |
("adb -s 0123456789abcdef install /fake/test/app.apk", |
@@ -399,53 +431,59 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.Install('/fake/test/app.apk', retries=0) |
+ |
+class DeviceUtilsRunShellCommandTest(DeviceUtilsOldImplTest): |
+ |
def testRunShellCommand_commandAsList(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'pm list packages'", |
'pacakge:android\r\n'): |
self.device.RunShellCommand(['pm', 'list', 'packages']) |
def testRunShellCommand_commandAsString(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'dumpsys wifi'", |
'Wi-Fi is enabled\r\n'): |
self.device.RunShellCommand('dumpsys wifi') |
def testRunShellCommand_withSu(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls /root'", 'Permission denied\r\n'), |
("adb -s 0123456789abcdef shell 'su -c setprop service.adb.root 0'", |
'')]): |
self.device.RunShellCommand('setprop service.adb.root 0', as_root=True) |
def testRunShellCommand_withRoot(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls /root'", 'hello\r\nworld\r\n'), |
("adb -s 0123456789abcdef shell 'setprop service.adb.root 0'", '')]): |
self.device.RunShellCommand('setprop service.adb.root 0', as_root=True) |
def testRunShellCommand_checkReturn_success(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'echo $ANDROID_DATA; echo %$?'", |
'/data\r\n%0\r\n'): |
self.device.RunShellCommand('echo $ANDROID_DATA', check_return=True) |
def testRunShellCommand_checkReturn_failure(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'echo $ANDROID_DATA; echo %$?'", |
'\r\n%1\r\n'): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.RunShellCommand('echo $ANDROID_DATA', check_return=True) |
+ |
+class DeviceUtilsKillAllTest(DeviceUtilsOldImplTest): |
+ |
def testKillAll_noMatchingProcesses(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'ps'", |
'USER PID PPID VSIZE RSS WCHAN PC NAME\r\n'): |
with self.assertRaises(device_errors.CommandFailedError): |
self.device.KillAll('test_process') |
def testKillAll_nonblocking(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ps'", |
'USER PID PPID VSIZE RSS WCHAN PC NAME\r\n' |
'u0_a1 1234 174 123456 54321 ffffffff 456789ab ' |
@@ -459,7 +497,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testKillAll_blocking(self): |
with mock.patch('time.sleep'): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ps'", |
'USER PID PPID VSIZE RSS WCHAN PC NAME\r\n' |
'u0_a1 1234 174 123456 54321 ffffffff 456789ab ' |
@@ -478,7 +516,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.KillAll('this.is.a.test.process', blocking=True) |
def testKillAll_root(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ps'", |
'USER PID PPID VSIZE RSS WCHAN PC NAME\r\n' |
'u0_a1 1234 174 123456 54321 ffffffff 456789ab ' |
@@ -491,7 +529,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.KillAll('this.is.a.test.process', as_root=True) |
def testKillAll_sigterm(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ps'", |
'USER PID PPID VSIZE RSS WCHAN PC NAME\r\n' |
'u0_a1 1234 174 123456 54321 ffffffff 456789ab ' |
@@ -503,9 +541,12 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
("adb -s 0123456789abcdef shell 'kill -15 1234'", '')]): |
self.device.KillAll('this.is.a.test.process', signum=signal.SIGTERM) |
+ |
+class DeviceUtilsStartActivityTest(DeviceUtilsOldImplTest): |
+ |
def testStartActivity_actionOnly(self): |
test_intent = intent.Intent(action='android.intent.action.VIEW') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW'", |
'Starting: Intent { act=android.intent.action.VIEW }'): |
@@ -515,7 +556,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
test_intent = intent.Intent(action='android.intent.action.VIEW', |
package='this.is.a.test.package', |
activity='.Main') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main'", |
@@ -526,7 +567,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
test_intent = intent.Intent(action='android.intent.action.VIEW', |
package='this.is.a.test.package', |
activity='.Main') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main'", |
@@ -538,7 +579,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
test_intent = intent.Intent(action='android.intent.action.VIEW', |
package='this.is.a.test.package', |
activity='.Main') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-W " |
@@ -551,7 +592,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
category='android.intent.category.HOME') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-c android.intent.category.HOME " |
@@ -567,7 +608,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
activity='.Main', |
category=['android.intent.category.HOME', |
'android.intent.category.BROWSABLE']) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-c android.intent.category.HOME " |
@@ -580,7 +621,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
data='http://www.google.com/') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -593,7 +634,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
extras={'foo': 'test'}) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -606,7 +647,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
extras={'foo': True}) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -619,7 +660,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
extras={'foo': 123}) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -631,7 +672,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
test_intent = intent.Intent(action='android.intent.action.VIEW', |
package='this.is.a.test.package', |
activity='.Main') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -644,7 +685,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
test_intent = intent.Intent(action='android.intent.action.VIEW', |
package='this.is.a.test.package', |
activity='.Main') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-S " |
@@ -657,7 +698,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
package='this.is.a.test.package', |
activity='.Main', |
flags='0x10000000') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-a android.intent.action.VIEW " |
"-n this.is.a.test.package/.Main " |
@@ -665,9 +706,12 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
'Starting: Intent { act=android.intent.action.VIEW }'): |
self.device.StartActivity(test_intent) |
+ |
+class DeviceUtilsBroadcastIntentTest(DeviceUtilsOldImplTest): |
+ |
def testBroadcastIntent_noExtras(self): |
test_intent = intent.Intent(action='test.package.with.an.INTENT') |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am broadcast " |
"-a test.package.with.an.INTENT '", |
'Broadcasting: Intent { act=test.package.with.an.INTENT } '): |
@@ -676,7 +720,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testBroadcastIntent_withExtra(self): |
test_intent = intent.Intent(action='test.package.with.an.INTENT', |
extras={'foo': 'bar'}) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am broadcast " |
"-a test.package.with.an.INTENT " |
"-e foo \"bar\"'", |
@@ -686,15 +730,18 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testBroadcastIntent_withExtra_noValue(self): |
test_intent = intent.Intent(action='test.package.with.an.INTENT', |
extras={'foo': None}) |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am broadcast " |
"-a test.package.with.an.INTENT " |
"-e foo'", |
'Broadcasting: Intent { act=test.package.with.an.INTENT } '): |
self.device.BroadcastIntent(test_intent) |
+ |
+class DeviceUtilsGoHomeTest(DeviceUtilsOldImplTest): |
+ |
def testGoHome(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am start " |
"-W " |
"-a android.intent.action.MAIN " |
@@ -702,32 +749,107 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
'Starting: Intent { act=android.intent.action.MAIN }\r\n'): |
self.device.GoHome() |
+ |
+class DeviceUtilsForceStopTest(DeviceUtilsOldImplTest): |
+ |
def testForceStop(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'am force-stop this.is.a.test.package'", |
''): |
self.device.ForceStop('this.is.a.test.package') |
+ |
+class DeviceUtilsClearApplicationStateTest(DeviceUtilsOldImplTest): |
+ |
def testClearApplicationState_packageExists(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'pm path this.package.does.not.exist'", |
''): |
self.device.ClearApplicationState('this.package.does.not.exist') |
def testClearApplicationState_packageDoesntExist(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'pm path this.package.exists'", |
'package:/data/app/this.package.exists.apk'), |
("adb -s 0123456789abcdef shell 'pm clear this.package.exists'", |
'Success\r\n')]): |
self.device.ClearApplicationState('this.package.exists') |
+ |
+class DeviceUtilsSendKeyEventTest(DeviceUtilsOldImplTest): |
+ |
def testSendKeyEvent(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell 'input keyevent 66'", |
''): |
self.device.SendKeyEvent(66) |
+ |
+class DeviceUtilsPushChangedFilesTest(DeviceUtilsOldImplTest): |
+ |
+ 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) |
+ |
+ def _get(self, mocked, path, default_val): |
+ 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): |
+ self.mock_file_info = {} |
+ self._os_path_exists = self._patched('os.path.exists', default_val=False) |
+ self._os_path_getsize = self._patched('os.path.getsize', default_val=0) |
+ self._os_path_isdir = self._patched('os.path.isdir', default_val=False) |
+ self._os_stat = self._patched('os.stat', default_val=self.osStatResult()) |
+ self._os_walk = self._patched('os.walk', default_val=[]) |
+ |
+ def addMockFile(self, path, size, **kw): |
+ self._addMockThing(path, size, False, **kw) |
+ |
+ def addMockDirectory(self, path, size, **kw): |
+ self._addMockThing(path, size, True, **kw) |
+ |
+ def _addMockThing(self, path, size, is_dir, stat=None, walk=None): |
+ if stat is None: |
+ stat = self.osStatResult() |
+ if walk is None: |
+ walk = [] |
+ self.mock_file_info[path] = { |
+ 'os.path.exists': True, |
+ 'os.path.isdir': is_dir, |
+ 'os.path.getsize': size, |
+ 'os.stat': stat, |
+ 'os.walk': walk, |
+ } |
+ |
+ def __enter__(self): |
+ self._os_path_exists.mocked = self._os_path_exists.patched.__enter__() |
+ self._os_path_getsize.mocked = self._os_path_getsize.patched.__enter__() |
+ self._os_path_isdir.mocked = self._os_path_isdir.patched.__enter__() |
+ self._os_stat.mocked = self._os_stat.patched.__enter__() |
+ self._os_walk.mocked = self._os_walk.patched.__enter__() |
+ |
+ def __exit__(self, exc_type, exc_val, exc_tb): |
+ self._os_walk.patched.__exit__() |
+ self._os_stat.patched.__exit__() |
+ self._os_path_isdir.patched.__exit__(exc_type, exc_val, exc_tb) |
+ self._os_path_getsize.patched.__exit__(exc_type, exc_val, exc_tb) |
+ self._os_path_exists.patched.__exit__(exc_type, exc_val, exc_tb) |
+ |
+ |
def testPushChangedFiles_noHostPath(self): |
with mock.patch('os.path.exists', return_value=False): |
with self.assertRaises(device_errors.CommandFailedError): |
@@ -739,77 +861,32 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
host_file_path = '/test/host/path' |
device_file_path = '/test/device/path' |
- mock_file_info = { |
- '/test/host/path': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 100, |
- }, |
- } |
- |
- os_path_exists = mock.Mock() |
- os_path_exists.side_effect = lambda f: mock_file_info[f]['os.path.exists'] |
- |
- os_path_isdir = mock.Mock() |
- os_path_isdir.side_effect = lambda f: mock_file_info[f]['os.path.isdir'] |
- |
- os_path_getsize = mock.Mock() |
- os_path_getsize.side_effect = lambda f: mock_file_info[f]['os.path.getsize'] |
+ mock_fs = self.MockFileSystem() |
+ mock_fs.addMockFile(host_file_path, 100) |
self.device.old_interface.GetFilesChanged = mock.Mock(return_value=[]) |
- with mock.patch('os.path.exists', new=os_path_exists), ( |
- mock.patch('os.path.isdir', new=os_path_isdir)), ( |
- mock.patch('os.path.getsize', new=os_path_getsize)): |
+ with mock_fs: |
# GetFilesChanged is mocked, so its adb calls are omitted. |
with self.assertNoAdbCalls(): |
self.device.PushChangedFiles(host_file_path, device_file_path) |
- @staticmethod |
- def createMockOSStatResult( |
- 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) |
- |
def testPushChangedFiles_file_changed(self): |
self.device.old_interface._push_if_needed_cache = {} |
host_file_path = '/test/host/path' |
device_file_path = '/test/device/path' |
- mock_file_info = { |
- '/test/host/path': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 100, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000000) |
- }, |
- } |
- |
- os_path_exists = mock.Mock() |
- os_path_exists.side_effect = lambda f: mock_file_info[f]['os.path.exists'] |
- |
- os_path_isdir = mock.Mock() |
- os_path_isdir.side_effect = lambda f: mock_file_info[f]['os.path.isdir'] |
- |
- os_path_getsize = mock.Mock() |
- os_path_getsize.side_effect = lambda f: mock_file_info[f]['os.path.getsize'] |
- |
- os_stat = mock.Mock() |
- os_stat.side_effect = lambda f: mock_file_info[f]['os.stat'] |
+ mock_fs = self.MockFileSystem() |
+ mock_fs.addMockFile( |
+ host_file_path, 100, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000000)) |
self.device.old_interface.GetFilesChanged = mock.Mock( |
return_value=[('/test/host/path', '/test/device/path')]) |
- with mock.patch('os.path.exists', new=os_path_exists), ( |
- mock.patch('os.path.isdir', new=os_path_isdir)), ( |
- mock.patch('os.path.getsize', new=os_path_getsize)), ( |
- mock.patch('os.stat', new=os_stat)): |
- with self.assertOldImplCalls('adb -s 0123456789abcdef push ' |
+ with mock_fs: |
+ with self.assertCalls('adb -s 0123456789abcdef push ' |
'/test/host/path /test/device/path', '100 B/s (100 B in 1.000s)\r\n'): |
self.device.PushChangedFiles(host_file_path, device_file_path) |
@@ -819,46 +896,21 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
host_file_path = '/test/host/path' |
device_file_path = '/test/device/path' |
- mock_file_info = { |
- '/test/host/path': { |
- 'os.path.exists': True, |
- 'os.path.isdir': True, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000000) |
- }, |
- '/test/host/path/file1': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 251, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000001) |
- }, |
- '/test/host/path/file2': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 252, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000002) |
- }, |
- } |
- |
- os_path_exists = mock.Mock() |
- os_path_exists.side_effect = lambda f: mock_file_info[f]['os.path.exists'] |
- |
- os_path_isdir = mock.Mock() |
- os_path_isdir.side_effect = lambda f: mock_file_info[f]['os.path.isdir'] |
- |
- os_path_getsize = mock.Mock() |
- os_path_getsize.side_effect = lambda f: mock_file_info[f]['os.path.getsize'] |
- |
- os_stat = mock.Mock() |
- os_stat.side_effect = lambda f: mock_file_info[f]['os.stat'] |
+ mock_fs = self.MockFileSystem() |
+ mock_fs.addMockDirectory( |
+ host_file_path, 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000000)) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file1', 251, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000001)) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file2', 252, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000002)) |
self.device.old_interface.GetFilesChanged = mock.Mock(return_value=[]) |
- with mock.patch('os.path.exists', new=os_path_exists), ( |
- mock.patch('os.path.isdir', new=os_path_isdir)), ( |
- mock.patch('os.path.getsize', new=os_path_getsize)), ( |
- mock.patch('os.stat', new=os_stat)): |
- with self.assertOldImplCallsSequence([ |
+ with mock_fs: |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'mkdir -p \"/test/device/path\"'", |
'')]): |
self.device.PushChangedFiles(host_file_path, device_file_path) |
@@ -869,52 +921,23 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
host_file_path = '/test/host/path' |
device_file_path = '/test/device/path' |
- mock_file_info = { |
- '/test/host/path': { |
- 'os.path.exists': True, |
- 'os.path.isdir': True, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000000), |
- 'os.walk': [('/test/host/path', [], ['file1', 'file2'])] |
- }, |
- '/test/host/path/file1': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000001) |
- }, |
- '/test/host/path/file2': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000002) |
- }, |
- } |
- |
- os_path_exists = mock.Mock() |
- os_path_exists.side_effect = lambda f: mock_file_info[f]['os.path.exists'] |
- |
- os_path_isdir = mock.Mock() |
- os_path_isdir.side_effect = lambda f: mock_file_info[f]['os.path.isdir'] |
- |
- os_path_getsize = mock.Mock() |
- os_path_getsize.side_effect = lambda f: mock_file_info[f]['os.path.getsize'] |
- |
- os_stat = mock.Mock() |
- os_stat.side_effect = lambda f: mock_file_info[f]['os.stat'] |
- |
- os_walk = mock.Mock() |
- os_walk.side_effect = lambda f: mock_file_info[f]['os.walk'] |
+ mock_fs = self.MockFileSystem() |
+ mock_fs.addMockDirectory( |
+ host_file_path, 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000000), |
+ walk=[('/test/host/path', [], ['file1', 'file2'])]) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file1', 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000001)) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file2', 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000002)) |
self.device.old_interface.GetFilesChanged = mock.Mock( |
return_value=[('/test/host/path/file1', '/test/device/path/file1')]) |
- with mock.patch('os.path.exists', new=os_path_exists), ( |
- mock.patch('os.path.isdir', new=os_path_isdir)), ( |
- mock.patch('os.path.getsize', new=os_path_getsize)), ( |
- mock.patch('os.stat', new=os_stat)), ( |
- mock.patch('os.walk', new=os_walk)): |
- with self.assertOldImplCallsSequence([ |
+ with mock_fs: |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'mkdir -p \"/test/device/path\"'", |
''), |
('adb -s 0123456789abcdef push ' |
@@ -928,63 +951,41 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
host_file_path = '/test/host/path' |
device_file_path = '/test/device/path' |
- mock_file_info = { |
- '/test/host/path': { |
- 'os.path.exists': True, |
- 'os.path.isdir': True, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000000) |
- }, |
- '/test/host/path/file1': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000001) |
- }, |
- '/test/host/path/file2': { |
- 'os.path.exists': True, |
- 'os.path.isdir': False, |
- 'os.path.getsize': 256, |
- 'os.stat': self.createMockOSStatResult(st_mtime=1000000002) |
- }, |
- } |
- |
- os_path_exists = mock.Mock() |
- os_path_exists.side_effect = lambda f: mock_file_info[f]['os.path.exists'] |
- |
- os_path_isdir = mock.Mock() |
- os_path_isdir.side_effect = lambda f: mock_file_info[f]['os.path.isdir'] |
- |
- os_path_getsize = mock.Mock() |
- os_path_getsize.side_effect = lambda f: mock_file_info[f]['os.path.getsize'] |
- |
- os_stat = mock.Mock() |
- os_stat.side_effect = lambda f: mock_file_info[f]['os.stat'] |
+ mock_fs = self.MockFileSystem() |
+ mock_fs.addMockDirectory( |
+ host_file_path, 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000000)) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file1', 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000001)) |
+ mock_fs.addMockFile( |
+ host_file_path + '/file2', 256, |
+ stat=self.MockFileSystem.osStatResult(st_mtime=1000000002)) |
self.device.old_interface.GetFilesChanged = mock.Mock( |
return_value=[('/test/host/path/file1', '/test/device/path/file1'), |
('/test/host/path/file2', '/test/device/path/file2')]) |
- with mock.patch('os.path.exists', new=os_path_exists), ( |
- mock.patch('os.path.isdir', new=os_path_isdir)), ( |
- mock.patch('os.path.getsize', new=os_path_getsize)), ( |
- mock.patch('os.stat', new=os_stat)): |
- with self.assertOldImplCallsSequence([ |
+ with mock_fs: |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'mkdir -p \"/test/device/path\"'", |
''), |
('adb -s 0123456789abcdef push /test/host/path /test/device/path', |
'768 B/s (768 B in 1.000s)\r\n')]): |
self.device.PushChangedFiles(host_file_path, device_file_path) |
+ |
+class DeviceUtilsFileExistsTest(DeviceUtilsOldImplTest): |
+ |
def testFileExists_usingTest_fileExists(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell " |
"'test -e \"/data/app/test.file.exists\"; echo $?'", |
'0\r\n'): |
self.assertTrue(self.device.FileExists('/data/app/test.file.exists')) |
def testFileExists_usingTest_fileDoesntExist(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell " |
"'test -e \"/data/app/test.file.does.not.exist\"; echo $?'", |
'1\r\n'): |
@@ -992,7 +993,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
'/data/app/test.file.does.not.exist')) |
def testFileExists_usingLs_fileExists(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell " |
"'test -e \"/data/app/test.file.exists\"; echo $?'", |
'test: not found\r\n'), |
@@ -1002,7 +1003,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.assertTrue(self.device.FileExists('/data/app/test.file.exists')) |
def testFileExists_usingLs_fileDoesntExist(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell " |
"'test -e \"/data/app/test.file.does.not.exist\"; echo $?'", |
'test: not found\r\n'), |
@@ -1013,9 +1014,12 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.assertFalse(self.device.FileExists( |
'/data/app/test.file.does.not.exist')) |
+ |
+class DeviceUtilsPullFileTest(DeviceUtilsOldImplTest): |
+ |
def testPullFile_existsOnDevice(self): |
with mock.patch('os.path.exists', return_value=True): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
('adb -s 0123456789abcdef shell ' |
'ls /data/app/test.file.exists', |
'/data/app/test.file.exists'), |
@@ -1027,7 +1031,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
def testPullFile_doesntExistOnDevice(self): |
with mock.patch('os.path.exists', return_value=True): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef shell ' |
'ls /data/app/test.file.does.not.exist', |
'/data/app/test.file.does.not.exist: No such file or directory\r\n'): |
@@ -1035,8 +1039,11 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.PullFile('/data/app/test.file.does.not.exist', |
'/test/file/host/path') |
+ |
+class DeviceUtilsReadFileTest(DeviceUtilsOldImplTest): |
+ |
def testReadFile_exists(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell " |
"'cat \"/read/this/test/file\" 2>/dev/null'", |
'this is a test file')]): |
@@ -1044,7 +1051,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.ReadFile('/read/this/test/file')) |
def testReadFile_doesNotExist(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
"adb -s 0123456789abcdef shell " |
"'cat \"/this/file/does.not.exist\" 2>/dev/null'", |
''): |
@@ -1054,7 +1061,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.old_interface._privileged_command_runner = ( |
self.device.old_interface.RunShellCommand) |
self.device.old_interface._protected_file_access_method_initialized = True |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell " |
"'cat \"/this/file/must.be.read.by.root\" 2> /dev/null'", |
'this is a test file\nread by root')]): |
@@ -1067,7 +1074,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.old_interface._privileged_command_runner = ( |
self.device.old_interface.RunShellCommandWithSU) |
self.device.old_interface._protected_file_access_method_initialized = True |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell " |
"'su -c cat \"/this/file/can.be.read.with.su\" 2> /dev/null'", |
'this is a test file\nread with su')]): |
@@ -1083,13 +1090,16 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.ReadFile('/this/file/cannot.be.read.by.user', |
as_root=True) |
+ |
+class DeviceUtilsWriteFileTest(DeviceUtilsOldImplTest): |
+ |
def testWriteFile_basic(self): |
mock_file = mock.MagicMock(spec=file) |
mock_file.name = '/tmp/file/to.be.pushed' |
mock_file.__enter__.return_value = mock_file |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef push ' |
'/tmp/file/to.be.pushed /test/file/written.to.device', |
'100 B/s (100 bytes in 1.000s)\r\n'): |
@@ -1108,7 +1118,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
mock_file.__enter__.return_value = mock_file |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file): |
- with self.assertOldImplCallsSequence( |
+ with self.assertCallsSequence( |
cmd_ret=[ |
# Create temporary contents file |
(r"adb -s 0123456789abcdef shell " |
@@ -1151,7 +1161,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
mock_file.__enter__.return_value = mock_file |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file): |
- with self.assertOldImplCallsSequence( |
+ with self.assertCallsSequence( |
cmd_ret=[ |
# Create temporary contents file |
(r"adb -s 0123456789abcdef shell " |
@@ -1190,15 +1200,18 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.WriteFile('/test/file/no.permissions.to.write', |
'new test file contents', as_root=True) |
+ |
+class DeviceUtilsLsTest(DeviceUtilsOldImplTest): |
+ |
def testLs_nothing(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls -lR /this/file/does.not.exist'", |
'/this/file/does.not.exist: No such file or directory\r\n'), |
("adb -s 0123456789abcdef shell 'date +%z'", '+0000')]): |
self.assertEqual({}, self.device.Ls('/this/file/does.not.exist')) |
def testLs_file(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls -lR /this/is/a/test.file'", |
'-rw-rw---- testuser testgroup 4096 1970-01-01 00:00 test.file\r\n'), |
("adb -s 0123456789abcdef shell 'date +%z'", '+0000')]): |
@@ -1207,7 +1220,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.Ls('/this/is/a/test.file')) |
def testLs_directory(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls -lR /this/is/a/test.directory'", |
'\r\n' |
'/this/is/a/test.directory:\r\n' |
@@ -1218,7 +1231,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
self.device.Ls('/this/is/a/test.directory')) |
def testLs_directories(self): |
- with self.assertOldImplCallsSequence([ |
+ with self.assertCallsSequence([ |
("adb -s 0123456789abcdef shell 'ls -lR /this/is/a/test.directory'", |
'\r\n' |
'/this/is/a/test.directory:\r\n' |
@@ -1232,6 +1245,9 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
(4096, datetime.datetime(1970, 1, 1, 7, 0, 0))}, |
self.device.Ls('/this/is/a/test.directory')) |
+ |
+class DeviceUtilsSetJavaAssertsTest(DeviceUtilsOldImplTest): |
+ |
@staticmethod |
def mockNamedTemporary(name='/tmp/file/property.file', |
read_contents=''): |
@@ -1246,7 +1262,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file), ( |
mock.patch('__builtin__.open', return_value=mock_file)): |
- with self.assertOldImplCallsSequence( |
+ with self.assertCallsSequence( |
[('adb -s 0123456789abcdef shell ls %s' % |
constants.DEVICE_LOCAL_PROPERTIES_PATH, |
'%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH), |
@@ -1270,7 +1286,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file), ( |
mock.patch('__builtin__.open', return_value=mock_file)): |
- with self.assertOldImplCallsSequence( |
+ with self.assertCallsSequence( |
[('adb -s 0123456789abcdef shell ls %s' % |
constants.DEVICE_LOCAL_PROPERTIES_PATH, |
'%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH), |
@@ -1294,7 +1310,7 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
with mock.patch('tempfile.NamedTemporaryFile', |
return_value=mock_file), ( |
mock.patch('__builtin__.open', return_value=mock_file)): |
- with self.assertOldImplCallsSequence( |
+ with self.assertCallsSequence( |
[('adb -s 0123456789abcdef shell ls %s' % |
constants.DEVICE_LOCAL_PROPERTIES_PATH, |
'%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH), |
@@ -1306,28 +1322,34 @@ class DeviceUtilsOldImplTest(unittest.TestCase): |
'all\r\n')]): |
self.assertFalse(self.device.SetJavaAsserts(True)) |
+ |
+class DeviceUtilsGetPropTest(DeviceUtilsOldImplTest): |
+ |
def testGetProp_exists(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef shell getprop this.is.a.test.property', |
'test_property_value\r\n'): |
self.assertEqual('test_property_value', |
self.device.GetProp('this.is.a.test.property')) |
def testGetProp_doesNotExist(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef shell ' |
'getprop this.property.does.not.exist', ''): |
self.assertEqual('', self.device.GetProp('this.property.does.not.exist')) |
def testGetProp_cachedRoProp(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef shell ' |
'getprop ro.build.type', 'userdebug'): |
self.assertEqual('userdebug', self.device.GetProp('ro.build.type')) |
self.assertEqual('userdebug', self.device.GetProp('ro.build.type')) |
+ |
+class DeviceUtilsSetPropTest(DeviceUtilsOldImplTest): |
+ |
def testSetProp(self): |
- with self.assertOldImplCalls( |
+ with self.assertCalls( |
'adb -s 0123456789abcdef shell ' |
'setprop this.is.a.test.property "test_property_value"', |
''): |