Skip to content

Commit

Permalink
Merge branch 'release/v0.1.32'
Browse files Browse the repository at this point in the history
  • Loading branch information
He Xiaocong committed Aug 12, 2014
2 parents 03317f7 + 959456c commit 2377134
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 29 deletions.
10 changes: 5 additions & 5 deletions test/test_adb.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,14 @@ def test_adb_from_find(self):
def test_devices(self):
adb = Adb()
adb.raw_cmd = MagicMock()
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r\n014E05DE0F02000E device\r\n489328DKFL7DF device", b"")
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r\n014E05DE0F02000E\tdevice\r\n489328DKFL7DF\tdevice", b"")
self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})
adb.raw_cmd.assert_called_once_with("devices")
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n\r014E05DE0F02000E device\n\r489328DKFL7DF device", b"")
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n\r014E05DE0F02000E\tdevice\n\r489328DKFL7DF\tdevice", b"")
self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r014E05DE0F02000E device\r489328DKFL7DF device", b"")
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r014E05DE0F02000E\tdevice\r489328DKFL7DF\tdevice", b"")
self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n014E05DE0F02000E device\n489328DKFL7DF device", b"")
adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n014E05DE0F02000E\tdevice\n489328DKFL7DF\tdevice", b"")
self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})
adb.raw_cmd.return_value.communicate.return_value = (b"not match", "")
with self.assertRaises(EnvironmentError):
Expand Down Expand Up @@ -109,7 +109,7 @@ def test_adb_cmd(self):
adb.raw_cmd = MagicMock()
args = ["a", "b", "c"]
adb.cmd(*args)
adb.raw_cmd.assert_called_once_with("-s", adb.device_serial(), *args)
adb.raw_cmd.assert_called_once_with("-s", "'%s'" % adb.device_serial(), *args)

def test_device_serial(self):
with patch.dict('os.environ', {'ANDROID_SERIAL': "ABCDEF123456"}):
Expand Down
26 changes: 14 additions & 12 deletions test/test_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ def setUp(self):
self.device = AutomatorDevice()
self.device.server = MagicMock()
self.device.server.jsonrpc = MagicMock()
self.device.server.jsonrpc_wrap = MagicMock()

def test_info(self):
self.device.server.jsonrpc.deviceInfo = MagicMock()
Expand Down Expand Up @@ -209,26 +210,26 @@ def test_sleep(self):
self.device.server.jsonrpc.sleep.assert_called_once_with()

def test_wait_idle(self):
self.device.server.jsonrpc.waitForIdle = MagicMock()
self.device.server.jsonrpc.waitForIdle.return_value = True
self.device.server.jsonrpc_wrap.return_value.waitForIdle = MagicMock()
self.device.server.jsonrpc_wrap.return_value.waitForIdle.return_value = True
self.assertTrue(self.device.wait.idle(timeout=10))
self.device.server.jsonrpc.waitForIdle.assert_called_once_with(10)
self.device.server.jsonrpc_wrap.return_value.waitForIdle.assert_called_once_with(10)

self.device.server.jsonrpc.waitForIdle = MagicMock()
self.device.server.jsonrpc.waitForIdle.return_value = False
self.device.server.jsonrpc_wrap.return_value.waitForIdle = MagicMock()
self.device.server.jsonrpc_wrap.return_value.waitForIdle.return_value = False
self.assertFalse(self.device.wait("idle", timeout=10))
self.device.server.jsonrpc.waitForIdle.assert_called_once_with(10)
self.device.server.jsonrpc_wrap.return_value.waitForIdle.assert_called_once_with(10)

def test_wait_update(self):
self.device.server.jsonrpc.waitForWindowUpdate = MagicMock()
self.device.server.jsonrpc.waitForWindowUpdate.return_value = True
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate = MagicMock()
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate.return_value = True
self.assertTrue(self.device.wait.update(timeout=10, package_name="android"))
self.device.server.jsonrpc.waitForWindowUpdate.assert_called_once_with("android", 10)
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate.assert_called_once_with("android", 10)

self.device.server.jsonrpc.waitForWindowUpdate = MagicMock()
self.device.server.jsonrpc.waitForWindowUpdate.return_value = False
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate = MagicMock()
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate.return_value = False
self.assertFalse(self.device.wait("update", timeout=100, package_name="android"))
self.device.server.jsonrpc.waitForWindowUpdate.assert_called_once_with("android", 100)
self.device.server.jsonrpc_wrap.return_value.waitForWindowUpdate.assert_called_once_with("android", 100)

def test_get_info_attr(self):
info = {"test_a": 1, "test_b": "string", "displayWidth": 720, "displayHeight": 1024}
Expand All @@ -253,6 +254,7 @@ def test_device_obj(self):
AutomatorDeviceObject.return_value.exists = False
self.assertFalse(self.device.exists(text="..."))


class TestDeviceWithSerial(unittest.TestCase):

