Index: build/android/pylib/device/adb_wrapper_test.py |
diff --git a/build/android/pylib/device/adb_wrapper_test.py b/build/android/pylib/device/adb_wrapper_test.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5c2fdd9f55523a85253bc85b7050ef62462a22c3 |
--- /dev/null |
+++ b/build/android/pylib/device/adb_wrapper_test.py |
@@ -0,0 +1,90 @@ |
+# Copyright (c) 2013 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. |
+ |
+"""Tests for the AdbWrapper class.""" |
+ |
+import os |
+import socket |
+import tempfile |
+import time |
+import unittest |
+ |
+import adb_wrapper |
+ |
+ |
+class TestAdbWrapper(unittest.TestCase): |
+ |
+ def setUp(self): |
+ devices = adb_wrapper.AdbWrapper.GetDevices() |
+ assert devices, 'A device must be attached' |
+ self._adb = devices[0] |
+ self._adb.WaitForDevice() |
+ |
+ def _MakeTempFile(self, contents): |
+ """Make a temporary file with the given contents. |
+ |
+ Args: |
+ contents: string to write to the temporary file. |
+ |
+ Returns: |
+ The absolute path to the file. |
+ """ |
+ fi, path = tempfile.mkstemp() |
+ with os.fdopen(fi, 'wb') as f: |
+ f.write('foo') |
+ return path |
+ |
+ def testShell(self): |
+ output = self._adb.Shell('echo test', expect_rc=0) |
+ self.assertEqual(output.strip(), 'test') |
+ output = self._adb.Shell('echo test') |
+ self.assertEqual(output.strip(), 'test') |
+ self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Shell, |
+ 'echo test', expect_rc=1) |
+ |
+ def testPushPull(self): |
+ path = self._MakeTempFile('foo') |
+ device_path = '/data/local/tmp/testfile.txt' |
+ local_tmpdir = os.path.dirname(path) |
+ self._adb.Push(path, device_path) |
+ self.assertEqual(self._adb.Shell('cat %s' % device_path), 'foo') |
+ self._adb.Pull(device_path, local_tmpdir) |
+ with open(os.path.join(local_tmpdir, 'testfile.txt'), 'r') as f: |
+ self.assertEqual(f.read(), 'foo') |
+ |
+ def testInstall(self): |
+ path = self._MakeTempFile('foo') |
+ self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Install, path) |
+ |
+ def testForward(self): |
+ self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Forward, 0, 0) |
+ |
+ def testUninstall(self): |
+ self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Uninstall, |
+ 'some.nonexistant.package') |
+ |
+ def testRebootWaitForDevice(self): |
+ self._adb.Reboot() |
+ print 'waiting for device to reboot...' |
+ while self._adb.GetState() == 'device': |
+ time.sleep(1) |
+ self._adb.WaitForDevice() |
+ self.assertEqual(self._adb.GetState(), 'device') |
+ print 'waiting for package manager...' |
+ while 'package:' not in self._adb.Shell('pm path android'): |
+ time.sleep(1) |
+ |
+ def testRootRemount(self): |
+ self._adb.Root() |
+ while True: |
+ try: |
+ self._adb.Shell('start') |
+ break |
+ except adb_wrapper.CommandFailedError: |
+ time.sleep(1) |
+ self._adb.Remount() |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |