| 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 d7ac6d7c4a03c587db786640ff027e5a0e5b2a41..802ab986568e63cdcfb426c26f79bec369a5b614 100644
|
| --- a/build/android/pylib/device/device_utils_test.py
|
| +++ b/build/android/pylib/device/device_utils_test.py
|
| @@ -11,6 +11,8 @@ Unit tests for the contents of device_utils.py (mostly DeviceUtils).
|
| # pylint: disable=W0613
|
|
|
| import collections
|
| +import datetime
|
| +import logging
|
| import os
|
| import re
|
| import signal
|
| @@ -62,6 +64,7 @@ class DeviceUtilsTest(unittest.TestCase):
|
| self.assertIsNone(d.old_interface.GetDevice())
|
|
|
|
|
| +# TODO(jbudorick) Split this into separate classes by DeviceUtils function.
|
| class DeviceUtilsOldImplTest(unittest.TestCase):
|
|
|
| class AndroidCommandsCalls(object):
|
| @@ -1187,7 +1190,151 @@ class DeviceUtilsOldImplTest(unittest.TestCase):
|
| self.device.WriteFile('/test/file/no.permissions.to.write',
|
| 'new test file contents', as_root=True)
|
|
|
| + def testLs_nothing(self):
|
| + with self.assertOldImplCallsSequence([
|
| + ("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([
|
| + ("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')]):
|
| + self.assertEqual(
|
| + {'test.file': (4096, datetime.datetime(1970, 1, 1))},
|
| + self.device.Ls('/this/is/a/test.file'))
|
| +
|
| + def testLs_directory(self):
|
| + with self.assertOldImplCallsSequence([
|
| + ("adb -s 0123456789abcdef shell 'ls -lR /this/is/a/test.directory'",
|
| + '\r\n'
|
| + '/this/is/a/test.directory:\r\n'
|
| + '-rw-rw---- testuser testgroup 4096 1970-01-01 18:19 test.file\r\n'),
|
| + ("adb -s 0123456789abcdef shell 'date +%z'", '+0000')]):
|
| + self.assertEqual(
|
| + {'test.file': (4096, datetime.datetime(1970, 1, 1, 18, 19))},
|
| + self.device.Ls('/this/is/a/test.directory'))
|
| +
|
| + def testLs_directories(self):
|
| + with self.assertOldImplCallsSequence([
|
| + ("adb -s 0123456789abcdef shell 'ls -lR /this/is/a/test.directory'",
|
| + '\r\n'
|
| + '/this/is/a/test.directory:\r\n'
|
| + 'drwxr-xr-x testuser testgroup 1970-01-01 00:00 test.subdirectory\r\n'
|
| + '\r\n'
|
| + '/this/is/a/test.directory/test.subdirectory:\r\n'
|
| + '-rw-rw---- testuser testgroup 4096 1970-01-01 00:00 test.file\r\n'),
|
| + ("adb -s 0123456789abcdef shell 'date +%z'", '-0700')]):
|
| + self.assertEqual(
|
| + {'test.subdirectory/test.file':
|
| + (4096, datetime.datetime(1970, 1, 1, 7, 0, 0))},
|
| + self.device.Ls('/this/is/a/test.directory'))
|
| +
|
| + @staticmethod
|
| + def mockNamedTemporary(name='/tmp/file/property.file',
|
| + read_contents=''):
|
| + mock_file = mock.MagicMock(spec=file)
|
| + mock_file.name = name
|
| + mock_file.__enter__.return_value = mock_file
|
| + mock_file.read.return_value = read_contents
|
| + return mock_file
|
| +
|
| + def testSetJavaAsserts_enable(self):
|
| + mock_file = self.mockNamedTemporary()
|
| + with mock.patch('tempfile.NamedTemporaryFile',
|
| + return_value=mock_file), (
|
| + mock.patch('__builtin__.open', return_value=mock_file)):
|
| + with self.assertOldImplCallsSequence(
|
| + [('adb -s 0123456789abcdef shell ls %s' %
|
| + constants.DEVICE_LOCAL_PROPERTIES_PATH,
|
| + '%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH),
|
| + ('adb -s 0123456789abcdef pull %s %s' %
|
| + (constants.DEVICE_LOCAL_PROPERTIES_PATH, mock_file.name),
|
| + '100 B/s (100 bytes in 1.000s)\r\n'),
|
| + ('adb -s 0123456789abcdef push %s %s' %
|
| + (mock_file.name, constants.DEVICE_LOCAL_PROPERTIES_PATH),
|
| + '100 B/s (100 bytes in 1.000s)\r\n'),
|
| + ('adb -s 0123456789abcdef shell '
|
| + 'getprop dalvik.vm.enableassertions',
|
| + '\r\n'),
|
| + ('adb -s 0123456789abcdef shell '
|
| + 'setprop dalvik.vm.enableassertions "all"',
|
| + '')]):
|
| + self.device.SetJavaAsserts(True)
|
| +
|
| + def testSetJavaAsserts_disable(self):
|
| + mock_file = self.mockNamedTemporary(
|
| + read_contents='dalvik.vm.enableassertions=all\n')
|
| + with mock.patch('tempfile.NamedTemporaryFile',
|
| + return_value=mock_file), (
|
| + mock.patch('__builtin__.open', return_value=mock_file)):
|
| + with self.assertOldImplCallsSequence(
|
| + [('adb -s 0123456789abcdef shell ls %s' %
|
| + constants.DEVICE_LOCAL_PROPERTIES_PATH,
|
| + '%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH),
|
| + ('adb -s 0123456789abcdef pull %s %s' %
|
| + (constants.DEVICE_LOCAL_PROPERTIES_PATH, mock_file.name),
|
| + '100 B/s (100 bytes in 1.000s)\r\n'),
|
| + ('adb -s 0123456789abcdef push %s %s' %
|
| + (mock_file.name, constants.DEVICE_LOCAL_PROPERTIES_PATH),
|
| + '100 B/s (100 bytes in 1.000s)\r\n'),
|
| + ('adb -s 0123456789abcdef shell '
|
| + 'getprop dalvik.vm.enableassertions',
|
| + 'all\r\n'),
|
| + ('adb -s 0123456789abcdef shell '
|
| + 'setprop dalvik.vm.enableassertions ""',
|
| + '')]):
|
| + self.device.SetJavaAsserts(False)
|
| +
|
| + def testSetJavaAsserts_alreadyEnabled(self):
|
| + mock_file = self.mockNamedTemporary(
|
| + read_contents='dalvik.vm.enableassertions=all\n')
|
| + with mock.patch('tempfile.NamedTemporaryFile',
|
| + return_value=mock_file), (
|
| + mock.patch('__builtin__.open', return_value=mock_file)):
|
| + with self.assertOldImplCallsSequence(
|
| + [('adb -s 0123456789abcdef shell ls %s' %
|
| + constants.DEVICE_LOCAL_PROPERTIES_PATH,
|
| + '%s\r\n' % constants.DEVICE_LOCAL_PROPERTIES_PATH),
|
| + ('adb -s 0123456789abcdef pull %s %s' %
|
| + (constants.DEVICE_LOCAL_PROPERTIES_PATH, mock_file.name),
|
| + '100 B/s (100 bytes in 1.000s)\r\n'),
|
| + ('adb -s 0123456789abcdef shell '
|
| + 'getprop dalvik.vm.enableassertions',
|
| + 'all\r\n')]):
|
| + self.assertFalse(self.device.SetJavaAsserts(True))
|
| +
|
| + def testGetProp_exists(self):
|
| + with self.assertOldImplCalls(
|
| + '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(
|
| + '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(
|
| + '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'))
|
| +
|
| + def testSetProp(self):
|
| + with self.assertOldImplCalls(
|
| + 'adb -s 0123456789abcdef shell '
|
| + 'setprop this.is.a.test.property "test_property_value"',
|
| + ''):
|
| + self.device.SetProp('this.is.a.test.property', 'test_property_value')
|
| +
|
|
|
| if __name__ == '__main__':
|
| + logging.getLogger().setLevel(logging.DEBUG)
|
| unittest.main(verbosity=2)
|
|
|
|
|