def test_serial(self):
Expand Down
9 changes: 5 additions & 4 deletions test/test_device_obj.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class TestDeviceObj(unittest.TestCase):
def setUp(self):
self.device = MagicMock()
self.jsonrpc = self.device.server.jsonrpc = MagicMock()
self.jsonrpc_wrap = self.device.server.jsonrpc_wrap = MagicMock()
self.kwargs = {"text": "text", "className": "android"}
self.obj = AutomatorDeviceObject(self.device,
Selector(**self.kwargs))
Expand Down Expand Up @@ -319,12 +320,12 @@ def test_scroll(self):

def test_wait(self):
timeout = 3000
self.jsonrpc.waitUntilGone.return_value = True
self.jsonrpc_wrap.return_value.waitUntilGone.return_value = True
self.assertTrue(self.obj.wait.gone())
self.jsonrpc.waitUntilGone.assert_called_once_with(self.obj.selector, timeout)
self.jsonrpc.waitForExists.return_value = True
self.jsonrpc_wrap.return_value.waitUntilGone.assert_called_once_with(self.obj.selector, timeout)
self.jsonrpc_wrap.return_value.waitForExists.return_value = True
self.assertTrue(self.obj.wait.exists(timeout=10))
self.jsonrpc.waitForExists.assert_called_once_with(self.obj.selector, 10)
self.jsonrpc_wrap.return_value.waitForExists.assert_called_once_with(self.obj.selector, 10)

def test_child_by_text(self):
self.jsonrpc.childByText.return_value = "myname"
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py27, py32, py33, pypy
envlist = py27, py34, pypy
indexserver =
default = http://pypi.douban.com/simple

Expand Down
25 changes: 18 additions & 7 deletions uiautomator/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
except: # to fix python setup error on Windows.
pass

__version__ = "0.1.31"
__version__ = "0.1.32"
__author__ = "Xiaocong He"
__all__ = ["device", "Device", "rect", "point", "Selector", "JsonRPCError"]

Expand Down Expand Up @@ -257,7 +257,7 @@ def adb(self):

def cmd(self, *args):
'''adb command, add -s serial by default. return the subprocess.Popen object.'''
cmd_line = ["-s", self.device_serial()] + list(args)
cmd_line = ["-s", "'%s'" % self.device_serial()] + list(args)
return self.raw_cmd(*cmd_line)

def raw_cmd(self, *args):
Expand Down Expand Up @@ -288,7 +288,7 @@ def devices(self):
index = out.find(match)
if index < 0:
raise EnvironmentError("adb is not working.")
return dict([s.split() for s in out[index + len(match):].strip().splitlines() if s.strip()])
return dict([s.split("\t") for s in out[index + len(match):].strip().splitlines() if s.strip()])

def forward(self, local_port, device_port):
'''adb port forward. return 0 if success, else non-zero.'''
Expand Down Expand Up @@ -384,6 +384,9 @@ def download(self, filename, url):

@property
def jsonrpc(self):
return self.jsonrpc_wrap(timeout=int(os.environ.get("jsonrpc_timeout", 90)))

def jsonrpc_wrap(self, timeout):
server = self
ERROR_CODE_BASE = -32000

Expand Down Expand Up @@ -418,7 +421,7 @@ def wrapper(*args, **kwargs):
return wrapper

return JsonRPCClient(self.rpc_uri,
timeout=int(os.environ.get("JSONRPC_TIMEOUT", 90)),
timeout=timeout,
method_class=_JsonRPCMethod)

def __jsonrpc(self):
Expand Down Expand Up @@ -739,10 +742,14 @@ def wait(self):
'''
@param_to_property(action=["idle", "update"])
def _wait(action, timeout=1000, package_name=None):
if timeout/1000 + 5 > int(os.environ.get("JSONRPC_TIMEOUT", 90)):
http_timeout = timeout/1000 + 5
else:
http_timeout = int(os.environ.get("JSONRPC_TIMEOUT", 90))
if action == "idle":
return self.server.jsonrpc.waitForIdle(timeout)
return self.server.jsonrpc_wrap(timeout=http_timeout).waitForIdle(timeout)
elif action == "update":
return self.server.jsonrpc.waitForWindowUpdate(package_name, timeout)
return self.server.jsonrpc_wrap(timeout=http_timeout).waitForWindowUpdate(package_name, timeout)
return _wait

def exists(self, **kwargs):
Expand Down Expand Up @@ -918,7 +925,11 @@ def wait(self):
'''
@param_to_property(action=["exists", "gone"])
def _wait(action, timeout=3000):
method = self.jsonrpc.waitUntilGone if action == "gone" else self.jsonrpc.waitForExists
if timeout/1000 + 5 > int(os.environ.get("JSONRPC_TIMEOUT", 90)):
http_timeout = timeout/1000 + 5
else:
http_timeout = int(os.environ.get("JSONRPC_TIMEOUT", 90))
method = self.device.server.jsonrpc_wrap(timeout=http_timeout).waitUntilGone if action == "gone" else self.device.server.jsonrpc_wrap(timeout=http_timeout).waitForExists
return method(self.selector, timeout)
return _wait

Expand Down
Binary file modified uiautomator/libs/bundle.jar
Binary file not shown.
Binary file modified uiautomator/libs/uiautomator-stub.jar
Binary file not shown.

0 comments on commit 2377134

Please sign in to comment.