cuesmash 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cuesmash.yml +10 -5
- data/Gemfile.lock +1 -1
- data/LICENSE.txt +1 -1
- data/cuesmash.gemspec +1 -1
- data/lib/cuesmash/appium_server.rb +7 -2
- data/lib/cuesmash/command.rb +7 -2
- data/lib/cuesmash/ios_app.rb +12 -6
- data/lib/cuesmash/ios_compiler.rb +12 -2
- data/lib/cuesmash/start.rb +44 -36
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f5afcc77195c37550088258b91cc798effe35cd
|
4
|
+
data.tar.gz: 82a4396920644a9287d48c21f9fd586f4d3a3bd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d45d408c5e264941d3008790e599cf56cc352bc6c80ca4da8c2cc450289e8aca887362076a64591d3914f757011ce509fe01b35dfc3c180647a977566972b734
|
7
|
+
data.tar.gz: 77d98e64e724916e0a8098a446d66d78f943aacd4d4230250f659fffaf1a40995d7b931f030a46287ff35cd2c8153733fd0806b019abca9301651c850a58a9d0
|
data/.cuesmash.yml
CHANGED
@@ -2,24 +2,29 @@
|
|
2
2
|
# iOS Example
|
3
3
|
devices:
|
4
4
|
iPhone 6:
|
5
|
-
|
5
|
+
8.3: 'bd79098904d9b93a418ac821db8372ee7374cf82'
|
6
|
+
9.0:
|
6
7
|
|
7
8
|
iPhone 5s:
|
8
|
-
|
9
|
+
7.1:
|
10
|
+
8.3:
|
9
11
|
|
10
12
|
iPhone 4s:
|
11
|
-
|
13
|
+
7.1:
|
14
|
+
8.3:
|
12
15
|
|
13
16
|
iPhone 5:
|
14
|
-
|
17
|
+
7.1:
|
18
|
+
8.3:
|
15
19
|
|
16
20
|
iPhone 6 Plus:
|
17
|
-
|
21
|
+
8.3:
|
18
22
|
|
19
23
|
default:
|
20
24
|
os: iPhone 6
|
21
25
|
version: 8.3
|
22
26
|
test_timeout: 120
|
27
|
+
uuid: 'bd79098904d9b93a418ac821db8372ee7374cf82'
|
23
28
|
|
24
29
|
platform: 'iOS'
|
25
30
|
build_configuration: 'Debug'
|
data/Gemfile.lock
CHANGED
data/LICENSE.txt
CHANGED
data/cuesmash.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "cuesmash"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.4.0"
|
8
8
|
spec.authors = ["Alex Fish", "Jarod McBride", "Tiago Castro"]
|
9
9
|
spec.email = ["fish@ustwo.co.uk", "jarod@ustwo.com", "castro@ustwo.com"]
|
10
10
|
spec.description = "Appium project manager"
|
@@ -14,10 +14,14 @@ module Cuesmash
|
|
14
14
|
# Public: the output format for the tests
|
15
15
|
attr_accessor :format
|
16
16
|
|
17
|
+
# Public: uuid of ios device to run test on.
|
18
|
+
attr_accessor :ios_uuid
|
19
|
+
|
17
20
|
#
|
18
21
|
# Create a new instance of AppiumServer
|
19
22
|
#
|
20
|
-
def initialize
|
23
|
+
def initialize(ios_uuid: nil)
|
24
|
+
@ios_uuid = ios_uuid
|
21
25
|
end
|
22
26
|
|
23
27
|
#
|
@@ -26,7 +30,8 @@ module Cuesmash
|
|
26
30
|
def start_server
|
27
31
|
started
|
28
32
|
|
29
|
-
command = 'appium --log-level debug'
|
33
|
+
command = 'appium --log-level debug '
|
34
|
+
command << "--udid #{@ios_uuid} --session-override " unless @ios_uuid.nil?
|
30
35
|
|
31
36
|
@stdin, @stdout, @stderr, @wait_thr = Open3.popen3(command)
|
32
37
|
Logger.info "Appium running with pid: #{@wait_thr.pid}"
|
data/lib/cuesmash/command.rb
CHANGED
@@ -36,7 +36,8 @@ module Cuesmash
|
|
36
36
|
app:,
|
37
37
|
profile:,
|
38
38
|
quiet: false,
|
39
|
-
timeout
|
39
|
+
timeout:,
|
40
|
+
ios_uuid: nil)
|
40
41
|
if debug
|
41
42
|
Logger.level = ::Logger::DEBUG
|
42
43
|
Logger.formatter = proc do |serverity, time, _progname, msg|
|
@@ -51,7 +52,11 @@ module Cuesmash
|
|
51
52
|
create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
|
52
53
|
|
53
54
|
# start the appium server
|
54
|
-
|
55
|
+
if @ios_uuid
|
56
|
+
app_server = AppiumServer.new(ios_uuid: ios_uuid)
|
57
|
+
else
|
58
|
+
app_server = AppiumServer.new
|
59
|
+
end
|
55
60
|
app_server.start_server
|
56
61
|
|
57
62
|
# Run the tests
|
data/lib/cuesmash/ios_app.rb
CHANGED
@@ -11,7 +11,8 @@ module Cuesmash
|
|
11
11
|
# Public: the path to the dir containing the built app i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/
|
12
12
|
attr_reader :app_dir
|
13
13
|
|
14
|
-
# Public: the full path including the built app
|
14
|
+
# Public: the full path including the built app
|
15
|
+
# i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/MyApp.app"
|
15
16
|
attr_reader :app_path
|
16
17
|
|
17
18
|
# Public: the app name i.e. MyApp.app
|
@@ -23,18 +24,23 @@ module Cuesmash
|
|
23
24
|
#
|
24
25
|
# Create a new App instance
|
25
26
|
#
|
26
|
-
# @param
|
27
|
-
# @param
|
27
|
+
# @param [String] file_name: This usually is the scheme of the xcode project
|
28
|
+
# @param [String] build_configuration: which iOS build configuration to run i.e. Release, Debug
|
29
|
+
# @param [String] app_name: name of the app
|
30
|
+
# @param [String] device: nil the UUID of the device to run on or nil if running on simulator
|
28
31
|
#
|
29
|
-
|
30
|
-
def initialize(file_name:, build_configuration:, app_name:)
|
32
|
+
def initialize(file_name:, build_configuration:, app_name:, device: nil)
|
31
33
|
app_name = file_name if app_name.nil?
|
32
34
|
|
33
35
|
@app_name = "#{app_name}" << '.app'
|
34
36
|
@tmp_dir = Dir.mktmpdir(app_name)
|
35
37
|
@build_configuration = build_configuration
|
36
38
|
|
37
|
-
|
39
|
+
if device.nil?
|
40
|
+
@app_dir = "#{@tmp_dir}" << "/#{@build_configuration}-iphonesimulator/"
|
41
|
+
else
|
42
|
+
@app_dir = "#{@tmp_dir}" << "/#{@build_configuration}-iphoneos/"
|
43
|
+
end
|
38
44
|
|
39
45
|
@app_path = "#{@app_dir}" << "#{@app_name}"
|
40
46
|
end
|
@@ -11,10 +11,11 @@ module Cuesmash
|
|
11
11
|
attr_accessor :tmp_dir
|
12
12
|
attr_accessor :build_configuration
|
13
13
|
|
14
|
-
def initialize(scheme:, tmp_dir:, build_configuration:)
|
14
|
+
def initialize(scheme:, tmp_dir:, build_configuration:, device: nil)
|
15
15
|
@scheme = scheme
|
16
16
|
@tmp_dir = tmp_dir
|
17
17
|
@build_configuration = build_configuration
|
18
|
+
@device = device
|
18
19
|
end
|
19
20
|
|
20
21
|
#
|
@@ -23,7 +24,16 @@ module Cuesmash
|
|
23
24
|
#
|
24
25
|
# @return [String] The full xcode build command with args
|
25
26
|
def command
|
26
|
-
xcode_command =
|
27
|
+
xcode_command = 'set -o pipefail '
|
28
|
+
xcode_command << "&& xcodebuild #{workspace} "
|
29
|
+
xcode_command << "-scheme '#{@scheme}' "
|
30
|
+
xcode_command << "-derivedDataPath #{@tmp_dir.shellescape} "
|
31
|
+
xcode_command << "-configuration #{@build_configuration} "
|
32
|
+
xcode_command << "OBJROOT=#{@tmp_dir.shellescape} "
|
33
|
+
xcode_command << "SYMROOT=#{@tmp_dir.shellescape} "
|
34
|
+
xcode_command << '-sdk iphonesimulator ' if @device.nil?
|
35
|
+
xcode_command << 'build '
|
36
|
+
xcode_command << '| bundle exec xcpretty -c'
|
27
37
|
|
28
38
|
Logger.info "xcode_command == #{xcode_command}"
|
29
39
|
xcode_command
|
data/lib/cuesmash/start.rb
CHANGED
@@ -16,6 +16,9 @@ module Cuesmash
|
|
16
16
|
|
17
17
|
# For information on how this class works see the thor documentation https://github.com/erikhuda/thor/wiki
|
18
18
|
class Start < Thor
|
19
|
+
package_name 'cuesmash'
|
20
|
+
class_option :version, aliases: '-v', desc: 'The version of cuesmash running'
|
21
|
+
|
19
22
|
desc 'init', 'set up the project'
|
20
23
|
def init
|
21
24
|
Cuesmash::Setup.setup
|
@@ -62,26 +65,36 @@ module Cuesmash
|
|
62
65
|
|
63
66
|
# Compile the project
|
64
67
|
if @config['platform'] == 'iOS'
|
65
|
-
|
66
|
-
setup_ios
|
67
|
-
|
68
68
|
# enumerate over each device / OS combination and run the tests.
|
69
69
|
@config['devices'].each do |device, oses|
|
70
|
-
oses.each do |
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
70
|
+
oses.each do |os_number, ios_uuid|
|
71
|
+
setup_ios(device: ios_uuid)
|
72
|
+
case
|
73
|
+
when ios_uuid.nil?
|
74
|
+
say "\n============================\ntesting iOS #{os_number} on #{device}", :green
|
75
|
+
Cuesmash::Command.execute(device: device,
|
76
|
+
os: os_number,
|
77
|
+
scheme: options[:scheme],
|
78
|
+
tags: options[:tags],
|
79
|
+
debug: options[:debug],
|
80
|
+
app: @app,
|
81
|
+
profile: options[:profile],
|
82
|
+
quiet: options[:quiet],
|
83
|
+
timeout: @config['default']['test_timeout'].to_s)
|
84
|
+
else
|
85
|
+
say "\n============================\ntesting iOS #{os_number} on #{device}", :green
|
86
|
+
Cuesmash::Command.execute(device: device,
|
87
|
+
os: os_number,
|
88
|
+
scheme: options[:scheme],
|
89
|
+
tags: options[:tags],
|
90
|
+
debug: options[:debug],
|
91
|
+
app: @app,
|
92
|
+
profile: options[:profile],
|
93
|
+
quiet: options[:quiet],
|
94
|
+
timeout: @config['default']['test_timeout'].to_s,
|
95
|
+
ios_uuid: @config)
|
96
|
+
end # case
|
97
|
+
end # os each
|
85
98
|
end # device each
|
86
99
|
|
87
100
|
# clean up the temp dir
|
@@ -151,7 +164,7 @@ module Cuesmash
|
|
151
164
|
end
|
152
165
|
|
153
166
|
if @config['platform'] == 'iOS'
|
154
|
-
setup_ios
|
167
|
+
setup_ios(device: @config['default']['uuid'])
|
155
168
|
elsif @config['platform'] == 'Android'
|
156
169
|
say 'Setting up android'
|
157
170
|
setup_android
|
@@ -179,21 +192,25 @@ module Cuesmash
|
|
179
192
|
end # load_config
|
180
193
|
|
181
194
|
#
|
182
|
-
# helper
|
195
|
+
# helper method to setup and compile the iOS app
|
196
|
+
#
|
197
|
+
# @param [string] device: nil <the UUID of the device to run on or nil if running on simulator>
|
183
198
|
#
|
184
|
-
def setup_ios
|
199
|
+
def setup_ios(device: nil)
|
185
200
|
@app = IosApp.new(file_name: options[:scheme].join(' '),
|
186
201
|
build_configuration: @config['build_configuration'],
|
187
|
-
app_name: @config['app_name']
|
202
|
+
app_name: @config['app_name'],
|
203
|
+
device: device)
|
188
204
|
|
189
205
|
# Compile the project
|
190
206
|
compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(' '),
|
191
207
|
tmp_dir: @app.tmp_dir,
|
192
|
-
build_configuration: @config['build_configuration']
|
208
|
+
build_configuration: @config['build_configuration'],
|
209
|
+
device: device)
|
193
210
|
compiler.compile
|
194
211
|
|
195
212
|
ios_appium_text
|
196
|
-
end
|
213
|
+
end # setup_ios
|
197
214
|
|
198
215
|
#
|
199
216
|
# helper method for setting up android build
|
@@ -208,7 +225,7 @@ module Cuesmash
|
|
208
225
|
compiler.compile
|
209
226
|
|
210
227
|
android_appium_text
|
211
|
-
end
|
228
|
+
end # setup_android
|
212
229
|
|
213
230
|
#
|
214
231
|
# iOS Appium text file set up
|
@@ -220,7 +237,7 @@ module Cuesmash
|
|
220
237
|
app: @app.app_path,
|
221
238
|
new_command_timeout: @config['default']['test_timeout'].to_s)
|
222
239
|
appium.execute
|
223
|
-
end
|
240
|
+
end # ios_appium_text
|
224
241
|
|
225
242
|
#
|
226
243
|
# Android Appium text file set up
|
@@ -231,16 +248,7 @@ module Cuesmash
|
|
231
248
|
app: @app.app_path,
|
232
249
|
new_command_timeout: @config['default']['test_timeout'].to_s)
|
233
250
|
appium.execute
|
234
|
-
end
|
235
|
-
|
236
|
-
# android_appium_text
|
237
|
-
|
238
|
-
#
|
239
|
-
# Removes the settings and contents for the iOS simulator.
|
240
|
-
#
|
241
|
-
# @return [type] [description]
|
242
|
-
def reset_ios_simulator
|
243
|
-
end
|
251
|
+
end # android_appium_text
|
244
252
|
end # no_commands
|
245
253
|
end # Start class
|
246
254
|
end # module Cuesmash
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuesmash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Fish
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|