calabash-cucumber 0.18.1 → 0.18.2
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/dylibs/libCalabashDyn.dylib +0 -0
- data/dylibs/libCalabashDynSim.dylib +0 -0
- data/lib/calabash-cucumber/keyboard_helpers.rb +5 -0
- data/lib/calabash-cucumber/launcher.rb +28 -182
- data/lib/calabash-cucumber/version.rb +2 -2
- data/staticlib/calabash.framework.zip +0 -0
- data/staticlib/libFrankCalabash.a +0 -0
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fcd5b3694c5b5a674846f6afdc47d9b69bee38f
|
4
|
+
data.tar.gz: 8355da41535f75c286004c00917c5b70a6997b31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 263e85bb0b112f15639b3242d2855c4f0002001048bf1b16b5b2c813ece268bcb837080935926250729c9dad7d79c50130098ec4e18ad3ac50935368db87df34
|
7
|
+
data.tar.gz: f1ec4ed7d7e002a190959c88f85c2f1b4e5c3256101be838cbe2538b60559259f0053ef47c3f1d92f9362f4451660feb09f07de9827a038cd9d3f8ce8b2cb206
|
data/dylibs/libCalabashDyn.dylib
CHANGED
Binary file
|
Binary file
|
@@ -469,6 +469,11 @@ module Calabash
|
|
469
469
|
#
|
470
470
|
# @raise [RuntimeError] if the text cannot be typed.
|
471
471
|
def done
|
472
|
+
_deprecated("0.10.0",
|
473
|
+
%Q{Use tap_keyboard_action_key
|
474
|
+
|
475
|
+
The `done` method will be removed in 0.19.0
|
476
|
+
}, :warn)
|
472
477
|
tap_keyboard_action_key
|
473
478
|
end
|
474
479
|
|
@@ -36,9 +36,6 @@ class Calabash::Cucumber::Launcher
|
|
36
36
|
include Calabash::Cucumber::Logging
|
37
37
|
include Calabash::Cucumber::SimulatorAccessibility
|
38
38
|
|
39
|
-
# A hash of known privacy settings that calabash can control.
|
40
|
-
KNOWN_PRIVACY_SETTINGS = {:photos => 'kTCCServicePhotos', :calendar => 'kTCCServiceCalendar', :address_book => 'kTCCServiceAddressBook'}
|
41
|
-
|
42
39
|
# noinspection RubyClassVariableUsageInspection
|
43
40
|
|
44
41
|
# @!visibility private
|
@@ -317,78 +314,6 @@ Resetting physical devices is not supported.
|
|
317
314
|
simulator
|
318
315
|
end
|
319
316
|
|
320
|
-
# @!visibility private
|
321
|
-
def directories_for_sdk_prefix(sdk)
|
322
|
-
if sdk == :all
|
323
|
-
existing_simulator_support_sdk_dirs
|
324
|
-
else
|
325
|
-
Dir["#{simulator_app_support_dir}/#{sdk}*"]
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
# Call as `update_privacy_settings('com.my.app', {:photos => {:allow => true}})`
|
330
|
-
# @!visibility private
|
331
|
-
def update_privacy_settings(bundle_id, opts={})
|
332
|
-
if debug_logging?
|
333
|
-
puts "Update privacy settings #{bundle_id}, #{opts}"
|
334
|
-
end
|
335
|
-
unless File.exist?(`which sqlite3`.strip)
|
336
|
-
raise 'Error: Unable to find sqlite3. The binary sqlite3 must be installed and on path.'
|
337
|
-
end
|
338
|
-
opts.each do |setting_name, setting_options|
|
339
|
-
|
340
|
-
setting_name = KNOWN_PRIVACY_SETTINGS[setting_name] || setting_name
|
341
|
-
allow = setting_options[:allow] == false ? false : true
|
342
|
-
sdk = setting_options[:sdk] || self.simulator_launcher.sdk_detector.latest_sdk_version
|
343
|
-
|
344
|
-
dirs = directories_for_sdk_prefix(sdk)
|
345
|
-
if debug_logging?
|
346
|
-
puts "About to update privacy setting #{setting_name} for #{bundle_id}, allow: #{allow} in sdk #{sdk}, #{dirs}"
|
347
|
-
end
|
348
|
-
|
349
|
-
dirs.each do |dir|
|
350
|
-
if debug_logging?
|
351
|
-
puts "Setting access for #{bundle_id} for permission #{setting_name} to allow: #{allow}"
|
352
|
-
end
|
353
|
-
path_to_tcc_db = tcc_database_for_sdk_dir(dir)
|
354
|
-
unless File.exist?(path_to_tcc_db)
|
355
|
-
puts "Warning: No TCC.db in location #{path_to_tcc_db}"
|
356
|
-
next
|
357
|
-
end
|
358
|
-
allowed_as_i = allow ? 1 : 0
|
359
|
-
if privacy_setting(dir, bundle_id,setting_name).nil?
|
360
|
-
sql = %Q['INSERT INTO access (service, client, client_type, allowed, prompt_count) VALUES ("#{setting_name}","#{bundle_id}",0,#{allowed_as_i},1);']
|
361
|
-
else
|
362
|
-
sql = %Q['UPDATE access SET allowed=#{allowed_as_i} where client="#{bundle_id}" AND service="#{setting_name}";']
|
363
|
-
end
|
364
|
-
|
365
|
-
if debug_logging?
|
366
|
-
puts "Executing sql #{sql} on #{path_to_tcc_db}"
|
367
|
-
end
|
368
|
-
|
369
|
-
unless system(%Q[sqlite3 "#{path_to_tcc_db}" #{sql}]) && privacy_setting(dir,bundle_id,setting_name) == allowed_as_i
|
370
|
-
puts "Warning: Error executing sql: #{sql} against #{path_to_tcc_db} (Setting is #{privacy_setting(dir,bundle_id,setting_name)}). Continuing..."
|
371
|
-
next
|
372
|
-
end
|
373
|
-
end
|
374
|
-
end
|
375
|
-
end
|
376
|
-
|
377
|
-
# @!visibility private
|
378
|
-
def tcc_database_for_sdk_dir(dir)
|
379
|
-
File.join(dir,'Library', 'TCC', 'TCC.db')
|
380
|
-
end
|
381
|
-
|
382
|
-
# @!visibility private
|
383
|
-
def privacy_setting(sdk_dir, bundle_id, setting_name)
|
384
|
-
setting_name = KNOWN_PRIVACY_SETTINGS[setting_name] || setting_name
|
385
|
-
path_to_tcc_db = tcc_database_for_sdk_dir(sdk_dir)
|
386
|
-
sql = %Q['SELECT allowed FROM access WHERE client="#{bundle_id}" and service="#{setting_name}";']
|
387
|
-
output = `sqlite3 "#{path_to_tcc_db}" #{sql}`.strip
|
388
|
-
|
389
|
-
(output == '0' || output == '1') ? output.to_i : nil
|
390
|
-
end
|
391
|
-
|
392
317
|
# @!visibility private
|
393
318
|
def default_launch_args
|
394
319
|
# APP_BUNDLE_PATH
|
@@ -405,7 +330,6 @@ Resetting physical devices is not supported.
|
|
405
330
|
:launch_method => default_launch_method,
|
406
331
|
:reset => reset_between_scenarios?,
|
407
332
|
:bundle_id => ENV['BUNDLE_ID'],
|
408
|
-
:device => device_env,
|
409
333
|
:no_stop => calabash_no_stop?,
|
410
334
|
:no_launch => calabash_no_launch?,
|
411
335
|
:sdk_version => sdk_version,
|
@@ -522,40 +446,38 @@ Resetting physical devices is not supported.
|
|
522
446
|
raise "Unable to find app bundle at #{args[:app]}. It should be an iOS Simulator build (typically a *.app directory)."
|
523
447
|
end
|
524
448
|
end
|
525
|
-
args[:app] = args[:app] || args[:bundle_id] || app_path || detect_app_bundle_from_args(args)
|
526
449
|
|
450
|
+
# User passed {:app => "path/to/my.app"} _and_ it exists.
|
451
|
+
# User defined BUNDLE_ID or passed {:bundle_id => com.example.myapp}
|
452
|
+
# User defined APP or APP_BUNDLE_PATH env vars _or_ APP_BUNDLE_PATH constant.
|
453
|
+
args[:app] = args[:app] || args[:bundle_id] || app_path
|
527
454
|
|
528
455
|
if args[:app]
|
529
456
|
if File.directory?(args[:app])
|
530
457
|
args[:app] = File.expand_path(args[:app])
|
531
458
|
else
|
532
|
-
# args[:app] is not a directory so must be a bundle id
|
533
|
-
if simulator_target?(args)
|
534
|
-
args[:app] = app_path
|
459
|
+
# args[:app] is not a directory so must be a bundle id.
|
460
|
+
if simulator_target?(args)
|
461
|
+
args[:app] = app_path
|
535
462
|
end
|
536
463
|
end
|
537
464
|
end
|
538
465
|
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
args[:device] ||= detect_device_from_args(args)
|
466
|
+
# At this point :app is either nil because we are targeting a simulator
|
467
|
+
# or it is a CFBundleIdentifier.
|
468
|
+
if args[:app]
|
469
|
+
# nothing to do because :bundle_id and :app are the same.
|
470
|
+
else
|
471
|
+
# User gave us no information about where the simulator app is located
|
472
|
+
# so we have to auto detect it. This RunLoop method raises an error
|
473
|
+
# with a meaningful message based on the environment. The message
|
474
|
+
# includes suggestions about what to do next.
|
475
|
+
run_loop_app = RunLoop::DetectAUT::Detect.new.app_for_simulator
|
551
476
|
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
# Not supported on device
|
557
|
-
puts 'Warning: :privacy_settings not supported on device'
|
558
|
-
end
|
477
|
+
# This is not great - RunLoop is going to take this path and create a new
|
478
|
+
# RunLoop::App. This is the best we can do for now.
|
479
|
+
args[:app] = run_loop_app.path
|
480
|
+
args[:bundle_id] = run_loop_app.bundle_identifier
|
559
481
|
end
|
560
482
|
|
561
483
|
use_dylib = args[:inject_dylib]
|
@@ -655,57 +577,6 @@ Resetting physical devices is not supported.
|
|
655
577
|
end
|
656
578
|
end
|
657
579
|
|
658
|
-
# @!visibility private
|
659
|
-
def detect_device_from_args(args)
|
660
|
-
if args[:app] && File.directory?(args[:app])
|
661
|
-
# Derive bundle id from bundle_dir
|
662
|
-
plist_as_hash = info_plist_from_bundle_path(args[:app])
|
663
|
-
if plist_as_hash
|
664
|
-
device_family = plist_as_hash['UIDeviceFamily']
|
665
|
-
if device_family
|
666
|
-
first_device = device_family.first
|
667
|
-
if first_device == 2
|
668
|
-
return 'ipad'
|
669
|
-
else
|
670
|
-
return 'iphone'
|
671
|
-
end
|
672
|
-
end
|
673
|
-
end
|
674
|
-
else
|
675
|
-
args[:app]
|
676
|
-
end
|
677
|
-
end
|
678
|
-
|
679
|
-
# @!visibility private
|
680
|
-
def detect_app_bundle_from_args(args)
|
681
|
-
if simulator_target?(args)
|
682
|
-
device_xamarin_build_dir = 'iPhoneSimulator'
|
683
|
-
else
|
684
|
-
device_xamarin_build_dir = 'iPhone'
|
685
|
-
end
|
686
|
-
# is this really only applicable to the Xamarin IDE?
|
687
|
-
self.simulator_launcher.detect_app_bundle(nil, device_xamarin_build_dir)
|
688
|
-
end
|
689
|
-
|
690
|
-
# @!visibility private
|
691
|
-
def detect_bundle_id_from_app_bundle(args)
|
692
|
-
if args[:app] && File.directory?(args[:app])
|
693
|
-
# Derive bundle id from bundle_dir
|
694
|
-
plist_as_hash = info_plist_from_bundle_path(args[:app])
|
695
|
-
if plist_as_hash
|
696
|
-
plist_as_hash['CFBundleIdentifier']
|
697
|
-
end
|
698
|
-
else
|
699
|
-
args[:app]
|
700
|
-
end
|
701
|
-
end
|
702
|
-
|
703
|
-
# @!visibility private
|
704
|
-
def info_plist_from_bundle_path(bundle_path)
|
705
|
-
plist_path = File.join(bundle_path, 'Info.plist')
|
706
|
-
info_plist_as_hash(plist_path) if File.exist?(plist_path)
|
707
|
-
end
|
708
|
-
|
709
580
|
# @!visibility private
|
710
581
|
def new_run_loop(args)
|
711
582
|
|
@@ -718,14 +589,14 @@ Resetting physical devices is not supported.
|
|
718
589
|
return RunLoop.run(args)
|
719
590
|
rescue RunLoop::TimeoutError => e
|
720
591
|
last_err = e
|
721
|
-
if full_console_logging?
|
722
|
-
puts 'retrying run loop...'
|
723
|
-
end
|
724
|
-
self.simulator_launcher.stop
|
725
592
|
end
|
726
593
|
end
|
727
|
-
|
728
|
-
|
594
|
+
|
595
|
+
if simulator_target?(args)
|
596
|
+
puts "Unable to launch app on Simulator."
|
597
|
+
else
|
598
|
+
puts "Unable to launch app on physical device"
|
599
|
+
end
|
729
600
|
raise StartError.new(last_err)
|
730
601
|
end
|
731
602
|
|
@@ -807,26 +678,6 @@ Resetting physical devices is not supported.
|
|
807
678
|
end
|
808
679
|
end
|
809
680
|
|
810
|
-
# @!visibility private
|
811
|
-
def info_plist_as_hash(plist_path)
|
812
|
-
unless File.exist?(plist_path)
|
813
|
-
raise "Unable to find Info.plist: #{plist_path}"
|
814
|
-
end
|
815
|
-
parsedplist = CFPropertyList::List.new(:file => plist_path)
|
816
|
-
CFPropertyList.native_types(parsedplist.value)
|
817
|
-
end
|
818
|
-
|
819
|
-
# @!visibility private
|
820
|
-
def detect_bundle_id
|
821
|
-
begin
|
822
|
-
bundle_path = self.simulator_launcher.app_bundle_or_raise(app_path)
|
823
|
-
plist_path = File.join(bundle_path, 'Info.plist')
|
824
|
-
info_plist_as_hash(plist_path)['CFBundleIdentifier']
|
825
|
-
rescue => e
|
826
|
-
raise "Unable to automatically find bundle id. Please set BUNDLE_ID environment variable. #{e}"
|
827
|
-
end
|
828
|
-
end
|
829
|
-
|
830
681
|
# @!visibility private
|
831
682
|
def calabash_no_stop?
|
832
683
|
calabash_no_launch? or ENV['NO_STOP']=="1"
|
@@ -907,14 +758,9 @@ Resetting physical devices is not supported.
|
|
907
758
|
ENV['RESET_BETWEEN_SCENARIOS']=="1"
|
908
759
|
end
|
909
760
|
|
910
|
-
# @!visibility private
|
911
|
-
def device_env
|
912
|
-
ENV['DEVICE']
|
913
|
-
end
|
914
|
-
|
915
761
|
# @!visibility private
|
916
762
|
def app_path
|
917
|
-
|
763
|
+
RunLoop::Environment.path_to_app_bundle || (defined?(APP_BUNDLE_PATH) && APP_BUNDLE_PATH)
|
918
764
|
end
|
919
765
|
|
920
766
|
# @!visibility private
|
@@ -3,10 +3,10 @@ module Calabash
|
|
3
3
|
|
4
4
|
# @!visibility public
|
5
5
|
# The Calabash iOS gem version.
|
6
|
-
VERSION = "0.18.
|
6
|
+
VERSION = "0.18.2"
|
7
7
|
|
8
8
|
# @!visibility public
|
9
9
|
# The minimum required version of the Calabash embedded server.
|
10
|
-
MIN_SERVER_VERSION = "0.18.
|
10
|
+
MIN_SERVER_VERSION = "0.18.2"
|
11
11
|
end
|
12
12
|
end
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calabash-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.18.
|
4
|
+
version: 0.18.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Krukow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -132,7 +132,7 @@ dependencies:
|
|
132
132
|
requirements:
|
133
133
|
- - ">="
|
134
134
|
- !ruby/object:Gem::Version
|
135
|
-
version: 2.0.
|
135
|
+
version: 2.0.9
|
136
136
|
- - "<"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '3.0'
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.0.
|
145
|
+
version: 2.0.9
|
146
146
|
- - "<"
|
147
147
|
- !ruby/object:Gem::Version
|
148
148
|
version: '3.0'
|
@@ -248,16 +248,16 @@ dependencies:
|
|
248
248
|
name: rake
|
249
249
|
requirement: !ruby/object:Gem::Requirement
|
250
250
|
requirements:
|
251
|
-
- - "
|
251
|
+
- - "~>"
|
252
252
|
- !ruby/object:Gem::Version
|
253
|
-
version: '0'
|
253
|
+
version: '10.0'
|
254
254
|
type: :development
|
255
255
|
prerelease: false
|
256
256
|
version_requirements: !ruby/object:Gem::Requirement
|
257
257
|
requirements:
|
258
|
-
- - "
|
258
|
+
- - "~>"
|
259
259
|
- !ruby/object:Gem::Version
|
260
|
-
version: '0'
|
260
|
+
version: '10.0'
|
261
261
|
- !ruby/object:Gem::Dependency
|
262
262
|
name: rspec
|
263
263
|
requirement: !ruby/object:Gem::Requirement
|
@@ -557,7 +557,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
557
557
|
version: '0'
|
558
558
|
requirements: []
|
559
559
|
rubyforge_project:
|
560
|
-
rubygems_version: 2.5.
|
560
|
+
rubygems_version: 2.5.2
|
561
561
|
signing_key:
|
562
562
|
specification_version: 4
|
563
563
|
summary: Client for calabash-ios-server for automated functional testing on iOS
|