mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
97 lines
2.8 KiB
Python
97 lines
2.8 KiB
Python
# Copyright 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 tempfile
|
|
import time
|
|
import unittest
|
|
|
|
from pylib.device import adb_wrapper
|
|
from pylib.device import device_errors
|
|
|
|
|
|
class TestAdbWrapper(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
devices = adb_wrapper.AdbWrapper.Devices()
|
|
assert devices, 'A device must be attached'
|
|
self._adb = devices[0]
|
|
self._adb.WaitForDevice()
|
|
|
|
@staticmethod
|
|
def _MakeTempFile(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(contents)
|
|
return path
|
|
|
|
def testShell(self):
|
|
output = self._adb.Shell('echo test', expect_status=0)
|
|
self.assertEqual(output.strip(), 'test')
|
|
output = self._adb.Shell('echo test')
|
|
self.assertEqual(output.strip(), 'test')
|
|
with self.assertRaises(device_errors.AdbCommandFailedError):
|
|
self._adb.Shell('echo test', expect_status=1)
|
|
|
|
def testPushLsPull(self):
|
|
path = self._MakeTempFile('foo')
|
|
device_path = '/data/local/tmp/testfile.txt'
|
|
local_tmpdir = os.path.dirname(path)
|
|
self._adb.Push(path, device_path)
|
|
files = dict(self._adb.Ls('/data/local/tmp'))
|
|
self.assertTrue('testfile.txt' in files)
|
|
self.assertEquals(3, files['testfile.txt'].st_size)
|
|
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')
|
|
with self.assertRaises(device_errors.AdbCommandFailedError):
|
|
self._adb.Install(path)
|
|
|
|
def testForward(self):
|
|
with self.assertRaises(device_errors.AdbCommandFailedError):
|
|
self._adb.Forward(0, 0)
|
|
|
|
def testUninstall(self):
|
|
with self.assertRaises(device_errors.AdbCommandFailedError):
|
|
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 device_errors.AdbCommandFailedError:
|
|
time.sleep(1)
|
|
self._adb.Remount()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|