iCuke 0.4.8 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/iCuke.gemspec +1 -2
- data/lib/icuke/simulator.rb +85 -47
- metadata +2 -3
- data/lib/icuke/core_ext.rb +0 -26
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.9
|
data/iCuke.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{iCuke}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rob Holland"]
|
@@ -83,7 +83,6 @@ Gem::Specification.new do |s|
|
|
83
83
|
"features/support/env.rb",
|
84
84
|
"iCuke.gemspec",
|
85
85
|
"lib/icuke.rb",
|
86
|
-
"lib/icuke/core_ext.rb",
|
87
86
|
"lib/icuke/cucumber.rb",
|
88
87
|
"lib/icuke/simulate.rb",
|
89
88
|
"lib/icuke/simulator.rb"
|
data/lib/icuke/simulator.rb
CHANGED
@@ -1,10 +1,84 @@
|
|
1
|
-
require 'icuke/core_ext'
|
2
|
-
|
3
1
|
require 'httparty'
|
4
2
|
require 'appscript'
|
5
3
|
require 'timeout'
|
6
4
|
|
7
5
|
module ICuke
|
6
|
+
class XCode
|
7
|
+
def self.app
|
8
|
+
@app ||= Appscript.app('Xcode.app')
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.open_project(project_file)
|
12
|
+
unless open_project?(project_file)
|
13
|
+
app.launch
|
14
|
+
app.open project_file
|
15
|
+
end
|
16
|
+
app.active_project_document.project
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.open_project?(project_file)
|
20
|
+
running? and
|
21
|
+
app.active_project_document.get and
|
22
|
+
app.active_project_document.project.path.get == project_file
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.interface
|
26
|
+
Appscript.app('System Events').application_processes['Xcode']
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.running?
|
30
|
+
app.is_running?
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.quit
|
34
|
+
IPhoneSimulator.quit
|
35
|
+
app.quit if running?
|
36
|
+
sleep(0.2) until !running?
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.status
|
40
|
+
interface.windows[1].static_texts[0].value.get
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.launched_app?
|
44
|
+
status =~ /launched$/
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.installing_app?
|
48
|
+
status =~ /^Installing/
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.with_settings(project, settings, &block)
|
52
|
+
initial_settings = {}
|
53
|
+
|
54
|
+
settings.each_key { |setting| initial_settings[setting] = project.send(setting).get }
|
55
|
+
settings.each_pair do |setting, value|
|
56
|
+
project.send(setting).set value
|
57
|
+
end
|
58
|
+
|
59
|
+
yield
|
60
|
+
ensure
|
61
|
+
initial_settings.each_pair do |setting, value|
|
62
|
+
project.send(setting).set value
|
63
|
+
end if running?
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class IPhoneSimulator
|
68
|
+
def self.app
|
69
|
+
@app ||= Appscript.app('iPhone Simulator.app')
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.quit
|
73
|
+
app.quit if running?
|
74
|
+
sleep(0.2) until !running?
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.running?
|
78
|
+
app.is_running?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
8
82
|
class Simulator
|
9
83
|
include Timeout
|
10
84
|
include HTTParty
|
@@ -20,11 +94,10 @@ module ICuke
|
|
20
94
|
|
21
95
|
# If we don't kill the simulator first the rest of this function becomes
|
22
96
|
# a no-op and we don't land on the applications first page
|
23
|
-
|
24
|
-
simulator.quit if simulator.is_running?
|
97
|
+
IPhoneSimulator.quit
|
25
98
|
|
26
99
|
begin
|
27
|
-
project = open_project(project_file)
|
100
|
+
project = XCode.open_project(project_file)
|
28
101
|
|
29
102
|
settings = {
|
30
103
|
:active_build_configuration_type => project.build_configuration_types[options[:configuration]]
|
@@ -33,7 +106,7 @@ module ICuke
|
|
33
106
|
settings[:active_target] = project.targets[options[:target]]
|
34
107
|
end
|
35
108
|
|
36
|
-
with_settings(project, settings) do
|
109
|
+
XCode.with_settings(project, settings) do
|
37
110
|
executable = project.active_executable.get
|
38
111
|
options[:env].each_pair do |name, value|
|
39
112
|
executable.make :new => :environment_variable,
|
@@ -42,53 +115,18 @@ module ICuke
|
|
42
115
|
|
43
116
|
project.launch_
|
44
117
|
|
45
|
-
|
46
|
-
|
118
|
+
sleep(0.5) while XCode.installing_app?
|
119
|
+
|
120
|
+
unless XCode.launched_app?
|
121
|
+
XCode.quit
|
122
|
+
retry
|
47
123
|
end
|
48
124
|
end
|
49
|
-
rescue Timeout::Error
|
50
|
-
xcode = Appscript.app('Xcode.app')
|
51
|
-
xcode.quit if xcode.is_running?
|
52
|
-
sleep(0.5) until !xcode.is_running?
|
53
|
-
retry
|
54
|
-
end
|
55
|
-
|
56
|
-
timeout(30) do
|
57
|
-
begin
|
58
|
-
view
|
59
|
-
rescue Errno::ECONNREFUSED
|
60
|
-
sleep(0.5)
|
61
|
-
retry
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def open_project(project_file)
|
67
|
-
xcode = Appscript.app('Xcode.app')
|
68
|
-
unless xcode.active_project_document.get and xcode.active_project_document.project.path.get == project_file
|
69
|
-
xcode.launch
|
70
|
-
xcode.open project_file
|
71
|
-
end
|
72
|
-
xcode.active_project_document.project
|
73
|
-
end
|
74
|
-
|
75
|
-
def with_settings(project, settings, &block)
|
76
|
-
initial_settings = {}
|
77
|
-
|
78
|
-
settings.each_key { |setting| initial_settings[setting] = project.send(setting).get }
|
79
|
-
settings.each_pair do |setting, value|
|
80
|
-
project.send(setting).set value
|
81
|
-
end
|
82
|
-
|
83
|
-
yield
|
84
|
-
ensure
|
85
|
-
initial_settings.each_pair do |setting, value|
|
86
|
-
project.send(setting).set value
|
87
125
|
end
|
88
126
|
end
|
89
127
|
|
90
128
|
def quit
|
91
|
-
|
129
|
+
IPhoneSimulator.quit
|
92
130
|
end
|
93
131
|
|
94
132
|
def view
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
8
|
+
- 9
|
9
|
+
version: 0.4.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Rob Holland
|
@@ -140,7 +140,6 @@ files:
|
|
140
140
|
- features/support/env.rb
|
141
141
|
- iCuke.gemspec
|
142
142
|
- lib/icuke.rb
|
143
|
-
- lib/icuke/core_ext.rb
|
144
143
|
- lib/icuke/cucumber.rb
|
145
144
|
- lib/icuke/simulate.rb
|
146
145
|
- lib/icuke/simulator.rb
|
data/lib/icuke/core_ext.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
|
3
|
-
module RequestWithSocketCheck
|
4
|
-
def self.included(base)
|
5
|
-
base.instance_eval do
|
6
|
-
alias_method :request_without_socket_check, :request
|
7
|
-
alias_method :request, :request_with_socket_check
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def request_with_socket_check(*args)
|
12
|
-
begin
|
13
|
-
request_without_socket_check(*args)
|
14
|
-
rescue NoMethodError => e
|
15
|
-
if e.message =~ /undefined method `closed\?' for nil/
|
16
|
-
raise Errno::ECONNREFUSED
|
17
|
-
else
|
18
|
-
raise e
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
if Net::HTTP::Revision.to_i == 25851
|
25
|
-
Net::HTTP.send :include, RequestWithSocketCheck
|
26
|
-
end
|