run_loop 0.2.1 → 1.0.0.pre3
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.rb +4 -1
- data/lib/run_loop/core.rb +94 -46
- data/lib/run_loop/device.rb +22 -0
- data/lib/run_loop/plist_buddy.rb +173 -0
- data/lib/run_loop/sim_control.rb +787 -0
- data/lib/run_loop/version.rb +161 -1
- data/lib/run_loop/xctools.rb +184 -0
- data/scripts/calabash.lldb.erb +4 -0
- metadata +179 -29
- data/.gitignore +0 -22
- data/.gitmodules +0 -3
- data/.irbrc +0 -19
- data/CHANGES.txt +0 -1
- data/Gemfile +0 -4
- data/README.md +0 -7
- data/Rakefile +0 -2
- data/build_to_run_loop.sh +0 -2
- data/docs/intro.md +0 -17
- data/irb.sh +0 -2
- data/run_loop.gemspec +0 -22
data/lib/run_loop/version.rb
CHANGED
@@ -1,3 +1,163 @@
|
|
1
1
|
module RunLoop
|
2
|
-
VERSION = '0.
|
2
|
+
VERSION = '1.0.0.pre3'
|
3
|
+
|
4
|
+
# A model of a software release version that can be used to compare two versions.
|
5
|
+
#
|
6
|
+
# Calabash and RunLoop try very hard to comply with Semantic Versioning rules.
|
7
|
+
# However, the semantic versioning spec is incompatible with RubyGem's patterns
|
8
|
+
# for pre-release gems.
|
9
|
+
#
|
10
|
+
# > "But returning to the practical: No release version of SemVer is compatible with Rubygems." - _David Kellum_
|
11
|
+
#
|
12
|
+
# Calabash and RunLoop version numbers will be in the form `<major>.<minor>.<patch>[.pre<N>]`.
|
13
|
+
#
|
14
|
+
# @see http://semver.org/
|
15
|
+
# @see http://gravitext.com/2012/07/22/versioning.html
|
16
|
+
class Version
|
17
|
+
|
18
|
+
# @!attribute [rw] major
|
19
|
+
# @return [Integer] the major version
|
20
|
+
attr_accessor :major
|
21
|
+
|
22
|
+
# @!attribute [rw] minor
|
23
|
+
# @return [Integer] the minor version
|
24
|
+
attr_accessor :minor
|
25
|
+
|
26
|
+
# @!attribute [rw] patch
|
27
|
+
# @return [Integer] the patch version
|
28
|
+
attr_accessor :patch
|
29
|
+
|
30
|
+
# @!attribute [rw] pre
|
31
|
+
# @return [Boolean] true if this is a pre-release version
|
32
|
+
attr_accessor :pre
|
33
|
+
|
34
|
+
# @!attribute [rw] pre_version
|
35
|
+
# @return [Integer] if this is a pre-release version, returns the
|
36
|
+
# pre-release version; otherwise this is nil
|
37
|
+
attr_accessor :pre_version
|
38
|
+
|
39
|
+
# Creates a new Version instance with all the attributes set.
|
40
|
+
#
|
41
|
+
# @example
|
42
|
+
# version = Version.new(0.10.1)
|
43
|
+
# version.major => 0
|
44
|
+
# version.minor => 10
|
45
|
+
# version.patch => 1
|
46
|
+
# version.pre => false
|
47
|
+
# version.pre_release => nil
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# version = Version.new(1.6.3.pre5)
|
51
|
+
# version.major => 1
|
52
|
+
# version.minor => 6
|
53
|
+
# version.patch => 3
|
54
|
+
# version.pre => true
|
55
|
+
# version.pre_release => 5
|
56
|
+
#
|
57
|
+
# @param [String] version the version string to parse.
|
58
|
+
# @raise [ArgumentError] if version is not in the form 5, 6.1, 7.1.2, 8.2.3.pre1
|
59
|
+
def initialize(version)
|
60
|
+
tokens = version.strip.split('.')
|
61
|
+
count = tokens.count
|
62
|
+
if tokens.empty?
|
63
|
+
raise ArgumentError, "expected '#{version}' to be like 5, 6.1, 7.1.2, 8.2.3.pre1"
|
64
|
+
end
|
65
|
+
|
66
|
+
if count < 4 and tokens.any? { |elm| elm =~ /\D/ }
|
67
|
+
raise ArgumentError, "expected '#{version}' to be like 5, 6.1, 7.1.2, 8.2.3.pre1"
|
68
|
+
end
|
69
|
+
|
70
|
+
if count == 4
|
71
|
+
@pre = tokens[3]
|
72
|
+
pre_tokens = @pre.scan(/\D+|\d+/)
|
73
|
+
@pre_version = pre_tokens[1].to_i if pre_tokens.count == 2
|
74
|
+
end
|
75
|
+
|
76
|
+
@major, @minor, @patch = version.split('.').map(&:to_i)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Returns an string representation of this version.
|
80
|
+
# @return [String] a string in the form `<major>.<minor>.<patch>[.pre<N>]`
|
81
|
+
def to_s
|
82
|
+
str = [major, minor, patch].compact.join('.')
|
83
|
+
str = "#{str}.#{pre}" if pre
|
84
|
+
str
|
85
|
+
end
|
86
|
+
|
87
|
+
# Compare this version to another for equality.
|
88
|
+
# @param [Version] other the version to compare against
|
89
|
+
# @return [Boolean] true if this Version is the same as `other`
|
90
|
+
def == (other)
|
91
|
+
Version.compare(self, other) == 0
|
92
|
+
end
|
93
|
+
|
94
|
+
# Compare this version to another for inequality.
|
95
|
+
# @param [Version] other the version to compare against
|
96
|
+
# @return [Boolean] true if this Version is not the same as `other`
|
97
|
+
def != (other)
|
98
|
+
Version.compare(self, other) != 0
|
99
|
+
end
|
100
|
+
|
101
|
+
# Is this version less-than another version?
|
102
|
+
# @param [Version] other the version to compare against
|
103
|
+
# @return [Boolean] true if this Version is less-than `other`
|
104
|
+
def < (other)
|
105
|
+
Version.compare(self, other) < 0
|
106
|
+
end
|
107
|
+
|
108
|
+
# Is this version greater-than another version?
|
109
|
+
# @param [Version] other the version to compare against
|
110
|
+
# @return [Boolean] true if this Version is greater-than `other`
|
111
|
+
def > (other)
|
112
|
+
Version.compare(self, other) > 0
|
113
|
+
end
|
114
|
+
|
115
|
+
# Is this version less-than or equal to another version?
|
116
|
+
# @param [Version] other the version to compare against
|
117
|
+
# @return [Boolean] true if this Version is less-than or equal `other`
|
118
|
+
def <= (other)
|
119
|
+
Version.compare(self, other) <= 0
|
120
|
+
end
|
121
|
+
|
122
|
+
# Is this version greater-than or equal to another version?
|
123
|
+
# @param [Version] other the version to compare against
|
124
|
+
# @return [Boolean] true if this Version is greater-than or equal `other`
|
125
|
+
def >= (other)
|
126
|
+
Version.compare(self, other) >= 0
|
127
|
+
end
|
128
|
+
|
129
|
+
# Compare version `a` to version `b`.
|
130
|
+
#
|
131
|
+
# @example
|
132
|
+
# compare Version.new(0.10.0), Version.new(0.9.0) => 1
|
133
|
+
# compare Version.new(0.9.0), Version.new(0.10.0) => -1
|
134
|
+
# compare Version.new(0.9.0), Version.new(0.9.0) => 0
|
135
|
+
#
|
136
|
+
# @return [Integer] an integer `(-1, 1)`
|
137
|
+
def self.compare(a, b)
|
138
|
+
|
139
|
+
if a.major != b.major
|
140
|
+
return a.major > b.major ? 1 : -1
|
141
|
+
end
|
142
|
+
|
143
|
+
if a.minor != b.minor
|
144
|
+
return a.minor.to_i > b.minor.to_i ? 1 : -1
|
145
|
+
end
|
146
|
+
|
147
|
+
if a.patch != b.patch
|
148
|
+
return a.patch.to_i > b.patch.to_i ? 1 : -1
|
149
|
+
end
|
150
|
+
|
151
|
+
return 1 if a.pre and (not b.pre)
|
152
|
+
return -1 if (not a.pre) and b.pre
|
153
|
+
|
154
|
+
return 1 if a.pre_version and (not b.pre_version)
|
155
|
+
return -1 if (not a.pre_version) and b.pre_version
|
156
|
+
|
157
|
+
if a.pre_version != b.pre_version
|
158
|
+
return a.pre_version.to_i > b.pre_version.to_i ? 1 : -1
|
159
|
+
end
|
160
|
+
0
|
161
|
+
end
|
162
|
+
end
|
3
163
|
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'open3'
|
2
|
+
require 'retriable'
|
3
|
+
|
4
|
+
module RunLoop
|
5
|
+
|
6
|
+
# A class for interacting with the Xcode tools.
|
7
|
+
#
|
8
|
+
# @note All command line tools are run in the context of `xcrun`.
|
9
|
+
#
|
10
|
+
# Throughout this class's documentation, there are references to the
|
11
|
+
# _current version of Xcode_. The current Xcode version is the one returned
|
12
|
+
# by `xcrun xcodebuild`. The current Xcode version can be set using
|
13
|
+
# `xcode-select` or overridden using the `DEVELOPER_DIR`.
|
14
|
+
#
|
15
|
+
# @todo Refactor instruments related code to instruments class.
|
16
|
+
class XCTools
|
17
|
+
|
18
|
+
# Returns a version instance for `Xcode 6.0`; used to check for the
|
19
|
+
# availability of features and paths to various items on the filesystem.
|
20
|
+
#
|
21
|
+
# @return [RunLoop::Version] 6.0
|
22
|
+
def v60
|
23
|
+
@xc60 ||= Version.new('6.0')
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a version instance for `Xcode 5.1`; used to check for the
|
27
|
+
# availability of features and paths to various items on the filesystem.
|
28
|
+
#
|
29
|
+
# @return [RunLoop::Version] 5.1
|
30
|
+
def v51
|
31
|
+
@xc51 ||= Version.new('5.1')
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns a version instance for `Xcode 5.0`; ; used to check for the
|
35
|
+
# availability of features and paths to various items on the filesystem.
|
36
|
+
#
|
37
|
+
# @return [RunLoop::Version] 5.0
|
38
|
+
def v50
|
39
|
+
@xc50 ||= Version.new('5.0')
|
40
|
+
end
|
41
|
+
|
42
|
+
# Are we running Xcode 6 or above?
|
43
|
+
#
|
44
|
+
# @return [Boolean] `true` if the current Xcode version is >= 6.0
|
45
|
+
def xcode_version_gte_6?
|
46
|
+
@xcode_gte_6 ||= xcode_version >= v60
|
47
|
+
end
|
48
|
+
|
49
|
+
# Are we running Xcode 5.1 or above?
|
50
|
+
#
|
51
|
+
# @return [Boolean] `true` if the current Xcode version is >= 5.1
|
52
|
+
def xcode_version_gte_51?
|
53
|
+
@xcode_gte_51 ||= xcode_version >= v51
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns the current version of Xcode.
|
57
|
+
#
|
58
|
+
# @return [RunLoop::Version] The current version of Xcode as reported by
|
59
|
+
# `xcrun xcodebuild -version`.
|
60
|
+
def xcode_version
|
61
|
+
@xcode_version ||= lambda {
|
62
|
+
xcode_build_output = `xcrun xcodebuild -version`.split(/\s/)[1]
|
63
|
+
Version.new(xcode_build_output)
|
64
|
+
}.call
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns the path to the current developer directory.
|
68
|
+
#
|
69
|
+
# From the man pages:
|
70
|
+
#
|
71
|
+
# ```
|
72
|
+
# $ man xcode-select
|
73
|
+
# DEVELOPER_DIR
|
74
|
+
# Overrides the active developer directory. When DEVELOPER_DIR is set,
|
75
|
+
# its value will be used instead of the system-wide active developer
|
76
|
+
# directory.
|
77
|
+
#```
|
78
|
+
#
|
79
|
+
# @return [String] path to current developer directory
|
80
|
+
def xcode_developer_dir
|
81
|
+
@xcode_developer_dir ||=
|
82
|
+
if ENV['DEVELOPER_DIR']
|
83
|
+
ENV['DEVELOPER_DIR']
|
84
|
+
else
|
85
|
+
# fall back to xcode-select
|
86
|
+
`xcode-select --print-path`.chomp
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Method for interacting with instruments.
|
91
|
+
#
|
92
|
+
# @example Getting a runnable command for instruments
|
93
|
+
# instruments #=> 'xcrun instruments'
|
94
|
+
#
|
95
|
+
# @example Getting a the version of instruments.
|
96
|
+
# instruments(:version) #=> 5.1.1 - a Version object
|
97
|
+
#
|
98
|
+
# @example Getting list of known simulators.
|
99
|
+
# instruments(:sims) #=> < list of known simulators >
|
100
|
+
#
|
101
|
+
# @param [Version] cmd controls the return value. currently accepts `nil`,
|
102
|
+
# `:sims`, `:templates`, and `:version` as valid parameters
|
103
|
+
# @return [String,Array,Version] based on the value of `cmd` version, a list known
|
104
|
+
# simulators, the version of current instruments tool, or the path to the
|
105
|
+
# instruments binary.
|
106
|
+
# @raise [ArgumentError] if invalid `cmd` is passed
|
107
|
+
def instruments(cmd=nil)
|
108
|
+
instruments = 'xcrun instruments'
|
109
|
+
return instruments if cmd == nil
|
110
|
+
|
111
|
+
case cmd
|
112
|
+
when :version
|
113
|
+
@instruments_version ||= lambda {
|
114
|
+
# Xcode 6 can print out some very strange output, so we have to retry.
|
115
|
+
Retriable.retriable({:tries => 5}) do
|
116
|
+
Open3.popen3("#{instruments}") do |_, _, stderr, _|
|
117
|
+
version_str = stderr.read.chomp.split(/\s/)[2]
|
118
|
+
Version.new(version_str)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
}.call
|
122
|
+
when :sims
|
123
|
+
@instruments_sims ||= lambda {
|
124
|
+
devices = `#{instruments} -s devices`.chomp.split("\n")
|
125
|
+
devices.select { |device| device.downcase.include?('simulator') }
|
126
|
+
}.call
|
127
|
+
|
128
|
+
when :templates
|
129
|
+
@instruments_templates ||= lambda {
|
130
|
+
cmd = "#{instruments} -s templates"
|
131
|
+
if self.xcode_version >= self.v51
|
132
|
+
`#{cmd}`.split("\n").delete_if do |path|
|
133
|
+
not path =~ /tracetemplate/
|
134
|
+
end.map { |elm| elm.strip }
|
135
|
+
else
|
136
|
+
# prints to $stderr (>_>) - seriously?
|
137
|
+
Open3.popen3(cmd) do |_, _, stderr, _|
|
138
|
+
stderr.read.chomp.split(/(,|\(|")/).map do |elm|
|
139
|
+
elm.strip
|
140
|
+
end.delete_if { |path| not path =~ /tracetemplate/ }
|
141
|
+
end
|
142
|
+
end
|
143
|
+
}.call
|
144
|
+
|
145
|
+
when :devices
|
146
|
+
@devices ||= lambda {
|
147
|
+
all = `#{instruments} -s devices`.chomp.split("\n")
|
148
|
+
valid = all.select { |device| device =~ /[a-f0-9]{40}/ }
|
149
|
+
valid.map do |device|
|
150
|
+
udid = device[/[a-f0-9]{40}/, 0]
|
151
|
+
version = device[/(\d\.\d(\.\d)?)/, 0]
|
152
|
+
name = device.split('(').first.strip
|
153
|
+
RunLoop::Device.new(name, version, udid)
|
154
|
+
end
|
155
|
+
}.call
|
156
|
+
else
|
157
|
+
candidates = [:version, :sims, :devices]
|
158
|
+
raise(ArgumentError, "expected '#{cmd}' to be one of '#{candidates}'")
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
# Does the instruments `version` accept the -s flag?
|
163
|
+
#
|
164
|
+
# @example
|
165
|
+
# instruments_supports_hyphen_s?('4.6.3') => false
|
166
|
+
# instruments_supports_hyphen_s?('5.0.2') => true
|
167
|
+
# instruments_supports_hyphen_s?('5.1') => true
|
168
|
+
#
|
169
|
+
# @param [String, Version] version (instruments(:version))
|
170
|
+
# a major.minor[.patch] version string or a Version object
|
171
|
+
#
|
172
|
+
# @return [Boolean] true if the version is >= 5.*
|
173
|
+
def instruments_supports_hyphen_s?(version=instruments(:version))
|
174
|
+
@instruments_supports_hyphen_s ||= lambda {
|
175
|
+
if version.is_a? String
|
176
|
+
_version = Version.new(version)
|
177
|
+
else
|
178
|
+
_version = version
|
179
|
+
end
|
180
|
+
_version >= Version.new('5.1')
|
181
|
+
}.call
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
metadata
CHANGED
@@ -1,78 +1,227 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: run_loop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre3
|
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-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.19'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.19'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: retriable
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.4'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: CFPropertyList
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.6'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.6'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: travis
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.7'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.7'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '10.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
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
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ~>
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.3'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ~>
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.3'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: guard-bundler
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ~>
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '2.0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '2.0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: growl
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ~>
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rb-readline
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ~>
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0.5'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ~>
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0.5'
|
41
195
|
description: calabash-cucumber drives tests for native iOS apps. RunLoop provides
|
42
196
|
a number of tools associated with running Calabash tests.
|
43
197
|
email:
|
44
|
-
- karl@
|
198
|
+
- karl.krukow@xamarin.com
|
45
199
|
executables:
|
46
200
|
- run-loop
|
47
201
|
extensions: []
|
48
202
|
extra_rdoc_files: []
|
49
203
|
files:
|
50
|
-
- scripts/udidetect
|
51
|
-
- .gitignore
|
52
|
-
- .gitmodules
|
53
|
-
- .irbrc
|
54
|
-
- CHANGES.txt
|
55
|
-
- Gemfile
|
56
|
-
- LICENSE
|
57
|
-
- README.md
|
58
|
-
- Rakefile
|
59
204
|
- bin/run-loop
|
60
|
-
- build_to_run_loop.sh
|
61
|
-
- docs/intro.md
|
62
|
-
- irb.sh
|
63
|
-
- lib/run_loop.rb
|
64
205
|
- lib/run_loop/cli.rb
|
65
206
|
- lib/run_loop/core.rb
|
207
|
+
- lib/run_loop/device.rb
|
208
|
+
- lib/run_loop/plist_buddy.rb
|
209
|
+
- lib/run_loop/sim_control.rb
|
66
210
|
- lib/run_loop/version.rb
|
67
|
-
- run_loop.
|
211
|
+
- lib/run_loop/xctools.rb
|
212
|
+
- lib/run_loop.rb
|
68
213
|
- scripts/calabash_script_uia.js
|
69
214
|
- scripts/json2-min.js
|
70
215
|
- scripts/json2.js
|
71
216
|
- scripts/run_dismiss_location.js
|
72
217
|
- scripts/run_loop_fast_uia.js
|
73
218
|
- scripts/run_loop_host.js
|
219
|
+
- scripts/udidetect
|
220
|
+
- scripts/calabash.lldb.erb
|
221
|
+
- LICENSE
|
74
222
|
homepage: http://calaba.sh
|
75
|
-
licenses:
|
223
|
+
licenses:
|
224
|
+
- MIT
|
76
225
|
metadata: {}
|
77
226
|
post_install_message:
|
78
227
|
rdoc_options: []
|
@@ -82,12 +231,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
231
|
requirements:
|
83
232
|
- - '>='
|
84
233
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
234
|
+
version: '1.9'
|
86
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
236
|
requirements:
|
88
|
-
- - '
|
237
|
+
- - '>'
|
89
238
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
239
|
+
version: 1.3.1
|
91
240
|
requirements: []
|
92
241
|
rubyforge_project:
|
93
242
|
rubygems_version: 2.0.3
|
@@ -95,3 +244,4 @@ signing_key:
|
|
95
244
|
specification_version: 4
|
96
245
|
summary: Tools related to running Calabash iOS tests
|
97
246
|
test_files: []
|
247
|
+
has_rdoc:
|