jenkinsutil 0.8.42 → 0.8.43

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: b5aaf5573893b7b15d3fc33385a90e309625b819
4
- data.tar.gz: b41f055f3149e62f52bf323ce6e0fa7c52282d12
3
+ metadata.gz: 1d639001cf5305c5de2bb785644817f08a4d1649
4
+ data.tar.gz: 40045c782ac9d76ec2211401cfa2d37a7230a963
5
5
  SHA512:
6
- metadata.gz: 4a30d5450a297d5a967a25d90af1154298ca26ceee5f1cf9ccff2985024d2f37777b6287dce4ad6307d55a05f21c3e87da00fd24abd26e9e7a2a261819074a26
7
- data.tar.gz: d118f4957d7d0dbcf7b07570e72dcb697aafbaca051e1364d92b41a4387f843a40fa573af4ce3c824247fa0151a41b98ae2403064f5038a7a11fdc529403991c
6
+ metadata.gz: 02e3eb78a0af9dba36f935065abf4f8da9d3b49dcbb67094c6c11410fa64fabec372713a483e53c417ff7bec49737492b4b591ef9bedf9cbce9c55efb73ccab8
7
+ data.tar.gz: 7fb17e11d29a776df774ec2505c1d6f0fcc1f4687b0d7c607f5ba3c3ed89341425b232b2cee93cd3821bc3c958cf9f9e0fc980a6b5f06937f3b66a49ada61604
data/.rubocop.yml CHANGED
@@ -1 +1,12 @@
1
1
  inherit_from: .rubocop_todo.yml
2
+
3
+ Metrics/MethodLength:
4
+ CountComments: false # count full line comments?
5
+ Max: 20
6
+
7
+ Metrics/AbcSize:
8
+ Max: 25
9
+
10
+ Metrics/CyclomaticComplexity:
11
+ Max: 10
12
+
data/Rakefile CHANGED
@@ -10,6 +10,6 @@ end
10
10
 
11
11
  Rake::TestTask.new('test:default') do |t|
12
12
  t.libs = ['lib']
13
- t.test_files = FileList['test/code_coverage.rb', 'test/*test.rb'].exclude('test/*keychain*rb', 'test/*xcode*rb')
13
+ t.test_files = FileList['test/code_coverage.rb', 'test/*test.rb'].exclude('test/*keychain*rb', 'test/*xcode*rb', 'test/*simulator*rb')
14
14
  t.verbose = true
15
15
  end
data/lib/JenkinsUtil.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'JenkinsUtil/version'
2
2
  require 'JenkinsUtil/command_line_script'
3
3
  require 'JenkinsUtil/keychain_util'
4
+ require 'JenkinsUtil/simulator_util'
4
5
  require 'JenkinsUtil/xcode_util'
5
6
  require 'JenkinsUtil/argument_handler'
6
7
  require 'JenkinsUtil/logger_util'
@@ -23,4 +24,8 @@ module JenkinsUtil
23
24
  unless args.dropbox_sources.nil? || args.dropbox_sources.empty? || args.dropbox_destination.nil?
24
25
  DropboxUtil.upload(args.dropbox_sources, args.dropbox_destination, args.dropbox_flatten, args.dropbox_root)
25
26
  end
27
+
28
+ if args.kill_simulators
29
+ SimulatorUtil.reset_all_simulators
30
+ end
26
31
  end
@@ -9,8 +9,11 @@ class ArgumentHandler
9
9
  :dropbox_destination,
10
10
  :dropbox_flatten,
11
11
  :dropbox_root,
12
+ :kill_simulators,
12
13
  :verbose
13
14
 
15
+ # rubocop:disable Metrics/AbcSize
16
+ # rubocop:disable Metrics/MethodLength
14
17
  def initialize
15
18
  @keychain = nil
16
19
  @keychain_password = nil
@@ -20,6 +23,7 @@ class ArgumentHandler
20
23
  @dropbox_destination = nil
21
24
  @dropbox_flatten = true
22
25
  @dropbox_root = Dir.pwd
26
+ @kill_simulators = false
23
27
  @verbose = false
24
28
 
25
29
  ARGV.push('-h') if ARGV.empty?
@@ -67,6 +71,11 @@ class ArgumentHandler
67
71
  @dropbox_root = root
68
72
  end
69
73
 
74
+ # simulator_util
75
+ opts.on('-K', '--kill-simulators', 'Shutdown and reset all iOS simulators') do
76
+ @kill_simulators = true
77
+ end
78
+
70
79
  # logger_util
71
80
  opts.on('-v', '--verbose', 'Output more information') do
72
81
  @verbose = true
@@ -58,16 +58,16 @@ module DropboxUtil
58
58
  def self.upload_and_share(file)
