Module: RunLoop
- Defined in:
- lib/run_loop/cli.rb,
lib/run_loop/core.rb,
lib/run_loop/version.rb
Defined Under Namespace
Modules: Core
Classes: CLI, TimeoutError
Constant Summary
collapse
- VERSION =
'0.0.20'
Class Method Summary
collapse
Class Method Details
.run(options = {}) ⇒ Object
345
346
347
348
349
350
|
# File 'lib/run_loop/core.rb', line 345
def self.run(options={})
script = validate_script(options)
options[:script] = script
Core.run_with_options(options)
end
|
.send_command(run_loop, cmd, timeout = 60) ⇒ Object
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
# File 'lib/run_loop/core.rb', line 352
def self.send_command(run_loop, cmd, timeout=60)
if not cmd.is_a?(String)
raise "Illegal command #{cmd} (must be a string)"
end
expected_index = Core.write_request(run_loop, cmd)
result = nil
begin
Timeout::timeout(timeout, TimeoutError) do
result = Core.read_response(run_loop, expected_index)
end
rescue TimeoutError => e
raise TimeoutError, "Time out waiting for UIAutomation run-loop for command #{cmd}. Waiting for index:#{expected_index}"
end
result
end
|
.stop(run_loop, out = Dir.pwd) ⇒ Object
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
|
# File 'lib/run_loop/core.rb', line 374
def self.stop(run_loop, out=Dir.pwd)
return if run_loop.nil?
results_dir = run_loop[:results_dir]
udid = run_loop[:udid]
instruments_prefix = Core.instruments_command_prefix(udid, results_dir)
pid = run_loop[:pid] || IO.read(File.join(results_dir, "run_loop.pid"))
dest = out
Core.pids_for_run_loop(run_loop) do |pid|
Process.kill('TERM', pid.to_i)
end
FileUtils.mkdir_p(dest)
pngs = Dir.glob(File.join(results_dir, "Run 1", "*.png"))
FileUtils.cp(pngs, dest) if pngs and pngs.length > 0
end
|
.validate_script(options) ⇒ Object
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
|
# File 'lib/run_loop/core.rb', line 392
def self.validate_script(options)
script = options[:script]
if script
if script.is_a?(Symbol)
script = Core.script_for_key(script)
unless script
raise "Unknown script for symbol: #{options[:script]}. Options: #{Core::SCRIPTS.keys.join(', ')}"
end
elsif script.is_a?(String)
unless File.exist?(script)
raise "File does not exist: #{script}"
end
else
raise "Unknown type for :script key: #{options[:script].class}"
end
else
script = Core.script_for_key(:run_loop)
end
script
end
|