Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / build / android / pylib / device / adb_wrapper_test.py
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """Tests for the AdbWrapper class."""
6
7 import os
8 import tempfile
9 import time
10 import unittest
11
12 from pylib.device import adb_wrapper
13
14
15 class TestAdbWrapper(unittest.TestCase):
16
17   def setUp(self):
18     devices = adb_wrapper.AdbWrapper.GetDevices()
19     assert devices, 'A device must be attached'
20     self._adb = devices[0]
21     self._adb.WaitForDevice()
22
23   @staticmethod
24   def _MakeTempFile(contents):
25     """Make a temporary file with the given contents.
26
27     Args:
28       contents: string to write to the temporary file.
29
30     Returns:
31       The absolute path to the file.
32     """
33     fi, path = tempfile.mkstemp()
34     with os.fdopen(fi, 'wb') as f:
35       f.write(contents)
36     return path
37
38   def testShell(self):
39     output = self._adb.Shell('echo test', expect_rc=0)
40     self.assertEqual(output.strip(), 'test')
41     output = self._adb.Shell('echo test')
42     self.assertEqual(output.strip(), 'test')
43     self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Shell,
44         'echo test', expect_rc=1)
45
46   def testPushPull(self):
47     path = self._MakeTempFile('foo')
48     device_path = '/data/local/tmp/testfile.txt'
49     local_tmpdir = os.path.dirname(path)
50     self._adb.Push(path, device_path)
51     self.assertEqual(self._adb.Shell('cat %s' % device_path), 'foo')
52     self._adb.Pull(device_path, local_tmpdir)
53     with open(os.path.join(local_tmpdir, 'testfile.txt'), 'r') as f:
54       self.assertEqual(f.read(), 'foo')
55
56   def testInstall(self):
57     path = self._MakeTempFile('foo')
58     self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Install, path)
59
60   def testForward(self):
61     self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Forward, 0, 0)
62
63   def testUninstall(self):
64     self.assertRaises(adb_wrapper.CommandFailedError, self._adb.Uninstall,
65         'some.nonexistant.package')
66
67   def testRebootWaitForDevice(self):
68     self._adb.Reboot()
69     print 'waiting for device to reboot...'
70     while self._adb.GetState() == 'device':
71       time.sleep(1)
72     self._adb.WaitForDevice()
73     self.assertEqual(self._adb.GetState(), 'device')
74     print 'waiting for package manager...'
75     while 'package:' not in self._adb.Shell('pm path android'):
76       time.sleep(1)
77
78   def testRootRemount(self):
79     self._adb.Root()
80     while True:
81       try:
82         self._adb.Shell('start')
83         break
84       except adb_wrapper.CommandFailedError:
85         time.sleep(1)
86     self._adb.Remount()
87
88
89 if __name__ == '__main__':
90   unittest.main()