59
59
  @uploaded_files ||= []
60
60
 
61
- retries = 0
61
+ retries = 0
62
62
 
63
63
  begin
64
64
  dropbox_file = @dropbox_client.put_file(dropbox_file_destination(file), open(file), false)
65
65
  LoggerUtil.log.debug("Successfully uploaded #{file}")
66
66
  rescue DropboxError => e
67
67
  retries += 1
68
- if retries < 5
69
- LoggerUtil.log.debug("Attempt #{retries} failed. Retrying #{file}")
70
- retry
68
+ if retries < 5
69
+ LoggerUtil.log.debug("Attempt #{retries} failed. Retrying #{file}")
70
+ retry
71
71
  end
72
72
 
73
73
  LoggerUtil.log.debug("Exceeded maximum retries. Failed to upload #{file}")
@@ -0,0 +1,98 @@
1
+ require 'JenkinsUtil/process_util'
2
+ require 'JenkinsUtil/command_line_script'
3
+ require 'JenkinsUtil/logger_util'
4
+ require 'json'
5
+
6
+ class SimulatorError < Exception
7
+ attr_reader :code, :message, :udid
8
+
9
+ def initialize(code, message, udid)
10
+ @code = code
11
+ @message = message
12
+ @udid = udid
13
+ end
14
+
15
+ def to_s
16
+ format('code: %d, udid %s, message: %s', @code, @udid, @message)
17
+ end
18
+ end
19
+
20
+ class SimulatorUtil
21
+ DEVICE_STATE_INVALID = 159
22
+
23
+ def initialize
24
+ end
25
+
26
+ def self.devices_by_os
27
+ process = CommandLineScript.new('xcrun simctl list --json devices')
28
+
29
+ json_string = ''
30
+ process.stdout.each do |fragment|
31
+ json_string += fragment
32
+ end
33
+ json = JSON.parse(json_string)
34
+
35
+ json['devices']
36
+ end
37
+
38
+ def self.devices
39
+ flattened_devices = []
40
+
41
+ devices_by_os.each do |os, devices|
42
+ devices.each do |device|
43
+ device['os'] = os
44
+ flattened_devices << device
45
+ end
46
+ end
47
+
48
+ flattened_devices
49
+ end
50
+
51
+ def self.devices_by_udid
52
+ devices_by_udid = {}
53
+
54
+ devices.each do |device|
55
+ devices_by_udid[device['udid']] = device
56
+ end
57
+
58
+ devices_by_udid
59
+ end
60
+
61
+ def self.boot_device(udid)
62
+ process = CommandLineScript.new("xcrun simctl boot #{udid}")
63
+
64
+ if process.exit_status != 0 && process.exit_status != DEVICE_STATE_INVALID
65
+ raise SimulatorError.new(process.exit_status, 'Could not boot up device', udid)
66
+ end
67
+ end
68
+
69
+ def self.shutdown_device(udid)
70
+ process = CommandLineScript.new("xcrun simctl shutdown #{udid}")
71
+
72
+ if process.exit_status != 0 && process.exit_status != DEVICE_STATE_INVALID
73
+ raise SimulatorError.new(process.exit_status, 'Could not shutdown device', udid)
74
+ end
75
+ end
76
+
77
+ def self.reset_device(udid)
78
+ process = CommandLineScript.new("xcrun simctl erase #{udid}")
79
+
80
+ if process.exit_status != 0 && process.exit_status != DEVICE_STATE_INVALID
81
+ raise SimulatorError.new(process.exit_status, 'Could not reset device', udid)
82
+ end
83
+ end
84
+
85
+ def self.reset_all_simulators
86
+ devices.each do |device|
87
+ os = device['os']
88
+ name = device['name']
89
+ udid = device['udid']
90
+
91
+ LoggerUtil.log.debug("Shutting down simulator #{name} (#{os}) (#{udid})")
92
+ shutdown_device(udid)
93
+
94
+ LoggerUtil.log.debug("Resetting simulator #{name} (#{os}) (#{udid})")
95
+ reset_device(udid)
96
+ end
97
+ end
98
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jenkinsutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.42
4
+ version: 0.8.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett McGinnis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-09 00:00:00.000000000 Z
11
+ date: 2016-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open4
@@ -189,6 +189,7 @@ files:
189
189
  - lib/JenkinsUtil/keychain_util.rb
190
190
  - lib/JenkinsUtil/logger_util.rb
191
191
  - lib/JenkinsUtil/process_util.rb
192
+ - lib/JenkinsUtil/simulator_util.rb
192
193
  - lib/JenkinsUtil/version.rb
193
194
  - lib/JenkinsUtil/xcode_util.rb
194
195
  homepage: http://www.l4digital.com/