run_loop 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 11be3a1fe89681a24289e331b94823e23cf6ade9
4
- data.tar.gz: 5e51d2d106452481ba15e63315ac26fb5798a0c6
3
+ metadata.gz: fd788e0a671931f1ce5b3bac708f21670e29b5b2
4
+ data.tar.gz: 5361aaeb26d981a5857aa4c67f38348c1430d8e5
5
5
  SHA512:
6
- metadata.gz: 396eff04828c24cadfca702fc041a238b337c8310d65e1ebba5dfd8ba1a7a77dc7a3cee05a1e59966db913f7dbb3113ff8023a6c2bac609ede575c98b48c2f7e
7
- data.tar.gz: 6c87504310686551a5bec02248b92bc24681b4bf62ae57286ba04f64e0dba3edbae7e1b804efdbeb9325e67e3be594cc2c8943fbcff8bb8405f693b973d5cfeb
6
+ metadata.gz: ecc950e0a6a3a014b9cad45aaa73dcb3d731b2fe68e116b9f97c35cc910e907d80c4d8eee6c1cb1ecf3763e6d929d80c2176ccdf4d05d55a7b85a61192cc4a8c
7
+ data.tar.gz: 909167069d0abc322404b191f97569d8f22cd603a413aed63b22a608228b02bbf3cf5264f0c4c233f0591220ad8e1c1d3f82e27b0a58785cf9014768a9943bce
data/lib/run_loop/core.rb CHANGED
@@ -92,7 +92,7 @@ module RunLoop
92
92
 
93
93
  if self.simulator_target?(options, sim_control)
94
94
  # @todo only enable accessibility on the targeted simulator
95
- sim_control.enable_accessibility_on_sims({:verbose => true})
95
+ sim_control.enable_accessibility_on_sims({:verbose => false})
96
96
  end
97
97
 
98
98
  device_target = options[:udid] || options[:device_target] || detect_connected_device || 'simulator'
@@ -358,7 +358,9 @@ module RunLoop
358
358
  # @param [RunLoop::XCTools] xcode_tools Used to detect the current xcode
359
359
  # version.
360
360
  def self.default_simulator(xcode_tools=RunLoop::XCTools.new)
361
- if xcode_tools.xcode_version_gte_6?
361
+ if xcode_tools.xcode_version_gte_61?
362
+ 'iPhone 5 (8.1 Simulator)'
363
+ elsif xcode_tools.xcode_version_gte_6?
362
364
  'iPhone 5 (8.0 Simulator)'
363
365
  else
364
366
  'iPhone Retina (4-inch) - Simulator - iOS 7.1'
@@ -574,21 +576,11 @@ module RunLoop
574
576
 
575
577
  def self.default_tracetemplate(xctools=RunLoop::XCTools.new)
576
578
  templates = xctools.instruments :templates
577
- if xctools.xcode_version_gte_61?
578
- templates.delete_if do |path|
579
- not path =~ /\/Automation.tracetemplate/
580
- end.delete_if do |path|
581
- not path =~ /Xcode/
582
- end.first.tr("\"", '').strip
583
- elsif xctools.xcode_version_gte_6?
584
- templates.delete_if do |name|
585
- not name == 'Automation'
586
- end.first
579
+ if xctools.xcode_version_gte_6?
580
+ templates.select { |name| name == 'Automation' }.first
587
581
  else
588
- templates.delete_if do |path|
589
- not path =~ /\/Automation.tracetemplate/
590
- end.delete_if do |path|
591
- not path =~ /Xcode/
582
+ templates.select do |path|
583
+ path =~ /\/Automation.tracetemplate/ and path =~ /Xcode/
592
584
  end.first.tr("\"", '').strip
593
585
  end
594
586
  end
@@ -742,4 +734,4 @@ module RunLoop
742
734
  script
743
735
  end
744
736
 
745
- end
737
+ end
@@ -290,6 +290,9 @@ module RunLoop
290
290
  details = sim_details :udid
291
291
  results = existing.map do |dir|
292
292
  enable_accessibility_in_sim_data_dir(dir, details, opts)
293
+ # This is done here so we don't have to make a public method
294
+ # to enable the keyboards for all devices.
295
+ enable_keyboard_in_sim_data_dir(dir, details, opts)
293
296
  end
294
297
  else
295
298
  possible = XCODE_5_SDKS.map do |sdk|
