xamarin-test-cloud 0.9.1 → 0.9.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/xamarin-test-cloud/cli.rb +84 -45
- data/lib/xamarin-test-cloud/version.rb +1 -1
- 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: bcc1d67245cc734b67086c96703d069549c48dbd
|
4
|
+
data.tar.gz: 33c280e29f37595c5870117c32ff4d2870641898
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4002ded8bd75b5658ddf220a76b34446bf0771f5c6b342481d3f01a99f45ddeee2eab4089bacd2ca493cef9d8f90126f022f3a613c87cf460cbdf4e16acbeb16
|
7
|
+
data.tar.gz: b27466f586ce31d407819af816551441be698111fd761a1a221b8671862c16df12d36dd7a9cd7d0275efa1fe82aaa4531ced3c8365ef2637acc97ad34b5cdd98
|
@@ -17,7 +17,8 @@ module XamarinTestCloud
|
|
17
17
|
class CLI < Thor
|
18
18
|
include Thor::Actions
|
19
19
|
|
20
|
-
attr_accessor :host, :app, :api_key, :appname, :
|
20
|
+
attr_accessor :host, :app, :api_key, :appname, :app_explorer, :test_parameters,
|
21
|
+
:workspace, :config, :profile, :features_zip, :skip_check, :dry_run, :device_selection
|
21
22
|
attr_accessor :pretty
|
22
23
|
attr_accessor :endpoint_path
|
23
24
|
|
@@ -37,6 +38,7 @@ module XamarinTestCloud
|
|
37
38
|
|
38
39
|
desc 'submit <APP> <API_KEY>', 'Submits your app and test suite to Xamarin Test Cloud'
|
39
40
|
|
41
|
+
|
40
42
|
method_option :host,
|
41
43
|
:desc => 'Test Cloud host to submit to',
|
42
44
|
:aliases => '-h', :type => :string,
|
@@ -45,7 +47,7 @@ module XamarinTestCloud
|
|
45
47
|
method_option 'app-name',
|
46
48
|
:desc => 'App name to create or add test to',
|
47
49
|
:aliases => '-a',
|
48
|
-
:required =>
|
50
|
+
:required => false,
|
49
51
|
:type => :string
|
50
52
|
|
51
53
|
method_option 'device-selection',
|
@@ -54,11 +56,17 @@ module XamarinTestCloud
|
|
54
56
|
:required => true,
|
55
57
|
:type => :string
|
56
58
|
|
57
|
-
method_option
|
58
|
-
:desc => '
|
59
|
-
:aliases => '-
|
60
|
-
:type => :
|
61
|
-
:default =>
|
59
|
+
method_option 'app-explorer',
|
60
|
+
:desc => 'Explore using AppExplorer only (no Calabash)',
|
61
|
+
:aliases => '-e',
|
62
|
+
:type => :boolean,
|
63
|
+
:default => false
|
64
|
+
|
65
|
+
method_option 'test-parameters',
|
66
|
+
:desc => 'Test parameters (e.g., --params username:nat@xamarin.com password:xamarin)',
|
67
|
+
:aliases => 'params',
|
68
|
+
:type => :hash
|
69
|
+
|
62
70
|
|
63
71
|
method_option :features,
|
64
72
|
:desc => 'Zip file with features, step definitions, etc...',
|
@@ -86,7 +94,7 @@ module XamarinTestCloud
|
|
86
94
|
|
87
95
|
method_option 'dry-run',
|
88
96
|
:desc => "Sanity check only, don't upload",
|
89
|
-
:aliases => '-
|
97
|
+
:aliases => '-s',
|
90
98
|
:type => :boolean,
|
91
99
|
:default => false #do upload by default
|
92
100
|
|
@@ -107,16 +115,22 @@ module XamarinTestCloud
|
|
107
115
|
|
108
116
|
self.api_key = api_key
|
109
117
|
|
110
|
-
self.
|
118
|
+
self.test_parameters = options['test-parameters'] || {}
|
119
|
+
|
120
|
+
self.appname = options['app-name'] || File.basename(app, File.extname(app))
|
111
121
|
|
112
122
|
self.device_selection = options['device-selection']
|
113
|
-
|
114
|
-
|
115
|
-
|
123
|
+
|
124
|
+
device_selection_data = validate_device_selection
|
125
|
+
|
126
|
+
self.app_explorer = options['app-explorer']
|
116
127
|
|
117
128
|
self.skip_check = options['skip-check']
|
118
129
|
|
119
|
-
|
130
|
+
unless app_explorer
|
131
|
+
parse_and_set_config_and_profile
|
132
|
+
end
|
133
|
+
|
120
134
|
|
121
135
|
workspace_path = options[:workspace] || File.expand_path('.')
|
122
136
|
|
@@ -127,7 +141,7 @@ module XamarinTestCloud
|
|
127
141
|
|
128
142
|
features_path = options[:features]
|
129
143
|
|
130
|
-
unless features_path.nil?
|
144
|
+
unless features_path.nil? || self.app_explorer
|
131
145
|
if File.exist?(features_path)
|
132
146
|
self.features_zip = File.expand_path(features_path)
|
133
147
|
else
|
@@ -139,6 +153,8 @@ module XamarinTestCloud
|
|
139
153
|
puts "Host = #{self.host}"
|
140
154
|
puts "App = #{self.app}"
|
141
155
|
puts "App Name = #{self.app}"
|
156
|
+
puts "AppExplorer = #{self.app_explorer}"
|
157
|
+
puts "TestParams = #{self.test_parameters}"
|
142
158
|
puts "API Key = #{self.api_key}"
|
143
159
|
puts "Device Selection = #{self.device_selection}"
|
144
160
|
puts "Workspace = #{self.workspace}"
|
@@ -148,8 +164,15 @@ module XamarinTestCloud
|
|
148
164
|
puts "Skip Check = #{self.skip_check}"
|
149
165
|
end
|
150
166
|
|
167
|
+
|
151
168
|
#Argument parsing done
|
152
|
-
|
169
|
+
|
170
|
+
test_jon_data = submit_test_job(device_selection_data)
|
171
|
+
if self.dry_run
|
172
|
+
return
|
173
|
+
end
|
174
|
+
json = test_jon_data[:body]
|
175
|
+
|
153
176
|
log_header("Test enqueued")
|
154
177
|
puts "User: #{json["user_email"]}"
|
155
178
|
|
@@ -190,29 +213,38 @@ module XamarinTestCloud
|
|
190
213
|
end
|
191
214
|
end
|
192
215
|
|
216
|
+
def validate_device_selection
|
217
|
+
unless /^\h{8,12}$/ =~ device_selection
|
218
|
+
raise ValidationError, 'Device selection is not in the proper format. Please generate a new one on the Xamarin Test Cloud website.'
|
219
|
+
end
|
220
|
+
device_selection
|
221
|
+
end
|
193
222
|
|
194
|
-
def submit_test_job
|
195
|
-
start_at = Time.now
|
196
223
|
|
197
|
-
server = verify_app_and_extract_test_server
|
198
224
|
|
225
|
+
def submit_test_job(device_selection_data)
|
226
|
+
start_at = Time.now
|
199
227
|
|
200
|
-
|
201
|
-
|
202
|
-
unless File.exist?(gemfile_path)
|
203
|
-
copy_default_gemfile(gemfile_path, server)
|
204
|
-
end
|
228
|
+
unless self.app_explorer
|
229
|
+
server = verify_app_and_extract_test_server
|
205
230
|
|
206
|
-
|
207
|
-
|
208
|
-
unless
|
209
|
-
|
231
|
+
log_header('Checking for Gemfile')
|
232
|
+
gemfile_path = File.join(self.workspace, 'Gemfile')
|
233
|
+
unless File.exist?(gemfile_path)
|
234
|
+
copy_default_gemfile(gemfile_path, server)
|
235
|
+
end
|
236
|
+
|
237
|
+
log_header('Packaging')
|
238
|
+
FileUtils.cd(self.workspace) do
|
239
|
+
unless system('bundle package --all')
|
240
|
+
log_and_abort 'Bundler failed. Please check command: bundle package'
|
241
|
+
end
|
210
242
|
end
|
211
|
-
end
|
212
243
|
|
213
244
|
|
214
|
-
|
215
|
-
|
245
|
+
log_header('Verifying dependencies')
|
246
|
+
verify_dependencies
|
247
|
+
end
|
216
248
|
|
217
249
|
|
218
250
|
if dry_run
|
@@ -229,8 +261,10 @@ module XamarinTestCloud
|
|
229
261
|
upload_data = {'files' => files,
|
230
262
|
'paths' => paths,
|
231
263
|
'app_file' => app_file,
|
232
|
-
'device_selection' =>
|
264
|
+
'device_selection' => device_selection_data,
|
233
265
|
'app' => self.appname,
|
266
|
+
'test_parameters' => self.test_parameters,
|
267
|
+
'app_explorer' => self.app_explorer,
|
234
268
|
'api_key' => api_key,
|
235
269
|
'app_filename' => File.basename(app)}
|
236
270
|
|
@@ -262,6 +296,7 @@ module XamarinTestCloud
|
|
262
296
|
if ENV['DEBUG']
|
263
297
|
puts "Request url: #{request.url}"
|
264
298
|
puts "Response code: #{response.code}"
|
299
|
+
puts "Response body: #{response.body}"
|
265
300
|
end
|
266
301
|
case response.code
|
267
302
|
when 200..202
|
@@ -409,27 +444,31 @@ module XamarinTestCloud
|
|
409
444
|
dir = File.join(dir, File::Separator)
|
410
445
|
end
|
411
446
|
|
447
|
+
if self.app_explorer
|
448
|
+
files = []
|
449
|
+
else
|
450
|
+
files = Dir.glob(File.join("#{dir}features", '**', '*'))
|
412
451
|
|
413
|
-
|
452
|
+
if File.directory?("#{dir}playback")
|
453
|
+
files += Dir.glob(File.join("#{dir}playback", '*'))
|
454
|
+
end
|
414
455
|
|
415
|
-
|
416
|
-
|
417
|
-
|
456
|
+
if config
|
457
|
+
files << config
|
458
|
+
end
|
418
459
|
|
419
|
-
if config
|
420
|
-
files << config
|
421
|
-
end
|
422
460
|
|
461
|
+
files += Dir.glob(File.join("#{workspace}vendor", 'cache', '*'))
|
423
462
|
|
424
|
-
|
463
|
+
if workspace and workspace.strip != ''
|
464
|
+
files += Dir.glob("#{workspace}Gemfile")
|
465
|
+
files += Dir.glob("#{workspace}Gemfile.lock")
|
466
|
+
end
|
425
467
|
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
end
|
468
|
+
if is_android?
|
469
|
+
files << test_server_path
|
470
|
+
end
|
430
471
|
|
431
|
-
if is_android?
|
432
|
-
files << test_server_path
|
433
472
|
end
|
434
473
|
|
435
474
|
{:feature_prefix => dir, :workspace_prefix => workspace, :files => files.find_all { |file_or_dir| File.file? file_or_dir }}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xamarin-test-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Krukow
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|