run_loop 1.0.2 → 1.0.3
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/core.rb +38 -39
- data/lib/run_loop/version.rb +1 -1
- data/lib/run_loop/xctools.rb +31 -10
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2de16f5cb3f91a4a5d0cf8f056a4a128d0cb906a
|
4
|
+
data.tar.gz: 58244f2475fa2ea431e18022545e02498d86dc4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd98dcee58d56074c95ada808a4fe0b19a05bf8ece5f8c5fedfd9d55119bf8e5bdee8831b5f7b50471053aea2bc676af682cbabe18a653479b19677890a9f2f
|
7
|
+
data.tar.gz: da03c9b79b3435b11fc832268ddd8bb72e05e9e52f9b3a0bd3070b2470be53a32cb6ffa1fe41d32f59ab8ba48326054512f9a892475d4f9bc25fb16394b39a47
|
data/lib/run_loop/core.rb
CHANGED
@@ -4,6 +4,7 @@ require 'timeout'
|
|
4
4
|
require 'json'
|
5
5
|
require 'open3'
|
6
6
|
require 'erb'
|
7
|
+
require 'ap'
|
7
8
|
|
8
9
|
module RunLoop
|
9
10
|
|
@@ -29,6 +30,23 @@ module RunLoop
|
|
29
30
|
SCRIPTS_PATH
|
30
31
|
end
|
31
32
|
|
33
|
+
def self.log_run_loop_options(options, xctools)
|
34
|
+
return unless ENV['DEBUG'] == '1'
|
35
|
+
# Ignore :sim_control b/c it is a ruby object; printing is not useful.
|
36
|
+
ignored_keys = [:sim_control]
|
37
|
+
options_to_log = {}
|
38
|
+
options.each_pair do |key, value|
|
39
|
+
next if ignored_keys.include?(key)
|
40
|
+
options_to_log[key] = value
|
41
|
+
end
|
42
|
+
# Objects that override '==' cannot be printed by awesome_print
|
43
|
+
# https://github.com/michaeldv/awesome_print/issues/154
|
44
|
+
# RunLoop::Version overrides '=='
|
45
|
+
options_to_log[:xcode] = xctools.xcode_version.to_s
|
46
|
+
options_to_log[:xcode_path] = xctools.xcode_developer_dir
|
47
|
+
ap(options_to_log, {:sort_keys => true})
|
48
|
+
end
|
49
|
+
|
32
50
|
# @deprecated since 1.0.0
|
33
51
|
# still used extensively in calabash-ios launcher
|
34
52
|
def self.above_or_eql_version?(target_version, xcode_version)
|
@@ -127,39 +145,26 @@ module RunLoop
|
|
127
145
|
|
128
146
|
log_file ||= File.join(results_dir, 'run_loop.out')
|
129
147
|
|
130
|
-
if ENV['DEBUG']=='1'
|
131
|
-
exclude = [:device_target, :udid, :sim_control, :args, :inject_dylib, :app]
|
132
|
-
options.each_pair { |key, value|
|
133
|
-
unless exclude.include? key
|
134
|
-
puts "#{key} => #{value}"
|
135
|
-
end
|
136
|
-
}
|
137
|
-
puts "device_target=#{device_target}"
|
138
|
-
puts "udid=#{udid}"
|
139
|
-
puts "bundle_dir_or_bundle_id=#{bundle_dir_or_bundle_id}"
|
140
|
-
puts "script=#{script}"
|
141
|
-
puts "log_file=#{log_file}"
|
142
|
-
puts "timeout=#{timeout}"
|
143
|
-
puts "uia_strategy=#{options[:uia_strategy]}"
|
144
|
-
puts "args=#{args}"
|
145
|
-
puts "inject_dylib=#{inject_dylib}"
|
146
|
-
end
|
147
|
-
|
148
148
|
after = Time.now
|
149
|
-
|
150
149
|
if ENV['DEBUG']=='1'
|
151
150
|
puts "Preparation took #{after-before} seconds"
|
152
|
-
|
153
151
|
end
|
154
152
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
153
|
+
discovered_options =
|
154
|
+
{
|
155
|
+
:udid => udid,
|
156
|
+
:results_dir_trace => results_dir_trace,
|
157
|
+
:bundle_dir_or_bundle_id => bundle_dir_or_bundle_id,
|
158
|
+
:results_dir => results_dir,
|
159
|
+
:script => script,
|
160
|
+
:log_file => log_file,
|
161
|
+
:args => args
|
162
|
+
}
|
163
|
+
merged_options = options.merge(discovered_options)
|
164
|
+
|
165
|
+
self.log_run_loop_options(merged_options, xctools)
|
166
|
+
|
167
|
+
cmd = instruments_command(merged_options, xctools)
|
163
168
|
|
164
169
|
log_header("Starting on #{device_target} App: #{bundle_dir_or_bundle_id}")
|
165
170
|
cmd_str = cmd.join(' ')
|
@@ -247,17 +252,11 @@ module RunLoop
|
|
247
252
|
end
|
248
253
|
rescue TimeoutError => e
|
249
254
|
if ENV['DEBUG']
|
250
|
-
puts "Failed to launch
|
251
|
-
puts "
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
puts "script=#{script}"
|
256
|
-
puts "log_file=#{log_file}"
|
257
|
-
puts "timeout=#{timeout}"
|
258
|
-
puts "uia_strategy=#{uia_strategy}"
|
259
|
-
puts "args=#{args}"
|
260
|
-
puts "lldb_output=#{raw_lldb_output}" if raw_lldb_output
|
255
|
+
puts "Failed to launch."
|
256
|
+
puts "#{e}: #{e && e.message}"
|
257
|
+
if raw_lldb_output
|
258
|
+
puts "LLDB OUTPUT: #{raw_lldb_output}"
|
259
|
+
end
|
261
260
|
end
|
262
261
|
raise TimeoutError, "Time out waiting for UIAutomation run-loop to Start. \n Logfile #{log_file} \n\n #{File.read(log_file)}\n"
|
263
262
|
end
|
data/lib/run_loop/version.rb
CHANGED
data/lib/run_loop/xctools.rb
CHANGED
@@ -108,6 +108,14 @@ module RunLoop
|
|
108
108
|
instruments = 'xcrun instruments'
|
109
109
|
return instruments if cmd == nil
|
110
110
|
|
111
|
+
# Xcode 6 GM is spamming "WebKit Threading Violations"
|
112
|
+
stderr_filter = lambda { |stderr|
|
113
|
+
stderr.read.strip.split("\n").each do |line|
|
114
|
+
unless line[/WebKit Threading Violation/, 0]
|
115
|
+
$stderr.puts line
|
116
|
+
end
|
117
|
+
end
|
118
|
+
}
|
111
119
|
case cmd
|
112
120
|
when :version
|
113
121
|
@instruments_version ||= lambda {
|
@@ -121,15 +129,24 @@ module RunLoop
|
|
121
129
|
}.call
|
122
130
|
when :sims
|
123
131
|
@instruments_sims ||= lambda {
|
124
|
-
|
125
|
-
|
132
|
+
# Instruments 6 spams a lot of error messages. I don't like to
|
133
|
+
# hide them, but they seem to be around to stay (Xcode 6 GM).
|
134
|
+
cmd = "#{instruments} -s devices"
|
135
|
+
Open3.popen3(cmd) do |_, stdout, stderr, _|
|
136
|
+
stderr_filter.call(stderr)
|
137
|
+
devices = stdout.read.chomp.split("\n")
|
138
|
+
devices.select { |device| device.downcase.include?('simulator') }
|
139
|
+
end
|
126
140
|
}.call
|
127
141
|
|
128
142
|
when :templates
|
129
143
|
@instruments_templates ||= lambda {
|
130
144
|
cmd = "#{instruments} -s templates"
|
131
145
|
if self.xcode_version >= self.v60
|
132
|
-
|
146
|
+
Open3.popen3(cmd) do |_, stdout, stderr, _|
|
147
|
+
stderr_filter.call(stderr)
|
148
|
+
stdout.read.chomp.split("\n").map { |elm| elm.strip.tr('"', '') }
|
149
|
+
end
|
133
150
|
elsif self.xcode_version >= self.v51
|
134
151
|
`#{cmd}`.split("\n").delete_if do |path|
|
135
152
|
not path =~ /tracetemplate/
|
@@ -146,13 +163,17 @@ module RunLoop
|
|
146
163
|
|
147
164
|
when :devices
|
148
165
|
@devices ||= lambda {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
166
|
+
cmd = "#{instruments} -s devices"
|
167
|
+
Open3.popen3(cmd) do |_, stdout, stderr, _|
|
168
|
+
stderr_filter.call(stderr)
|
169
|
+
all = stdout.read.chomp.split("\n")
|
170
|
+
valid = all.select { |device| device =~ /[a-f0-9]{40}/ }
|
171
|
+
valid.map do |device|
|
172
|
+
udid = device[/[a-f0-9]{40}/, 0]
|
173
|
+
version = device[/(\d\.\d(\.\d)?)/, 0]
|
174
|
+
name = device.split('(').first.strip
|
175
|
+
RunLoop::Device.new(name, version, udid)
|
176
|
+
end
|
156
177
|
end
|
157
178
|
}.call
|
158
179
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: run_loop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Krukow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.3.3.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: awesome_print
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.2.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.2.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: CFPropertyList
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +136,6 @@ dependencies:
|
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '10.3'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: awesome_print
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.2'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '1.2'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: guard-rspec
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|