run_loop 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/run_loop/device.rb +16 -4
- data/lib/run_loop/device_agent/Frameworks.zip +0 -0
- data/lib/run_loop/device_agent/app/DeviceAgent-Runner.app.zip +0 -0
- data/lib/run_loop/device_agent/bin/CLI.json +1 -1
- data/lib/run_loop/device_agent/bin/iOSDeviceManager +0 -0
- data/lib/run_loop/device_agent/client.rb +97 -25
- data/lib/run_loop/device_agent/ipa/DeviceAgent-Runner.app.zip +0 -0
- data/lib/run_loop/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c125e357c95d69d1ef1e4b74ce1bfbf4faddb920
|
4
|
+
data.tar.gz: f27d253bba7d6f3faeb4ee37d9f4d0e209d1393b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 009bddf011cdb692c5ee738b0b9a2e4a3c033e4b01fb29e0db6b548cadea44be2d068b3190af2a34db4b7c38cf7ed880b03c23943a7769f974da0d106ad98742
|
7
|
+
data.tar.gz: e26d021e69d642bdc9c115e47a235c993b837ac5b88ceaab43570bd86a3f0756de7d37ffea55418cf6818628eeb2cf8af6579decc4ca69924c450dba3a8db6fd
|
data/lib/run_loop/device.rb
CHANGED
@@ -110,8 +110,8 @@ removed (1.5.0). It has been replaced by an options hash with two keys:
|
|
110
110
|
|
111
111
|
instruments = merged_options[:instruments]
|
112
112
|
simctl = merged_options[:simctl]
|
113
|
+
xcode = merged_options[:xcode]
|
113
114
|
|
114
|
-
xcode = RunLoop::Xcode.new
|
115
115
|
simulator = simctl.simulators.detect do |sim|
|
116
116
|
sim.instruments_identifier(xcode) == udid_or_name ||
|
117
117
|
sim.udid == udid_or_name
|
@@ -376,7 +376,10 @@ version: #{version}
|
|
376
376
|
# iOS 9 simulators have an additional boot screen.
|
377
377
|
is_gte_ios9 = version >= RunLoop::Version.new('9.0')
|
378
378
|
|
379
|
-
#
|
379
|
+
# Xcode 8 simulators do not need to wait for log file
|
380
|
+
is_xcode8 = RunLoop::Xcode.new.version_gte_8?
|
381
|
+
|
382
|
+
# iOS > 9 iPad simulators need additional time to stabilize, especially
|
380
383
|
# to ensure that `simctl install` notifies SpringBoard that a new app
|
381
384
|
# has been installed.
|
382
385
|
is_ipad = simulator_is_ipad?
|
@@ -388,7 +391,12 @@ version: #{version}
|
|
388
391
|
RunLoop.log_debug("Waiting for simulator to stabilize with timeout: #{timeout} seconds")
|
389
392
|
|
390
393
|
current_dir_sha = simulator_data_directory_sha
|
391
|
-
|
394
|
+
if is_xcode8
|
395
|
+
current_log_sha = true
|
396
|
+
else
|
397
|
+
current_log_sha = simulator_log_file_sha
|
398
|
+
end
|
399
|
+
|
392
400
|
is_stable = false
|
393
401
|
waited_for_boot = false
|
394
402
|
waited_for_ipad = false
|
@@ -396,7 +404,11 @@ version: #{version}
|
|
396
404
|
|
397
405
|
while Time.now < poll_until do
|
398
406
|
latest_dir_sha = simulator_data_directory_sha
|
399
|
-
|
407
|
+
if is_xcode8
|
408
|
+
latest_log_sha = true
|
409
|
+
else
|
410
|
+
latest_log_sha = simulator_log_file_sha
|
411
|
+
end
|
400
412
|
|
401
413
|
is_stable = [current_dir_sha == latest_dir_sha,
|
402
414
|
current_log_sha == latest_log_sha].all?
|
Binary file
|
Binary file
|
Binary file
|
@@ -84,8 +84,13 @@ module RunLoop
|
|
84
84
|
options,
|
85
85
|
app_details)
|
86
86
|
|
87
|
+
default_options = {
|
88
|
+
:xcode => xcode
|
89
|
+
}
|
90
|
+
merged_options = default_options.merge(options)
|
91
|
+
|
87
92
|
if device.simulator? && app
|
88
|
-
core_sim = RunLoop::CoreSimulator.new(device, app,
|
93
|
+
core_sim = RunLoop::CoreSimulator.new(device, app, merged_options)
|
89
94
|
if reset_options
|
90
95
|
core_sim.reset_app_sandbox
|
91
96
|
end
|
@@ -317,7 +322,7 @@ INSTANCE METHODS
|
|
317
322
|
|
318
323
|
# @!visibility private
|
319
324
|
def tree
|
320
|
-
options =
|
325
|
+
options = tree_http_options
|
321
326
|
request = request("tree")
|
322
327
|
client = http_client(options)
|
323
328
|
response = client.get(request)
|
@@ -336,12 +341,44 @@ INSTANCE METHODS
|
|
336
341
|
result.count != 0
|
337
342
|
end
|
338
343
|
|
344
|
+
# @!visibility private
|
345
|
+
def clear_text
|
346
|
+
options = enter_text_http_options
|
347
|
+
parameters = {
|
348
|
+
:gesture => "clear_text"
|
349
|
+
}
|
350
|
+
request = request("gesture", parameters)
|
351
|
+
client = http_client(options)
|
352
|
+
response = client.post(request)
|
353
|
+
expect_300_response(response)
|
354
|
+
end
|
355
|
+
|
339
356
|
# @!visibility private
|
340
357
|
def enter_text(string)
|
341
358
|
if !keyboard_visible?
|
342
359
|
raise RuntimeError, "Keyboard must be visible"
|
343
360
|
end
|
344
|
-
options =
|
361
|
+
options = enter_text_http_options
|
362
|
+
parameters = {
|
363
|
+
:gesture => "enter_text",
|
364
|
+
:options => {
|
365
|
+
:string => string
|
366
|
+
}
|
367
|
+
}
|
368
|
+
request = request("gesture", parameters)
|
369
|
+
client = http_client(options)
|
370
|
+
response = client.post(request)
|
371
|
+
expect_300_response(response)
|
372
|
+
end
|
373
|
+
|
374
|
+
# @!visibility private
|
375
|
+
#
|
376
|
+
# Some clients are performing keyboard checks _before_ calling #enter_text.
|
377
|
+
#
|
378
|
+
# 1. Removes duplicate check.
|
379
|
+
# 2. It turns out DeviceAgent query can be very slow.
|
380
|
+
def enter_text_without_keyboard_check(string)
|
381
|
+
options = enter_text_http_options
|
345
382
|
parameters = {
|
346
383
|
:gesture => "enter_text",
|
347
384
|
:options => {
|
@@ -377,6 +414,12 @@ INSTANCE METHODS
|
|
377
414
|
# query({text: "\"To know is not enough.\""})
|
378
415
|
# query({text: %Q["To know is not enough."]})
|
379
416
|
#
|
417
|
+
# # Equivalent to Calabash query("*")
|
418
|
+
# query({})
|
419
|
+
#
|
420
|
+
# # Equivalent to Calabash query("all *")
|
421
|
+
# query({all: true})
|
422
|
+
#
|
380
423
|
# Querying for text with newlines is not supported yet.
|
381
424
|
#
|
382
425
|
# The query language supports the following keys:
|
@@ -449,45 +492,40 @@ INSTANCE METHODS
|
|
449
492
|
raise ArgumentError, %Q[
|
450
493
|
Unsupported key or keys found: '#{unknown_keys}'.
|
451
494
|
|
452
|
-
Allowed keys for a query are:
|
453
|
-
|
454
|
-
]
|
455
|
-
end
|
456
|
-
|
457
|
-
has_any_key = (allowed_keys & uiquery.keys).any?
|
458
|
-
if !has_any_key
|
459
|
-
keys = allowed_keys.map { |key| ":#{key}" }.join(", ")
|
460
|
-
raise ArgumentError, %Q[
|
461
|
-
Query does not contain any keysUnsupported key or keys found: '#{unknown_keys}'.
|
495
|
+
Allowed keys for a query are:
|
462
496
|
|
463
|
-
|
497
|
+
#{keys}
|
464
498
|
|
465
499
|
]
|
466
500
|
end
|
467
501
|
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
502
|
+
if _wildcard_query?(uiquery)
|
503
|
+
elements = _flatten_tree
|
504
|
+
else
|
505
|
+
parameters = merged_options.dup.tap { |hs| hs.delete(:all) }
|
506
|
+
if parameters.empty?
|
507
|
+
keys = allowed_keys.map { |key| ":#{key}" }.join(", ")
|
508
|
+
raise ArgumentError, %Q[
|
472
509
|
Query must contain at least one of these keys:
|
473
510
|
|
474
511
|
#{keys}
|
475
512
|
|
476
513
|
]
|
477
|
-
|
514
|
+
end
|
478
515
|
|
479
|
-
|
480
|
-
|
516
|
+
request = request("query", parameters)
|
517
|
+
client = http_client(http_options)
|
481
518
|
|
482
|
-
|
519
|
+
RunLoop.log_debug %Q[Sending query with parameters:
|
483
520
|
|
484
521
|
#{JSON.pretty_generate(parameters)}
|
485
522
|
|
486
523
|
]
|
487
524
|
|
488
|
-
|
489
|
-
|
490
|
-
|
525
|
+
response = client.post(request)
|
526
|
+
hash = expect_300_response(response)
|
527
|
+
elements = hash["result"]
|
528
|
+
end
|
491
529
|
|
492
530
|
if merged_options[:all]
|
493
531
|
elements
|
@@ -1030,6 +1068,30 @@ PRIVATE
|
|
1030
1068
|
end
|
1031
1069
|
end
|
1032
1070
|
|
1071
|
+
# @!visibility private
|
1072
|
+
#
|
1073
|
+
# Tree can take a very long time.
|
1074
|
+
def tree_http_options
|
1075
|
+
timeout = DEFAULTS[:http_timeout] * 6
|
1076
|
+
{
|
1077
|
+
:timeout => timeout,
|
1078
|
+
:interval => 0.1,
|
1079
|
+
:retries => (timeout/0.1).to_i
|
1080
|
+
}
|
1081
|
+
end
|
1082
|
+
|
1083
|
+
# @!visibility private
|
1084
|
+
#
|
1085
|
+
# A patch while we are trying to figure out what is wrong with text entry.
|
1086
|
+
def enter_text_http_options
|
1087
|
+
timeout = DEFAULTS[:http_timeout] * 6
|
1088
|
+
{
|
1089
|
+
:timeout => timeout,
|
1090
|
+
:interval => 0.1,
|
1091
|
+
:retries => (timeout/0.1).to_i
|
1092
|
+
}
|
1093
|
+
end
|
1094
|
+
|
1033
1095
|
# @!visibility private
|
1034
1096
|
def server_pid
|
1035
1097
|
options = http_options
|
@@ -1394,6 +1456,16 @@ Valid values are: :down, :up, :right, :left, :bottom, :top
|
|
1394
1456
|
response = client.post(request)
|
1395
1457
|
expect_300_response(response)
|
1396
1458
|
end
|
1459
|
+
|
1460
|
+
# @!visibility private
|
1461
|
+
# Private method. Do not call.
|
1462
|
+
def _wildcard_query?(uiquery)
|
1463
|
+
return true if uiquery.empty?
|
1464
|
+
return false if uiquery.count != 1
|
1465
|
+
|
1466
|
+
uiquery.has_key?(:all)
|
1467
|
+
end
|
1468
|
+
|
1397
1469
|
end
|
1398
1470
|
end
|
1399
1471
|
end
|
Binary file
|
data/lib/run_loop/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: run_loop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Krukow
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -301,6 +301,20 @@ dependencies:
|
|
301
301
|
- - ">="
|
302
302
|
- !ruby/object:Gem::Version
|
303
303
|
version: '0'
|
304
|
+
- !ruby/object:Gem::Dependency
|
305
|
+
name: rb-readline
|
306
|
+
requirement: !ruby/object:Gem::Requirement
|
307
|
+
requirements:
|
308
|
+
- - ">="
|
309
|
+
- !ruby/object:Gem::Version
|
310
|
+
version: '0'
|
311
|
+
type: :development
|
312
|
+
prerelease: false
|
313
|
+
version_requirements: !ruby/object:Gem::Requirement
|
314
|
+
requirements:
|
315
|
+
- - ">="
|
316
|
+
- !ruby/object:Gem::Version
|
317
|
+
version: '0'
|
304
318
|
description:
|
305
319
|
email:
|
306
320
|
- karl.krukow@xamarin.com
|
@@ -412,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
412
426
|
version: '0'
|
413
427
|
requirements: []
|
414
428
|
rubyforge_project:
|
415
|
-
rubygems_version: 2.
|
429
|
+
rubygems_version: 2.5.1
|
416
430
|
signing_key:
|
417
431
|
specification_version: 4
|
418
432
|
summary: The bridge between Calabash iOS and Xcode command-line tools like instruments
|