xamarin-test-cloud 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xamarin-test-cloud/cli.rb +68 -39
- data/lib/xamarin-test-cloud/version.rb +1 -1
- metadata +17 -6
- data/lib/GemfileAndroid +0 -3
- data/lib/GemfileIOS +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac895fdc1e30ab3e7b0654ef0e3a1cd88de1e49a
|
4
|
+
data.tar.gz: 923a14dfacafa421f4aab1b0e2f723e4a17c261d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 549d55352e0184cebe5eb00d565abeddb43623cbf92adc0eef394d2e100e8a1bb071718c5ad8718f2b9bbfa5c9a5ee782e4df8c19adca7254269e95863c61b8b
|
7
|
+
data.tar.gz: 0f8b68eaae72c5a6a41c2e510edd16528e542ed4326d702b8fb41a13f2c9993303fc2a6f2359742d8aeb996a6f77e5f98b4fb450203182705a989b2a870e41da
|
@@ -114,6 +114,14 @@ module XamarinTestCloud
|
|
114
114
|
raise ValidationError, "App is not a file: #{app_path}"
|
115
115
|
end
|
116
116
|
|
117
|
+
if shared_runtime?(app_path)
|
118
|
+
puts "Xamarin Test Cloud doesn't yet support shared runtime apps."
|
119
|
+
puts "To test your app it needs to be compiled for release."
|
120
|
+
puts "You can learn how to compile you app for release here:"
|
121
|
+
puts "http://docs.xamarin.com/guides/android/deployment%2C_testing%2C_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release"
|
122
|
+
raise ValidationError, "Aborting"
|
123
|
+
end
|
124
|
+
|
117
125
|
app_extension = File.extname(app_path)
|
118
126
|
unless /ipa/i.match(app_extension) || /apk/i.match(app_extension)
|
119
127
|
raise ValidationError, "App #{app_path} must be an .ipa or .apk file"
|
@@ -216,8 +224,10 @@ module XamarinTestCloud
|
|
216
224
|
end
|
217
225
|
|
218
226
|
def wait_for_job(id)
|
219
|
-
while(true)
|
220
|
-
status_json =
|
227
|
+
while(true)
|
228
|
+
status_json = retriable :tries => 60, :interval => 10 do
|
229
|
+
JSON.parse(http_post("status", {'id' => id, 'api_key' => api_key}))
|
230
|
+
end
|
221
231
|
|
222
232
|
log "Status: #{status_json["status_description"]}"
|
223
233
|
if status_json["status"] == "finished"
|
@@ -231,10 +241,8 @@ module XamarinTestCloud
|
|
231
241
|
|
232
242
|
if calabash_data
|
233
243
|
puts "Total scenarios: #{calabash_data["scenarios"]["total"]}"
|
234
|
-
|
235
244
|
puts "#{calabash_data["scenarios"]["passed"]} passed"
|
236
245
|
puts "#{calabash_data["scenarios"]["failed"]} failed"
|
237
|
-
|
238
246
|
puts "Total steps: #{calabash_data["steps"]["total"]}"
|
239
247
|
end
|
240
248
|
exit 0
|
@@ -267,27 +275,32 @@ module XamarinTestCloud
|
|
267
275
|
|
268
276
|
|
269
277
|
def submit_test_job(device_selection_data)
|
278
|
+
tmpdir = Dir.mktmpdir
|
279
|
+
if ENV['DEBUG']
|
280
|
+
log "Packaging gems in: #{tmpdir}"
|
281
|
+
end
|
270
282
|
start_at = Time.now
|
271
283
|
|
272
284
|
unless self.app_explorer
|
273
285
|
server = verify_app_and_extract_test_server
|
274
286
|
|
275
287
|
log_header('Checking for Gemfile')
|
276
|
-
|
277
|
-
|
278
|
-
|
288
|
+
if File.exist?("Gemfile")
|
289
|
+
FileUtils.cp "Gemfile", tmpdir
|
290
|
+
FileUtils.cp "Gemfile.lock", tmpdir if File.exist?("Gemfile.lock")
|
291
|
+
else
|
292
|
+
copy_default_gemfile(File.join(tmpdir, "Gemfile"), server)
|
279
293
|
end
|
280
294
|
|
281
295
|
log_header('Packaging')
|
296
|
+
|
282
297
|
FileUtils.cd(self.workspace) do
|
283
|
-
unless system(
|
298
|
+
unless system("BUNDLE_GEMFILE=#{File.join(tmpdir, "Gemfile")} bundle package --all")
|
284
299
|
log_and_abort 'Bundler failed. Please check command: bundle package'
|
285
300
|
end
|
286
301
|
end
|
287
|
-
|
288
|
-
|
289
302
|
log_header('Verifying dependencies')
|
290
|
-
verify_dependencies
|
303
|
+
verify_dependencies(tmpdir)
|
291
304
|
end
|
292
305
|
|
293
306
|
|
@@ -297,7 +310,7 @@ module XamarinTestCloud
|
|
297
310
|
return
|
298
311
|
end
|
299
312
|
|
300
|
-
app_file, files, paths = gather_files_and_paths_to_upload(all_files)
|
313
|
+
app_file, files, paths = gather_files_and_paths_to_upload(all_files(tmpdir), tmpdir)
|
301
314
|
|
302
315
|
|
303
316
|
log_header('Uploading negotiated files')
|
@@ -361,6 +374,7 @@ module XamarinTestCloud
|
|
361
374
|
end
|
362
375
|
|
363
376
|
return :status => response.code, :body => JSON.parse(response)
|
377
|
+
|
364
378
|
end
|
365
379
|
|
366
380
|
|
@@ -373,32 +387,25 @@ module XamarinTestCloud
|
|
373
387
|
log('')
|
374
388
|
log('Warning proceeding with default Gemfile.')
|
375
389
|
log('It is strongly recommended that you create a custom Gemfile.')
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
raise ValidationError, '
|
390
|
+
|
391
|
+
File.open(gemfile_path, "w") do |f|
|
392
|
+
f.puts "source 'http://rubygems.org'"
|
393
|
+
if is_android?
|
394
|
+
f.puts "gem 'calabash-android', '#{calabash_android_version}'"
|
395
|
+
elsif is_ios?
|
396
|
+
f.puts "gem 'calabash-cucumber', '#{calabash_ios_version}'"
|
397
|
+
else
|
398
|
+
raise ValidationError, 'Your app must be an ipa or apk file.'
|
385
399
|
end
|
386
|
-
tgt = File.join(CLI.source_root, gemfile)
|
387
|
-
else
|
388
|
-
raise ValidationError, 'Your app must be an ipa or apk file.'
|
389
400
|
end
|
390
401
|
log("Proceeding with Gemfile: #{gemfile_path}")
|
391
402
|
|
392
|
-
|
393
|
-
FileUtils.cp(File.expand_path(tgt), gemfile_path)
|
394
|
-
|
395
403
|
puts(File.read(gemfile_path))
|
396
404
|
|
397
405
|
log('')
|
398
|
-
|
399
406
|
end
|
400
407
|
|
401
|
-
def gather_files_and_paths_to_upload(collected_files)
|
408
|
+
def gather_files_and_paths_to_upload(collected_files, tmpdir)
|
402
409
|
|
403
410
|
log_header('Calculating digests')
|
404
411
|
|
@@ -434,7 +441,7 @@ module XamarinTestCloud
|
|
434
441
|
else
|
435
442
|
prefix = workspace_prefix
|
436
443
|
end
|
437
|
-
paths << file.sub(prefix, '')
|
444
|
+
paths << file.sub(prefix, '').sub("#{tmpdir}/", '')
|
438
445
|
end
|
439
446
|
|
440
447
|
if config
|
@@ -466,12 +473,18 @@ module XamarinTestCloud
|
|
466
473
|
app.end_with? '.apk'
|
467
474
|
end
|
468
475
|
|
476
|
+
def is_ios?
|
477
|
+
app.end_with? '.ipa'
|
478
|
+
end
|
479
|
+
|
469
480
|
def calabash_android_version
|
470
|
-
|
481
|
+
require 'calabash-android'
|
482
|
+
Calabash::Android::VERSION
|
471
483
|
end
|
472
484
|
|
473
|
-
def
|
474
|
-
|
485
|
+
def calabash_ios_version
|
486
|
+
require 'calabash-cucumber'
|
487
|
+
Calabash::Cucumber::VERSION
|
475
488
|
end
|
476
489
|
|
477
490
|
def test_server_path
|
@@ -480,7 +493,7 @@ module XamarinTestCloud
|
|
480
493
|
File.join('test_servers', "#{digest}_#{calabash_android_version}.apk")
|
481
494
|
end
|
482
495
|
|
483
|
-
def all_files
|
496
|
+
def all_files(tmpdir)
|
484
497
|
dir = workspace
|
485
498
|
if features_zip
|
486
499
|
dir = Dir.mktmpdir
|
@@ -502,7 +515,7 @@ module XamarinTestCloud
|
|
502
515
|
end
|
503
516
|
|
504
517
|
|
505
|
-
files += Dir.glob(File.join("
|
518
|
+
files += Dir.glob(File.join(tmpdir,"vendor", 'cache', '*'))
|
506
519
|
|
507
520
|
if workspace and workspace.strip != ''
|
508
521
|
files += Dir.glob("#{workspace}Gemfile")
|
@@ -570,7 +583,7 @@ module XamarinTestCloud
|
|
570
583
|
res = `otool "#{File.expand_path(dir)}/Payload/#{app_dir}/#{app}" -o 2> /dev/null | grep FrankServer`
|
571
584
|
if /FrankServer/.match(res)
|
572
585
|
puts "ipa: #{ipa} *contains* FrankServer"
|
573
|
-
|
586
|
+
raise ValidationError, 'Frank not supported just yet'
|
574
587
|
else
|
575
588
|
puts "ipa: #{ipa} *does not contain* calabash.framework"
|
576
589
|
result = false
|
@@ -635,14 +648,30 @@ module XamarinTestCloud
|
|
635
648
|
end
|
636
649
|
|
637
650
|
|
638
|
-
def
|
651
|
+
def shared_runtime?(app_path)
|
652
|
+
files(app_path).any? do |file|
|
653
|
+
file[:filename].end_with?("libmonodroid.so") && file[:size] < 120 * 1024
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
def files(app)
|
658
|
+
require 'zip/zipfilesystem'
|
659
|
+
Zip::ZipFile.open(app) do |zip_file|
|
660
|
+
zip_file.collect do |entry|
|
661
|
+
{filename: entry.to_s, size: entry.size }
|
662
|
+
end
|
663
|
+
end
|
664
|
+
end
|
665
|
+
|
666
|
+
|
667
|
+
|
668
|
+
def verify_dependencies(path)
|
639
669
|
if is_android?
|
640
670
|
abort_unless(File.exist?(test_server_path)) do
|
641
671
|
puts 'No test server found. Please run:'
|
642
672
|
puts " calabash-android build #{app}"
|
643
673
|
end
|
644
|
-
|
645
|
-
calabash_gem = Dir.glob('vendor/cache/calabash-android-*').first
|
674
|
+
calabash_gem = Dir.glob("#{path}/vendor/cache/calabash-android-*").first
|
646
675
|
abort_unless(calabash_gem) do
|
647
676
|
puts 'calabash-android was not packaged correct.'
|
648
677
|
puts 'Please tell testcloud@xamarin.com about this bug.'
|
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.11
|
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-08-
|
12
|
+
date: 2013-08-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -87,6 +87,20 @@ dependencies:
|
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.6.7
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: retriable
|
92
|
+
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.3.3.1
|
97
|
+
type: :runtime
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.3.3.1
|
90
104
|
description: Xamarin Test Cloud let's you automatically test your app on hundreds
|
91
105
|
of mobile devices
|
92
106
|
email:
|
@@ -98,8 +112,6 @@ extensions: []
|
|
98
112
|
extra_rdoc_files: []
|
99
113
|
files:
|
100
114
|
- bin/test-cloud
|
101
|
-
- lib/GemfileAndroid
|
102
|
-
- lib/GemfileIOS
|
103
115
|
- lib/xamarin-test-cloud/cli.rb
|
104
116
|
- lib/xamarin-test-cloud/version.rb
|
105
117
|
- README.md
|
@@ -129,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
141
|
version: '0'
|
130
142
|
requirements: []
|
131
143
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.0.
|
144
|
+
rubygems_version: 2.0.5
|
133
145
|
signing_key:
|
134
146
|
specification_version: 4
|
135
147
|
summary: Command-line interface to Xamarin Test Cloud
|
@@ -140,4 +152,3 @@ test_files:
|
|
140
152
|
- test/ipa/features/support/hooks.rb
|
141
153
|
- test/ipa/features/support/launch.rb
|
142
154
|
- test/test_parser.rb
|
143
|
-
has_rdoc:
|
data/lib/GemfileAndroid
DELETED
data/lib/GemfileIOS
DELETED