@@ -665,15 +668,15 @@ module RunLoop
665
668
  #
666
669
  # @param [String] sim_data_dir The directory where the
667
670
  # Library/Preferences/com.apple.Accessibility.plist can be found.
668
- # @param [Hash] sim_details_key_with_udid A hash table of simulator details
671
+ # @param [Hash] sim_details_keyed_with_udid A hash table of simulator details
669
672
  # that can be obtained by calling `sim_details(:udid)`.
670
673
  #
671
674
  # @param [Hash] opts controls the behavior of the method
672
675
  # @option opts [Boolean] :verbose controls logging output
673
- # @return [Boolean] if the plist exists and the plist was successfully
674
- # updated.
676
+ # @return [Boolean] If the plist exists and the plist was successfully
677
+ # updated or if the directory was skipped (see code comments).
675
678
  # @raise [RuntimeError] If called when Xcode 6 is _not_ the active Xcode version.
676
- def enable_accessibility_in_sim_data_dir(sim_data_dir, sim_details_key_with_udid, opts={})
679
+ def enable_accessibility_in_sim_data_dir(sim_data_dir, sim_details_keyed_with_udid, opts={})
677
680
  unless xcode_version_gte_6?
678
681
  raise RuntimeError, 'it is illegal to call this method when the Xcode < 6 is the current Xcode version'
679
682
  end
@@ -685,9 +688,20 @@ module RunLoop
685
688
 
686
689
  verbose = merged_opts[:verbose]
687
690
  target_udid = sim_data_dir[XCODE_6_SIM_UDID_REGEX, 0]
688
- launch_name = sim_details_key_with_udid[target_udid][:launch_name]
689
- sdk_version = sim_details_key_with_udid[target_udid][:sdk_version]
690
691
 
692
+ # Directory contains simulators not reported by instruments -s devices
693
+ simulator_details = sim_details_keyed_with_udid[target_udid]
694
+ if simulator_details.nil?
695
+ if verbose
696
+ xcode_version = xctools.xcode_version
697
+ puts ["INFO: Skipping '#{target_udid}' directory because",
698
+ "there is no corresponding simulator for active Xcode (version '#{xcode_version}')"].join("\n")
699
+ end
700
+ return true
701
+ end
702
+
703
+ launch_name = simulator_details.fetch(:launch_name, nil)
704
+ sdk_version = simulator_details.fetch(:sdk_version, nil)
691
705
  msgs = ["cannot enable accessibility for '#{target_udid}' - '#{launch_name}'"]
692
706
  plist_path = File.expand_path("#{sim_data_dir}/Library/Preferences/com.apple.Accessibility.plist")
693
707
 
@@ -717,12 +731,88 @@ module RunLoop
717
731
  msgs << "could not set #{hash_key} => '#{settings[:key]}' to #{value}"
718
732
  puts "WARN: #{msgs.join("\n")}"
719
733
  end
720
- end
734
+ end
721
735
  success
722
736
  end
723
737
  res.all?
724
738
  end
725
739
 
