Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3386)

Unified Diff: build/android/devil/android/device_temp_file_test.py

Issue 1412433003: Revert of Android: Trust large random numbers for temp files (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/devil/android/device_temp_file.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/devil/android/device_temp_file_test.py
diff --git a/build/android/devil/android/device_temp_file_test.py b/build/android/devil/android/device_temp_file_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..76f9cc8ec0179984831eff7fd3028299487fc3e3
--- /dev/null
+++ b/build/android/devil/android/device_temp_file_test.py
@@ -0,0 +1,91 @@
+#!/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.
+
+"""
+Unit tests for the contents of device_temp_file.py.
+"""
+
+import logging
+import os
+import sys
+import unittest
+
+from devil.android import device_errors
+from devil.android import device_temp_file
+from devil.android.sdk import adb_wrapper
+from devil.utils import mock_calls
+from pylib import constants
+
+sys.path.append(os.path.join(
+ constants.DIR_SOURCE_ROOT, 'third_party', 'pymock'))
+import mock # pylint: disable=F0401
+
+class DeviceTempFileTest(mock_calls.TestCase):
+
+ def setUp(self):
+ test_serial = '0123456789abcdef'
+ self.adb = mock.Mock(spec=adb_wrapper.AdbWrapper)
+ self.adb.__str__ = mock.Mock(return_value=test_serial)
+ self.watchMethodCalls(self.call.adb)
+
+ def mockShellCall(self, cmd_prefix, action=''):
+ """Expect an adb.Shell(cmd) call with cmd_prefix and do some action
+
+ Args:
+ cmd_prefix: A string, the cmd of the received call is expected to have
+ this as a prefix.
+ action: If callable, an action to perform when the expected call is
+ received, otherwise a return value.
+ Returns:
+ An (expected_call, action) pair suitable for use in assertCalls.
+ """
+ def check_and_return(cmd):
+ self.assertTrue(
+ cmd.startswith(cmd_prefix),
+ 'command %r does not start with prefix %r' % (cmd, cmd_prefix))
+ if callable(action):
+ return action(cmd)
+ else:
+ return action
+ return (self.call.adb.Shell(mock.ANY), check_and_return)
+
+ def mockExistsTest(self, exists_result):
+ def action(cmd):
+ if exists_result:
+ return ''
+ else:
+ raise device_errors.AdbCommandFailedError(
+ cmd, 'File not found', 1, str(self.adb))
+ return self.mockShellCall('test -e ', action)
+
+ def testTempFileNameAlreadyExists(self):
+ with self.assertCalls(
+ self.mockShellCall('test -d /data/local/tmp'),
+ self.mockExistsTest(True),
+ self.mockExistsTest(True),
+ self.mockExistsTest(True),
+ self.mockExistsTest(False),
+ self.mockShellCall('touch '),
+ self.mockShellCall('rm -f ')):
+ with device_temp_file.DeviceTempFile(self.adb) as tmpfile:
+ logging.debug('Temp file name: %s', tmpfile.name)
+
+ def testTempFileLifecycle(self):
+ with self.assertCalls(
+ self.mockShellCall('test -d /data/local/tmp'),
+ self.mockExistsTest(False),
+ self.mockShellCall('touch ')):
+ tempFileContextManager = device_temp_file.DeviceTempFile(self.adb)
+ with mock.patch.object(self.adb, 'Shell'):
+ with tempFileContextManager as tmpfile:
+ logging.debug('Temp file name: %s', tmpfile.name)
+ self.assertEquals(0, self.adb.Shell.call_count)
+ self.assertEquals(1, self.adb.Shell.call_count)
+ args, _ = self.adb.Shell.call_args
+ self.assertTrue(args[0].startswith('rm -f '))
+
+if __name__ == '__main__':
+ logging.getLogger().setLevel(logging.DEBUG)
+ unittest.main(verbosity=2)
« no previous file with comments | « build/android/devil/android/device_temp_file.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698