740
+ # @!visibility private
741
+ # Enables the keyboard to be shown by default on the new Xcode 6 simulators.
742
+ #
743
+ # The new CoreSimulator environment has a new Hardware > Keyboard > Connect
744
+ # Hardware Keyboard option which is on by default and prevents the native
745
+ # keyboard from being presented.
746
+ #
747
+ # @note This will quit the simulator.
748
+ #
749
+ # @note This is for Xcode 6 only. Will raise an error if called on Xcode 5.
750
+ #
751
+ # If the Library/Preferences/com.apple.Preferences.plist file doesn't exist
752
+ # this method will create one with the content to activate the keyboard.
753
+ #
754
+ # @param [String] sim_data_dir The directory where the
755
+ # Library/Preferences/com.apple.Preferences.plist can be found.
756
+ # @param [Hash] sim_details_keyed_with_udid A hash table of simulator details
757
+ # that can be obtained by calling `sim_details(:udid)`.
758
+ #
759
+ # @param [Hash] opts controls the behavior of the method
760
+ # @option opts [Boolean] :verbose controls logging output
761
+ # @return [Boolean] If the plist exists and the plist was successfully
762
+ # updated or if the directory was skipped (see code comments).
763
+ # @raise [RuntimeError] If called when Xcode 6 is _not_ the active Xcode version.
764
+ def enable_keyboard_in_sim_data_dir(sim_data_dir, sim_details_keyed_with_udid, opts={})
765
+ unless xcode_version_gte_6?
766
+ raise RuntimeError, 'it is illegal to call this method when the Xcode < 6 is the current Xcode version'
767
+ end
768
+
769
+ hash = {:key => 'AutomaticMinimizationEnabled',
770
+ :value => 0,
771
+ :type => 'integer'}
772
+
773
+ default_opts = {:verbose => false}
774
+ merged_opts = default_opts.merge(opts)
775
+
776
+ quit_sim
777
+
778
+ verbose = merged_opts[:verbose]
779
+ target_udid = sim_data_dir[XCODE_6_SIM_UDID_REGEX, 0]
780
+
781
+ # Directory contains simulators not reported by instruments -s devices
782
+ simulator_details = sim_details_keyed_with_udid[target_udid]
783
+ if simulator_details.nil?
784
+ if verbose
785
+ xcode_version = xctools.xcode_version
786
+ puts ["INFO: Skipping '#{target_udid}' directory because",
787
+ "there is no corresponding simulator for active Xcode (version '#{xcode_version}')"].join("\n")
788
+ end
789
+ return true
790
+ end
791
+
792
+ launch_name = simulator_details.fetch(:launch_name, nil)
793
+
794
+ msgs = ["cannot enable keyboard for '#{target_udid}' - '#{launch_name}'"]
795
+ plist_path = File.expand_path("#{sim_data_dir}/Library/Preferences/com.apple.Preferences.plist")
796
+
797
+ unless File.exist? plist_path
798
+ FileUtils.mkdir_p("#{sim_data_dir}/Library/Preferences")
799
+ plist = CFPropertyList::List.new
800
+ data = {}
801
+ plist.value = CFPropertyList.guess(data)
802
+ plist.save(plist_path, CFPropertyList::List::FORMAT_BINARY)
803
+ end
804
+
805
+ success = pbuddy.plist_set(hash[:key], hash[:type], hash[:value], plist_path)
806
+ unless success
807
+ if verbose
808
+ msgs << "could not set #{hash[:key]} => '#{hash[:key]}' to #{hash[:value]}"
809
+ puts "WARN: #{msgs.join("\n")}"
810
+ end
811
+ end
812
+
813
+ success
814
+ end
815
+
726
816
  # @!visibility private
727
817
  # Returns a hash table that contains detailed information about the
728
818
  # available simulators. Use the `primary_key` to control the primary hash
@@ -1,5 +1,5 @@
1
1
  module RunLoop
2
- VERSION = '1.0.8'
2
+ VERSION = '1.0.9'
3
3
 
4
4
  # A model of a software release version that can be used to compare two versions.
5
5
  #
@@ -157,16 +157,7 @@ module RunLoop
157
157
  when :templates
158
158
  @instruments_templates ||= lambda {
159
159
  cmd = "#{instruments} -s templates"
160
- if self.xcode_version >= self.v61
161
- Open3.popen3(cmd) do |_, stdout, stderr, _|
162
- stderr_filter.call(stderr)
163
- stdout.read.chomp.split("\n").map do |line|
164
- line.strip.tr('"', '')
165
- end.delete_if do |path|
166
- not path =~ /tracetemplate/
167
- end
168
- end
169
- elsif self.xcode_version >= self.v60
160
+ if self.xcode_version >= self.v60
170
161
  Open3.popen3(cmd) do |_, stdout, stderr, _|
171
162
  stderr_filter.call(stderr)
172
163
  stdout.read.chomp.split("\n").map { |elm| elm.strip.tr('"', '') }
@@ -274,7 +274,7 @@ var target = null,
274
274
  host = null;
275
275
 
276
276
 
277
-
277
+ Log.output('Starting loop');
278
278
  while (true) {
279
279
  target = UIATarget.localTarget();
280
280
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_loop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Krukow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-30 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -242,8 +242,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
242
  version: '0'
243
243
  requirements: []
244
244
  rubyforge_project:
245
- rubygems_version: 2.4.1
245
+ rubygems_version: 2.4.2
246
246
  signing_key:
247
247
  specification_version: 4
248
248
  summary: Tools related to running Calabash iOS tests
249
249
  test_files: []
250
+ has_rdoc: